1. Livres et vidéos
  2. Apprendre la Programmation Orientée Objet avec le langage C# (3e édition)

Apprendre la Programmation Orientée Objet avec le langage C# (3e édition)

  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne
  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement
  • Version HTML
  • Accès illimité 24h/24, 7J/7

Présentation

Ce livre s'adresse aux étudiants et aux développeurs ayant déjà une première expérience de la programmation structurée et qui sont désireux de passer à la Programmation Orientée Objet (POO) avec le langage C#, pour développer des applications .NET.

Après un historique de la POO et du langage C#, l'auteur explique pourquoi ce type de programmation est devenu incontournable pour développer dans les environnements graphiques événementiels. Les notions d'objet, de classe et de référence sont présentées puis les fondements de la POO que sont l'encapsulation, l'héritage, le polymorphisme et l'abstraction. Les différentes étapes d'un développement objet avec les principes de modélisation UML sont abordées, suivies par une présentation du framework .NET au travers de son intérêt, de sa richesse et de son environnement de développement Microsoft Visual Studio 2019 Community.

Le lecteur découvre comment C# reproduit les principes de la POO avec des explications simples, des exemples concrets et des exercices corrigés à télécharger sur le site www.editions-eni.fr. Les types de base du développement .NET et leurs utilisations sont présentés. Les programmes d'essais sont de type console ou graphique, basés sur l'utilisation des Windows Forms pour illustrer les communications entre objets. Quand ils seront pertinents, des parallèles seront menés avec les langages de programmation objet C++ et Java.

La programmation multithread, permettant l'exécution simultanée de plusieurs flux d'instructions, sera présentée, suivie par la communication entre mondes managé et non managé et l'écriture de tests unitaires. Ensuite, avec la technique de la réflexion sur les objets, l'auteur présente une façon dynamique de programmer et les travers qu'elle peut engendrer. Enfin, le dernier chapitre traite de la gestion des données avec LINQ, l'utilisation des fichiers XML, ADO.NET (en mode connecté et en mode déconnecté) et Entity Framework.

À la fin de ce livre, le lecteur disposera de bases solides pour appréhender les puissantes bibliothèques du .NET et réaliser des programmes objet modulaires, fiables et extensibles.



Quizinclus dans
la version en ligne !
  • Testez vos connaissances à l'issue de chaque chapitre
  • Validez vos acquis

