Formation C# <ul><li>Pierre de La Morinerie </li></ul><ul><li>Club Microsoft Isep — 2007 </li></ul>Cours n° 3 : Programmat...
Plan <ul><li>Introduction, premiers pas, concepts </li></ul><ul><li>Programmation procédurale </li></ul><ul><li>Programmat...
Cours n° 3 Programmation objet Programmation objet
Programmation objet <ul><li>Programmation objet : </li></ul><ul><ul><li>Modélise le programme par des objets </li></ul></u...
Programmation objet <ul><li>Les classes : </li></ul><ul><ul><li>Servent à définir des types d’objets </li></ul></ul><ul><l...
Programmation objet <ul><li>Différence classe/objet : </li></ul><ul><ul><li>Une classe est un  type  (un moule) </li></ul>...
Programmation objet <ul><li>Déclaration d’une classe : </li></ul><ul><ul><li>class <nom de la classe> { } </li></ul></ul><...
Programmation objet <ul><li>Ajouter des fonctions à notre classe : </li></ul><ul><ul><li><accès> <type> <nom>(<arguments>)...
Programmation objet <ul><li>Modificateurs d’accès : </li></ul><ul><ul><li>public  : visible depuis l’extérieur et l’intéri...
Programmation objet <ul><li>Exemple : calculatrice </li></ul><ul><ul><li>Code de l’interface dans la classe Main </li></ul...
Programmation objet <ul><li>Démo : débogage en temps réel </li></ul><ul><ul><li>Placer un ou plusieurs “Breakpoint” </li><...
Programmation objet <ul><li>Namespace : </li></ul><ul><ul><li>“Espace de noms” </li></ul></ul><ul><ul><li>Différencie des ...
Attributs <ul><li>Problème : </li></ul><ul><ul><li>Comment accéder à la même variable depuis plusieurs méthodes ? </li></u...
Attributs <ul><li>Déclaration d’un attribut : </li></ul><ul><ul><li><accès> <type> <nom>; </li></ul></ul><ul><li>Exemple :...
Attributs <ul><li>Exemple 2 : Calculette </li></ul><ul><ul><li>Un attribut précision détermine la précision de tous les ca...
Propriétés <ul><li>Problème : </li></ul><ul><ul><li>Comment contrôler l’accès à des attributs ? </li></ul></ul><ul><li>Sol...
Propriétés <ul><li>Déclaration d’une propriété </li></ul><ul><ul><li><accès> <type> <nom> {   get {   // code   }   set { ...
Constructeur <ul><li>Problème : </li></ul><ul><ul><li>Comment initialiser les attributs d’un objet ? </li></ul></ul><ul><l...
Constructeur <ul><li>Déclaration d’un constructeur : </li></ul><ul><ul><li>public <nom de la classe>(<arguments>) { } </li...
Constructeur <ul><li>Avantages : </li></ul><ul><ul><li>Obligation d’initialiser le ou les attributs </li></ul></ul><ul><ul...
Accesseurs <ul><li>Problème : Comment faire pour restreindre l’accès à un attribut ? </li></ul><ul><ul><li>Solution : le m...
Accesseurs <ul><ul><li>Exemple d’accesseur : </li></ul></ul><ul><ul><ul><li>public int precision {   get { return precisio...
Accesseurs <ul><li>Avantages : </li></ul><ul><ul><li>Pas besoin de méthodes supplémentaires </li></ul></ul><ul><ul><li>Con...
Exceptions <ul><li>Problème : </li></ul><ul><ul><li>Comment signaler les erreurs ? </li></ul></ul><ul><li>Solution : </li>...
Exceptions <ul><li>Exception : un objet qui est “jeté” </li></ul><ul><li>Remonte les blocs de code jusqu’à être “attrapé” ...
Exceptions <ul><li>Jeter une exception : </li></ul><ul><ul><li>throw new Exception(); </li></ul></ul><ul><li>Attraper une ...
Exceptions <ul><li>TP 5 : Exceptions </li></ul><ul><ul><li>Objectif : éviter les divisions par zéro </li></ul></ul><ul><ul...
XMLDoc <ul><li>Problème : </li></ul><ul><ul><li>Comment documenter son programme ? </li></ul></ul><ul><li>Solution : </li>...
XMLDoc <ul><li>Principe de XMLDoc : </li></ul><ul><ul><li>Documenter dans le code </li></ul></ul><ul><ul><li>Classes, fonc...
XMLDoc <ul><li>Exemple 5 : Documentation </li></ul><ul><ul><li>Documenter toute la Calculette </li></ul></ul>
Garbage Collector <ul><li>Libère automatiquement les objets en mémoire </li></ul><ul><li>Pas besoin de “free” comme en C/C...
Assemblies <ul><li>Assembly :  DLL .NET compilée </li></ul><ul><li>Utilisable depuis n’importe quel langage .NET </li></ul...
Prochain SlideShare
Chargement dans…5
×

Formation C# - Cours 3 - Programmation objet

23 828 vues

Publié le

Troisième partie de la formation C# du Club Microsoft Isep.
Fondements de la Porgramation Orientée Objet, introduction aux classes, méthodes et attributs par l'exemple.

Publié dans : Technologie
1 commentaire
7 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
23 828
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3 092
Actions
Partages
0
Téléchargements
892
Commentaires
1
J’aime
7
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Formation C# - Cours 3 - Programmation objet

  1. 1. Formation C# <ul><li>Pierre de La Morinerie </li></ul><ul><li>Club Microsoft Isep — 2007 </li></ul>Cours n° 3 : Programmation objet
  2. 2. Plan <ul><li>Introduction, premiers pas, concepts </li></ul><ul><li>Programmation procédurale </li></ul><ul><li>Programmation objet </li></ul><ul><li>Programmation Windows </li></ul>
  3. 3. Cours n° 3 Programmation objet Programmation objet
  4. 4. Programmation objet <ul><li>Programmation objet : </li></ul><ul><ul><li>Modélise le programme par des objets </li></ul></ul><ul><li>Avantages : </li></ul><ul><ul><li>Encapsulation </li></ul></ul><ul><ul><li>Réutilisation facile </li></ul></ul><ul><ul><li>Débogage facilité </li></ul></ul>
  5. 5. Programmation objet <ul><li>Les classes : </li></ul><ul><ul><li>Servent à définir des types d’objets </li></ul></ul><ul><li>Les classes comportent : </li></ul><ul><ul><li>Des attributs (variables) </li></ul></ul><ul><ul><li>Des méthodes (fonctions) </li></ul></ul>
  6. 6. Programmation objet <ul><li>Différence classe/objet : </li></ul><ul><ul><li>Une classe est un type (un moule) </li></ul></ul><ul><ul><li>Un objet est une variable (un gâteau) </li></ul></ul><ul><li>Exemple : </li></ul><ul><li>Une classe Voiture </li></ul><ul><li>Deux objets, voiturePapa et maVoiture </li></ul>
  7. 7. Programmation objet <ul><li>Déclaration d’une classe : </li></ul><ul><ul><li>class <nom de la classe> { } </li></ul></ul><ul><li>Exemple : </li></ul><ul><ul><li>class Voiture { } </li></ul></ul>
  8. 8. Programmation objet <ul><li>Ajouter des fonctions à notre classe : </li></ul><ul><ul><li><accès> <type> <nom>(<arguments>) { } </li></ul></ul><ul><li>Exemple : </li></ul><ul><ul><li>public int MaMéthode(string a) { // code return 0; } </li></ul></ul>
  9. 9. Programmation objet <ul><li>Modificateurs d’accès : </li></ul><ul><ul><li>public : visible depuis l’extérieur et l’intérieur </li></ul></ul><ul><ul><li>private : visible uniquement de l’intérieur </li></ul></ul>
  10. 10. Programmation objet <ul><li>Exemple : calculatrice </li></ul><ul><ul><li>Code de l’interface dans la classe Main </li></ul></ul><ul><ul><li>Calculs dans une classe Calc </li></ul></ul><ul><li>Pour l’instant : </li></ul><ul><ul><li>Programmer un calcul de puissance </li></ul></ul>
  11. 11. Programmation objet <ul><li>Démo : débogage en temps réel </li></ul><ul><ul><li>Placer un ou plusieurs “Breakpoint” </li></ul></ul><ul><ul><li>Lancer le débogage </li></ul></ul><ul><ul><li>Le programme se met en pause aux Breakpoints </li></ul></ul>
  12. 12. Programmation objet <ul><li>Namespace : </li></ul><ul><ul><li>“Espace de noms” </li></ul></ul><ul><ul><li>Différencie des classes de même nom </li></ul></ul><ul><li>Directive “using <namespace>” : </li></ul><ul><ul><li>Evite d’avoir à taper le namespace à chaque fois </li></ul></ul>
  13. 13. Attributs <ul><li>Problème : </li></ul><ul><ul><li>Comment accéder à la même variable depuis plusieurs méthodes ? </li></ul></ul><ul><li>Solution : </li></ul><ul><ul><li>Les attributs </li></ul></ul>
  14. 14. Attributs <ul><li>Déclaration d’un attribut : </li></ul><ul><ul><li><accès> <type> <nom>; </li></ul></ul><ul><li>Exemple : </li></ul><ul><ul><li>public int precision; </li></ul></ul>
  15. 15. Attributs <ul><li>Exemple 2 : Calculette </li></ul><ul><ul><li>Un attribut précision détermine la précision de tous les calculs </li></ul></ul>
  16. 16. Propriétés <ul><li>Problème : </li></ul><ul><ul><li>Comment contrôler l’accès à des attributs ? </li></ul></ul><ul><li>Solution : </li></ul><ul><ul><li>Les propriétés </li></ul></ul>
  17. 17. Propriétés <ul><li>Déclaration d’une propriété </li></ul><ul><ul><li><accès> <type> <nom> { get { // code } set { // code } } </li></ul></ul>
  18. 18. Constructeur <ul><li>Problème : </li></ul><ul><ul><li>Comment initialiser les attributs d’un objet ? </li></ul></ul><ul><li>Solution : Les constructeurs </li></ul><ul><ul><li>Méthode appelée à la création de chaque objet </li></ul></ul>
  19. 19. Constructeur <ul><li>Déclaration d’un constructeur : </li></ul><ul><ul><li>public <nom de la classe>(<arguments>) { } </li></ul></ul><ul><li>Exemple : </li></ul><ul><ul><li>cf. Ex3.cs </li></ul></ul>
  20. 20. Constructeur <ul><li>Avantages : </li></ul><ul><ul><li>Obligation d’initialiser le ou les attributs </li></ul></ul><ul><ul><li>Permet d’initialiser l’état de l’objet </li></ul></ul>
  21. 21. Accesseurs <ul><li>Problème : Comment faire pour restreindre l’accès à un attribut ? </li></ul><ul><ul><li>Solution : le mettre en private </li></ul></ul><ul><li>Mais si on veut pouvoir lire la précision ? </li></ul><ul><ul><li>Solution : un accesseur en lecture-seule </li></ul></ul>
  22. 22. Accesseurs <ul><ul><li>Exemple d’accesseur : </li></ul></ul><ul><ul><ul><li>public int precision { get { return precision; } set { precision = value; } } </li></ul></ul></ul><ul><ul><li>Cf. Ex4.cs </li></ul></ul>
  23. 23. Accesseurs <ul><li>Avantages : </li></ul><ul><ul><li>Pas besoin de méthodes supplémentaires </li></ul></ul><ul><ul><li>Contrôle lecture/écriture </li></ul></ul><ul><ul><li>Contrôle d’erreur sur la valeur des attributs </li></ul></ul>
  24. 24. Exceptions <ul><li>Problème : </li></ul><ul><ul><li>Comment signaler les erreurs ? </li></ul></ul><ul><li>Solution : </li></ul><ul><ul><li>Passer par un canal spécial : les exceptions </li></ul></ul>
  25. 25. Exceptions <ul><li>Exception : un objet qui est “jeté” </li></ul><ul><li>Remonte les blocs de code jusqu’à être “attrapé” </li></ul>
  26. 26. Exceptions <ul><li>Jeter une exception : </li></ul><ul><ul><li>throw new Exception(); </li></ul></ul><ul><li>Attraper une exception : </li></ul><ul><ul><li>try { // code } catch (Exception e) { Console.WriteLine(“Erreur”); } </li></ul></ul>
  27. 27. Exceptions <ul><li>TP 5 : Exceptions </li></ul><ul><ul><li>Objectif : éviter les divisions par zéro </li></ul></ul><ul><ul><li>Calc.Div jette une Exception si b == 0 </li></ul></ul><ul><ul><li>Afficher un message en cas d’erreur </li></ul></ul><ul><li>Outils </li></ul><ul><ul><li>throw new Exception() </li></ul></ul><ul><ul><li>try { } catch (Exception e) { } </li></ul></ul>
  28. 28. XMLDoc <ul><li>Problème : </li></ul><ul><ul><li>Comment documenter son programme ? </li></ul></ul><ul><li>Solution : </li></ul><ul><ul><li>Documenter directement le code </li></ul></ul>
  29. 29. XMLDoc <ul><li>Principe de XMLDoc : </li></ul><ul><ul><li>Documenter dans le code </li></ul></ul><ul><ul><li>Classes, fonctions, attributs, etc. </li></ul></ul><ul><ul><li>Utiliser NDoc </li></ul></ul><ul><li>Syntaxe : </li></ul><ul><ul><li>/// <summary>Résumé</summary> </li></ul></ul>
  30. 30. XMLDoc <ul><li>Exemple 5 : Documentation </li></ul><ul><ul><li>Documenter toute la Calculette </li></ul></ul>
  31. 31. Garbage Collector <ul><li>Libère automatiquement les objets en mémoire </li></ul><ul><li>Pas besoin de “free” comme en C/C++ </li></ul>
  32. 32. Assemblies <ul><li>Assembly : DLL .NET compilée </li></ul><ul><li>Utilisable depuis n’importe quel langage .NET </li></ul><ul><li>GAC : Global Assembly Cache </li></ul>

×