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