Ce livre s'adresse aux développeurs souhaitant maîtriser le développement d'applications .NET avec le langage C# dans sa version 8.
Après un tour d'horizon de la plateforme .NET et une description des outils fournis par l'environnement Visual Studio 2019, le lecteur découvrira progressivement les éléments clés du langage C# et la programmation orientée objet, jusqu'à pouvoir appliquer ce concept au développement...
Ce livre s'adresse aux développeurs souhaitant maîtriser le développement d'applications .NET avec le langage C# dans sa version 8.
Après un tour d'horizon de la plateforme .NET et une description des outils fournis par l'environnement Visual Studio 2019, le lecteur découvrira progressivement les éléments clés du langage C# et la programmation orientée objet, jusqu'à pouvoir appliquer ce concept au développement d'applications Windows avec WPF. Une initiation aux techniques de débogage avec Visual Studio lui permettra de parfaire sa maîtrise de l'outil.
Le développement d'applications client-serveur est ensuite traité par le thème de l'accès aux données avec ADO.NET. Une description complète de LINQ au travers d'exemples concrets montre comment ses fonctionnalités simplifient la manipulation des données. Son utilisation est notamment présentée dans le cadre de l'accès au contenu d'une base de données SQL Server avec Entity Framework Core. Un chapitre est ensuite consacré à la manipulation de données au format XML, permettant l'échange de données entre applications d'une manière simple et standardisée. La fin du cycle de développement est traitée à travers le déploiement d'une application avec les technologies Windows Installer, ClickOnce et MSIX.
Afin d'aider le lecteur dans son apprentissage, un aide-mémoire est fourni ; il résume l'utilité des mots-clés C# traités dans le livre.
Les exemples présentés dans ces pages sont disponibles en téléchargement sur le site www.editions-eni.fr.
1. Les principes de la programmation orientée objet
2. Les classes et les structures
2.1 Classes
2.1.1 Déclaration
2.1.2 Constructeur et destructeur
2.1.3 Classes partielles
2.2 Structures
2.3 Création de méthodes
2.3.1 Création
2.3.2 Méthodes partielles
2.3.3 Méthodes d'extension
2.3.4 Méthodes opérateurs
2.4 Création de propriétés
2.4.1 Lecture et écriture
2.4.2 Lecture seule
2.4.3 Écriture seule
2.4.4 Propriétés automatiques
2.4.5 Initialisation de propriétés automatiques
2.4.6 Propriétés automatiques en lecture seule
2.4.7 Propriétés indexées
2.5 Membres statiques
2.6 Utilisation des classes et structures
2.6.1 Instanciation
2.6.2 Initialisation
2.6.3 Types anonymes
3. Les espaces de noms
3.1 Nomenclature
3.2 using
4. L'héritage
4.1 Mise en œuvre
4.2 Les mots-clés this et base
4.3 Redéfinition et masquage
4.3.1 Redéfinition de méthode
4.3.2 Masquage de méthode
4.3.3 Différences entre redéfinition et masquage
4.4 Imposer ou interdire l'héritage
4.5 Le transtypage
5. Les interfaces
5.1 Création
5.2 Utilisation
5.2.1 Implémentation implicite
5.2.2 Implémentation explicite
6. Les énumérations
7. Les délégués
7.1 Création
7.2 Utilisation
7.3 Expressions lambda
8. Les événements
8.1 Déclaration et déclenchement
8.2 Gestion des événements
9. Les génériques
9.1 Classes
9.1.1 Définition d'une classe générique
9.1.2 Utilisation d'une classe générique
9.2 Interfaces
9.2.1 Définition d'une interface générique
9.2.2 Utilisation d'une interface générique
9.3 Contraintes
9.4 Méthodes
9.4.1 Définition d'une méthode générique
9.4.2 Utilisation d'une méthode générique
9.5 Événements et délégués
10. Les collections
10.1 Types existants
10.1.1 Array
10.1.2 ArrayList et List<T>
10.1.3 Hashtable et Dictionary<TKey, TValue>
10.1.4 Stack et Stack<T>
10.1.5 Queue et Queue<T>
10.2 Choisir un type de collection
11. La programmation dynamique
12. La programmation asynchrone
12.1 Les objets Task
12.2 Écrire du code asynchrone avec async et await
Le débogage et la gestion des erreurs
1. Les différents types d'erreurs
1.1 Erreurs de compilation
1.2 Erreurs d'exécution
2. Utilisation des exceptions
2.1 Création et déclenchement d'exceptions
2.1.1 La classe Exception
2.1.2 Le mot-clé throw
2.1.3 Exceptions spécialisées
2.2 Gérer les exceptions
2.2.1 La structure try ... catch
2.2.2 Les filtres d’exception
2.2.3 Le bloc finally
3. Les outils fournis par Visual Studio
3.1 Contrôle de l'exécution
3.1.1 Démarrage
3.1.2 Arrêt
3.1.3 Pause
3.1.4 Reprise
3.2 Points d'arrêt
3.3 Visualiser le contenu des variables
3.3.1 DataTips
3.3.2 Fenêtres Espion
3.3.3 Fenêtre Espion express
3.3.4 Fenêtre Automatique
3.3.5 Fenêtre Variables locales
3.4 Compilation conditionnelle
4. L’erreur à un milliard de dollars : les références nulles
4.1 NullReferenceException
4.2 Une solution : l'utilisation de types références non-nuls
Le développement d'applications Windows
1. Présentation de WPF
1.1 Structure d'une application WPF
1.2 XAML
1.2.1 Templates
1.2.2 Espaces de noms
1.3 Contexte de données et binding
2. Utilisation des contrôles
2.1 Ajout de contrôles
2.2 Positionnement et dimensionnement des contrôles
2.3 Ajout d'un gestionnaire d'événements à un contrôle
3. Les principaux contrôles
3.1 Contrôles de fenêtrage
3.1.1 Window
3.1.2 NavigationWindow
3.2 Contrôles de disposition
3.2.1 Grid
3.2.2 StackPanel
3.2.3 DockPanel
3.2.4 WrapPanel
3.2.5 Canvas
3.3 Contrôles d'affichage de données
3.3.1 TextBlock
3.3.2 Label
3.3.3 Image
3.3.4 ScrollViewer
3.3.5 ItemsControl
3.3.6 StatusBar
3.3.7 ToolTip
3.4 Contrôles d'édition de texte
3.4.1 TextBox
3.4.2 RichTextBox
3.4.3 PasswordBox
3.5 Contrôles de sélection
3.5.1 RadioButton
3.5.2 CheckBox
3.5.3 ComboBox
3.5.4 ListBox
3.5.5 ListView
3.5.6 TreeView
3.5.7 Slider
3.5.8 Calendar
3.5.9 DatePicker
3.6 Contrôles d'action
3.6.1 Button
3.6.2 Menu
3.6.3 ContextMenu
3.6.4 ToolBar
4. Interactions clavier et souris
4.1 Événements clavier
4.2 Événements souris
4.3 Glisser-déposer
5. Aller plus loin avec WPF
5.1 Introduction à l'utilisation de Blend
5.1.1 L'interface
5.1.2 Ajout et modification de contrôles visuels
5.2 Introduction à MVVM
5.2.1 Présentation
5.2.2 Les interfaces INotifyPropertyChanged et INotifyCollectionChanged
5.2.3 Commandes
5.2.4 Mise en œuvre
L’accès aux données
1. Principes d'une base de données
1.1 Terminologie
1.2 Le langage SQL
1.2.1 Recherche d'enregistrements
1.2.2 Ajout d'enregistrements
1.2.3 Mise à jour d'informations
1.2.4 Suppression d'informations
2. ADO.NET
2.1 Présentation
2.2 Les fournisseurs de données
2.2.1 SQL Server
2.2.2 OLE DB
2.2.3 ODBC
3. Utiliser ADO.NET en mode connecté
3.1 Connexion à une base de données
3.1.1 Chaînes de connexion
3.1.2 Pools de connexions
3.1.3 Gestion de la connexion
3.2 Création et exécution de commandes
3.2.1 Définition et création d'une commande
3.2.2 Sélection de données
3.2.3 Actions sur les données
3.2.4 Paramétrage d'une commande
3.2.5 Exécution de procédures stockées
4. Utiliser ADO.NET en mode déconnecté
4.1 DataSet et DataTable
4.1.1 Description
4.1.2 Remplissage d'un DataSet à partir d'une base de données
4.1.3 Remplissage d'un DataSet sans base de données
4.2 Manipulation des données hors connexion
4.2.1 Lecture des données
4.2.2 Création de contraintes
4.2.3 Relations entre DataTables
4.2.4 État et versions d'une DataRow
4.2.5 Modification de données
4.2.6 Suppression de données
4.2.7 Valider ou annuler des modifications
4.2.8 Filtrage et tri à l'aide d'une DataView
4.2.9 Recherche de données
4.3 Valider les modifications au niveau de la base de données
4.3.1 Générer des commandes de mise à jour automatiquement
4.3.2 Commandes de mise à jour personnalisées
4.3.3 Gestion des accès concurrentiels
5. Utiliser les transactions
LINQ
1. Présentation de LINQ
2. Syntaxe
2.1 Une première requête LINQ
2.2 Les opérateurs de requête
2.2.1 Projection
2.2.2 Filtrage
2.2.3 Triage
2.2.4 Partitionnement
2.2.5 Jointure et regroupement
2.2.6 Agrégation
3. Entity Framework Core
3.1 Les principes du mappage objet-relationnel
3.1.1 Les principes
3.2 Mise en place
3.2.1 Génération du code à partir d’une base de données
3.2.2 Création d‘une base de données avec du code
3.3 Utilisation de LINQ avec Entity Framework Core
3.3.1 Récupération de données
3.3.2 Mise à jour de données
3.3.3 Gestion des conflits
XML
1. Présentation
2. Structure d'un fichier XML
2.1 Constituants d'un document XML
2.2 Document bien formé et document valide
3. Manipuler un document XML
3.1 Utilisation de DOM
3.2 Utilisation de XPath
3.3 Utilisation de LINQ to XML
Le déploiement
1. Introduction
2. Windows Installer
2.1 Création d'un projet d'installation
2.1.1 Opérations sur le système de fichiers
2.1.2 Opérations sur le registre de la machine cible
2.1.3 Configuration de l’installation par l’utilisateur
2.1.4 Exécution d’actions personnalisées
2.1.5 Conditions
3. Fichiers binaires (.exe, .dll)
4. ClickOnce
4.1 La technologie ClickOnce
4.1.1 Principes de fonctionnement
4.1.2 Méthodes de déploiement disponibles
4.1.3 Les mises à jour d'applications avec ClickOnce
4.2 La publication ClickOnce
5. MSIX
Aide-mémoire
1. Introduction
Index
Sébastien PUTIER
Consultant et Formateur depuis plusieurs années, Sébastien PUTIER est aujourd'hui expert technique indépendant au sein de la société Ai3 et apporte son expertise dans la mise en oeuvre de solutions Windows, Web et mobiles avec la plateforme .Net depuis ses premières versions. Il est certifié techniquement (MCPD - MCSD) et pédagogiquement (MCT) par Microsoft.