Table des matières

  • Introduction à la POO
    • 1. Histoire de la POO
    • 2. Historique du C#
  • La conception orientée objet
    • 1. Approche procédurale et décomposition fonctionnelle
    • 2. La transition vers l'approche objet
    • 3. Les caractéristiques de la POO
      • 3.1 L'objet, la classe et la référence
        • 3.1.1 L'objet
        • 3.1.2 La classe
        • 3.1.3 La référence
      • 3.2 L'encapsulation
      • 3.3 L'héritage
      • 3.4 Le polymorphisme
      • 3.5 L'abstraction
    • 4. Le développement objet
      • 4.1 Cahier des charges du logiciel
      • 4.2 Présentation du cycle en V
      • 4.3 Modélisation et représentation UML
        • 4.3.1 Diagrammes de cas d'utilisation
        • 4.3.2 Diagrammes de classes
        • 4.3.3 Énumérations
        • 4.3.4 Diagrammes de séquences
      • 4.4 Rédaction du code et des tests unitaires
    • 5. Exercices corrigés
      • 5.1 Hiérarchie de classes
      • 5.2 Relations entre objets
      • 5.3 Agrégation d’objets
      • 5.4 Diagramme de cas d’utilisation
      • 5.5 Diagramme de séquences
  • Introduction au framework .NET et à VS
    • 1. Introduction
    • 2. Environnement d'exécution
    • 3. Le choix des langages
    • 4. Utiliser plusieurs langages
    • 5. Une librairie très complète
    • 6. Des installations simplifiées
    • 7. Un outil de développement complet
  • Les types du C#
    • 1. "En C#, tout est typé !"
    • 2. "Tout le monde hérite de System.Object"
      • 2.1 Les types Valeurs
      • 2.2 Les types Références
      • 2.3 Boxing/unboxing
      • 2.4 Utilisation des méthodes de System.Object
        • 2.4.1 Equals
        • 2.4.2 GetHashCode
        • 2.4.3 ToString
        • 2.4.4 Finalize
        • 2.4.5 Object.GetType et les opérateurs typeof et is
        • 2.4.6 Object.ReferenceEquals
        • 2.4.7 Object.MemberwiseClone
      • 2.5 Le type System.String et son alias string
    • 3. Exercice corrigé
      • 3.1 Énoncé
      • 3.2 Correction
  • Création de classes
    • 1. Introduction
    • 2. Les espaces de noms
    • 3. Déclaration d'une classe
      • 3.1 Accessibilité des membres
      • 3.2 Attributs
        • 3.2.1 Attributs constants
        • 3.2.2 Attributs en lecture seule
      • 3.3 Propriétés
      • 3.4 Constructeur
        • 3.4.1 Étapes de la construction d'un objet
        • 3.4.2 Surcharge de constructeurs
        • 3.4.3 Constructeurs avec valeurs de paramètres par défaut
        • 3.4.4 Chaînage de constructeurs
        • 3.4.5 Les constructeurs de type static
        • 3.4.6 Les constructeurs de type private
        • 3.4.7 Les initialiseurs d'objets
      • 3.5 Destructeur
      • 3.6 Autre utilisation de using
      • 3.7 Le mot-clé this et ses vertus
      • 3.8 Méthodes
        • 3.8.1 Déclaration
        • 3.8.2 Passage par valeur et passage par référence
      • 3.9 Mécanisme des exceptions
        • 3.9.1 Présentation
        • 3.9.2 Principe de fonctionnement des exceptions
        • 3.9.3 Prise en charge de plusieurs exceptions
        • 3.9.4 try ... catch ... finally et using
      • 3.10 Surcharge des méthodes
      • 3.11 Exercice
        • 3.11.1 Énoncé
        • 3.11.2 Conseils
        • 3.11.3 Correction
    • 4. Les interfaces
      • 4.1 Introduction
      • 4.2 Le contrat
      • 4.3 Déclaration d'une interface
      • 4.4 Implémentation
      • 4.5 Visual Studio et les interfaces
      • 4.6 Représentation UML d'une interface
      • 4.7 Interfaces et polymorphisme
      • 4.8 Exercice
        • 4.8.1 Énoncé
        • 4.8.2 Conseils
        • 4.8.3 Correction
      • 4.9 Les interfaces du .NET
    • 5. Association, composition et agrégation
      • 5.1 Les tableaux
      • 5.2 Les collections
        • 5.2.1 List<> et LinkedList<>
        • 5.2.2 Queue<T> et Stack<T>
        • 5.2.3 Dictionary<TKey, TValue>
        • 5.2.4 Les énumérateurs
        • 5.2.5 La magie du yield
      • 5.3 Exercice
        • 5.3.1 Énoncé
        • 5.3.2 Correction
    • 6. Les classes imbriquées
    • 7. Les structures
      • 7.1 Déclaration d'une structure
      • 7.2 Instanciation d'une structure
    • 8. Les classes partielles
    • 9. Les méthodes partielles
    • 10. Les indexeurs
    • 11. Surcharge d'opérateurs
    • 12. Fonctions locales
    • 13. Les objets "gourmands" en références faibles
    • 14. Les objets "dynamics"
    • 15. Les "Tuple" et "ValueTuple"
  • Héritage et polymorphisme
    • 1. Comprendre l'héritage
    • 2. Codage de la classe de base et de son héritière
      • 2.1 Interdire l'héritage
      • 2.2 Définir les membres héritables
      • 2.3 Codage de l'héritage
      • 2.4 Exploitation d'une classe héritée
    • 3. Communication entre classe de base et classe héritière
      • 3.1 Les constructeurs
      • 3.2 Accès aux membres de base depuis l'héritier
      • 3.3 Masquage ou substitution de membres hérités
        • 3.3.1 Codage du masquage
        • 3.3.2 Codage de la substitution
    • 4. Exercice
      • 4.1 Énoncé
      • 4.2 Corrigé
    • 5. Les classes abstraites
    • 6. Les méthodes d'extension
    • 7. Le polymorphisme
      • 7.1 Comprendre le polymorphisme
      • 7.2 Exploitation du polymorphisme
      • 7.3 Les opérateurs is, as et ()
  • Communication entre objets
    • 1. L'événementiel : être à l'écoute
    • 2. Le pattern Observateur
    • 3. La solution C# : delegate et event
      • 3.1 Utilisation du delegate dans le design pattern Observateur
      • 3.2 Utilisation d'un event
      • 3.3 Comment accompagner l'event de données
      • 3.4 Les génériques en renfort pour encore simplifier
      • 3.5 Les expressions lambda
      • 3.6 Exemple d'utilisation d'event
    • 4. Appels synchrones, appels asynchrones
      • 4.1 Approche 1
      • 4.2 Approche 2
      • 4.3 Approche 3
      • 4.4 Approche 3 avec une expression lambda
    • 5. Exercice
      • 5.1 Énoncé
      • 5.2 Conseils pour la réalisation
      • 5.3 Correction
  • Le multithreading
    • 1. Introduction
    • 2. Comprendre le multithreading
    • 3. Multithreading et .NET
    • 4. Implémentation en C#
      • 4.1 Utilisation d'un BackgroundWorker
        • 4.1.1 Communication du thread principal vers le thread secondaire
        • 4.1.2 Abandon depuis le thread primaire
        • 4.1.3 Communication du thread secondaire vers le thread principal
        • 4.1.4 Communication en fin de traitement du thread secondaire
        • 4.1.5 Exemple de code
      • 4.2 Utilisation du pool de threads créé par .NET
      • 4.3 Gestion "manuelle" avec Thread/ParameterizedThreadStart
    • 5. Synchronisation entre threads
      • 5.1 Nécessité de la synchronisation
      • 5.2 La décoration Synchronization
      • 5.3 Le mot-clé lock
      • 5.4 La classe Monitor
      • 5.5 La classe Mutex
      • 5.6 La classe Semaphore
    • 6. Communication entre threads
      • 6.1 Join
      • 6.2 Les synchronization events
      • 6.3 Communication entre threads secondaires et IHM
      • 6.4 Exercice
        • 6.4.1 Énoncé
        • 6.4.2 Correction
    • 7. La programmation asynchrone
      • 7.1 Le mot-clé async
      • 7.2 Contenu d’une méthode async
      • 7.3 Preuve à l’appui
      • 7.4 Retours possibles d’une méthode async
  • P-Invoke
    • 1. Introduction
      • 1.1 Rappel sur les DLL non managées
      • 1.2 P-Invoke et son Marshal
    • 2. Le cas simple
      • 2.1 Déclaration et appel
      • 2.2 Réglage de Visual Studio pour la mise au point
    • 3. Appel avec paramètres et retour de fonction
    • 4. Traitement avec des chaînes de caractères
      • 4.1 Encodage des caractères
      • 4.2 Encodage des chaînes
      • 4.3 Transmission des chaînes
    • 5. Échange de tableaux
      • 5.1 Du C# au C/C++
      • 5.2 Du C# au C/C++ puis retour au C#
    • 6. Partage de structures
      • 6.1 Déclaration des structures
      • 6.2 Utilisation des structures
    • 7. Les directives [In] et [Out]
    • 8. Réalisation d’un wrapper
      • 8.1 Une région "NativeMethods"
      • 8.2 Stockage des informations de la DLL native
      • 8.3 Instanciation de DLL native
      • 8.4 Méthodes d’utilisation de la DLL managée depuis le wrapper
      • 8.5 Utilisation du wrapper
    • 9. Exercice
      • 9.1 Énoncé
      • 9.2 Correction
  • Les tests
    • 1. Introduction
    • 2. Environnement d’exécution des tests unitaires
    • 3. Le projet de tests unitaires
    • 4. La classe de tests
    • 5. Contenu d’une méthode de test
    • 6. Traitements de préparation et de nettoyage
    • 7. TestContext et source de données
    • 8. Automatisation des tests à la compilation
    • 9. Automatisation des tests en dehors de Visual Studio
    • 10. CodedUI
    • 11. Exercice
      • 11.1 Énoncé
      • 11.2 Correction
  • La réflexion
    • 1. Introduction
    • 2. Mais pour quoi faire ?
    • 3. Introspection d'une classe C#
      • 3.1 Introspection "manuelle"
      • 3.2 Introspection "logicielle"
        • 3.2.1 Découverte et instanciation
        • 3.2.2 Découverte et utilisation des propriétés
        • 3.2.3 Découverte et utilisation des méthodes
      • 3.3 Exercice
        • 3.3.1 Énoncé
        • 3.3.2 Quelques conseils
        • 3.3.3 Correction
    • 4. Chargement dynamique d’un objet implémentant une interface
      • 4.1 Création d’une interface "plug-in"
      • 4.2 Écriture d’un plug-in
      • 4.3 L’application supportant les plug-ins
      • 4.4 Exercice
        • 4.4.1 Énoncé
        • 4.4.2 Correction
    • 5. Décompilation et obfuscation
    • 6. Conclusion
  • Gestion des données
    • 1. Introduction
    • 2. LINQ
      • 2.1 Qu’est-ce que c’est ?
      • 2.2 Les deux syntaxes LINQ
        • 2.2.1 La syntaxe "développeur SQL"
        • 2.2.2 La syntaxe "développeur C#"
      • 2.3 Requêtes et filtres
      • 2.4 Quelques calculs
      • 2.5 Regroupement des résultats
      • 2.6 Les jointures
      • 2.7 Exercice
        • 2.7.1 Énoncé
        • 2.7.2 Solution
    • 3. Persistance des données en XML
      • 3.1 Rappels sur le XML
      • 3.2 XML et .NET
        • 3.2.1 Sérialisation/désérialisation d’un modèle de données
        • 3.2.2 Les décorations de sérialisation XML
        • 3.2.3 XmlSerializer : écrire et lire
      • 3.3 XSD.EXE, un outil de conversion
      • 3.4 Exercice
        • 3.4.1 Énoncé
        • 3.4.2 Correction
      • 3.5 LINQ to XML
        • 3.5.1 Lecture
        • 3.5.2 Écriture
        • 3.5.3 Interrogations
      • 3.6 Exercice
        • 3.6.1 Énoncé
        • 3.6.2 Correction
    • 4. Persistance dans des bases de données avec ADO.NET
      • 4.1 Présentation
      • 4.2 Les termes utilisés
      • 4.3 Les modules ADO.NET
      • 4.4 Notre environnement d’apprentissage
      • 4.5 ADO en mode connecté
        • 4.5.1 Les fournisseurs de données en .NET
        • 4.5.2 Se connecter avec DbConnection
        • 4.5.3 Envoyer des requêtes avec DbCommand
        • 4.5.4 Lire des enregistrements avec DbDataReader
      • 4.6 Exercice
        • 4.6.1 Énoncé
        • 4.6.2 Correction
      • 4.7 ADO en mode déconnecté
        • 4.7.1 La classe DataSet
        • 4.7.2 Le DataSet typé
        • 4.7.3 Persistance du DataSet en XML
        • 4.7.4 LINQ to DataSet
        • 4.7.5 Intégrité référentielle
      • 4.8 DbAdapter : jonction des deux modes
        • 4.8.1 Lecture de la source
        • 4.8.2 Mise à jour de la source
    • 5. Entity Framework
      • 5.1 Présentation de l’Entity Data Model
      • 5.2 Création d’un EDM depuis une base de données
      • 5.3 DbContext
      • 5.4 LINQ to Entities
      • 5.5 Mise à jour de la source
      • 5.6 Création d’un EDM depuis un modèle
      • 5.7 Exercice
        • 5.7.1 Présentation du binding
        • 5.7.2 Énoncé
        • 5.7.3 Correction
    • 6. Conclusion
    • Index 591

Auteur

Luc GERVAISEn savoir plus

Luc Gervais exerce depuis 30 ans la profession de développeur logiciel. Venant du monde de l'électronique, il a commencé par programmer en langage assembleur pour ensuite passer au C, C++, C# et Java. Il a animé de nombreuses formations sur différents langages de programmation aussi bien pour un public de développeurs professionnels que d'étudiants (Université de Rouen). Cette double expérience (technique et pédagogique) lui permet de répondre parfaitement aux attentes des lecteurs désireux de passer à la Programmation Orientée Objet (POO).

Caractéristiques

  • Niveau Initié à Confirmé
  • Nombre de pages 602 pages
  • Parution septembre 2019
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-02056-8
    • EAN : 9782409020568
    • Ref. ENI : RI3CAPOO
  • Niveau Initié à Confirmé
  • Parution septembre 2019
    • HTML
    • ISBN : 978-2-409-02057-5
    • EAN : 9782409020575
    • Ref. ENI : LNRI3CAPOO

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (31,5 Mo)