La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

OBJET Les concepts. Approche classique Basée sur la séparation entre: Le code Les données Un programme est un ensemble de procédures qui utilisent et.

Présentations similaires


Présentation au sujet: "OBJET Les concepts. Approche classique Basée sur la séparation entre: Le code Les données Un programme est un ensemble de procédures qui utilisent et."— Transcription de la présentation:

1 OBJET Les concepts

2 Approche classique Basée sur la séparation entre: Le code Les données Un programme est un ensemble de procédures qui utilisent et modifient des données Programmer cest concevoir des traitements

3 Approche classique Découpage net entre données et traitement SQL SGBDSGBD Prog 3 Prog 2 Prog 1 SP

4 Approche Objet Regrouper (encapsuler) données et traitement au sein dune même entité : lobjet Un objet est une entité informatique Dont les attributs décrivent létat Dont les opérations(méthodes) décrivent le comportement Un programme écrit en langage objet: Est un ensemble dobjets ayant chacun une structure et un comportement Cest la résultante de la collaboration de ces objets (qui communiquent par envoi de messages)

5 Approche objet Un programme devient un ensemble de petites entités informatiques qui interagissent et communiquent par messages

6 Historique des langages OO ALGOL 1960 SIMULA 1967 EIFFEL 1989 C OBJECT PASCAL C 1972 PASCAL ADA SMALLTALK 1976 OBJECTIVE C JAVA 1995 LISP 1957 C# 2000

7 Les concepts de base Objet, Classe, Attributs, Méthodes Encapsulation Encapsulation Cycle de vie Cycle de vie Classification, Héritage Classification, Héritage Polymorphisme, classe abstraite, interface Polymorphisme, classe abstraite, interface

8 Lobjet Un objet est défini par : Ses attributs (ses caractéristiques) Les opérations quil supporte (ses méthodes) Un objet regroupe ainsi : Un aspect statique (sa structure, son état) Un aspect dynamique (son comportement)

9 Lobjet uneFenêtre Attributs : point-sup-gauche point-inf-droit texture en-tête Opérations : Activer () Fermer () Réduire (coeff) Agrandir (coeff) Déplacer (lieu) unCompte Attributs : numero solde titulaire Opérations : Déposer (somme) Retirer (somme) AvoirSolde () uneVoiture Attributs : couleur = bleue poids = 979 kg puissance = 12 CV capacité carburant = 50 l vitesse instantanée =50km/h Opérations : Démarrer () Se déplacer () Mettre de lessence ()

10 Objet et Classe Il est impossible de décrire chaque objet dun système Pour simplifier, pour abstraire, on décrit des classes dobjets avec: Des caractéristiques communes : Attributs Un comportement commun : Méthodes Une classe est donc une abstraction, un concept

11 Objet et Classe Les classes ont un double rôle : décrire et classer de façon abstraite des objets servir de « moule » à objets (mécanisme dinstanciation).

12 Attributs Les attributs définissent la structure dun objet : ils sont nommés, typés et peuvent posséder une valeur initiale Létat de lobjet correspond à la valeur des attributs à un instant donné unCompte numéro solde : réel =0.0 titulaire Déposer (somme) Retirer (somme) AvoirSolde () Type de lattribut Valeur initiale Nom de lattribut

13 Méthodes Structure d'un message : Récepteur SélecteurParamètre Déposer 100 Déposer unCompte Attributs : numéro solde titulaire Opérations : Déposer (somme) Retirer (somme) AvoirSolde () Nom de la méthode à activer Nom de lobjet recevant le message Lobjet est sollicité de lextérieur par un message Il réagit à cette sollicitation en exécutant cette méthode

14 Méthodes Une méthode est un « petit programme » qui exécute un traitement. Les méthodes sont décrites au niveau des classes. Chacune à un nom qui permet de lactiver.

15 Méthodes Les méthodes peuvent être publiques ou privées. Les méthodes publiques constituent l'interface de l'objet avec l'extérieur. Les méthodes privées sont invisibles de lextérieur. Méthodes publiques Méthodes privées Données privées

16 Membres d objet Comme on vient de le voir, les objets sont caractérisés par les données et les méthodes quils encapsulent; chaque objet possède ses propres membres selon le modèle de sa classe d appartenance. Ce sont les variables dobjet et les méthodes dobjets.

17 Membres de classe La classe peut elle même être caractérisée par des membres qui lui sont propres. La classe Compte conserve le nombre total de comptes Compte.nbTot La classe Compte propose une méthode qui retourne ce nombre Compte.RetourneNb() Ces membres nexistent quà lunité; ils sont rattachés à la classe et sont partagés par toutes les instances de la classe. On dit alors quils sont statiques (qualifieur static en C++,Java, C#), car ils existent dès le début de lapplication. Ce sont les variables de classe et les méthodes de classe.

18 Membres de classe Cette notion est très utile, à tel point que certaines classes ne font que proposer des membres statiques et ne sont pas destinées à être instanciées. C est le cas en C# de la classe Math qui propose les données PI, E et les méthodes log, sin, exp, etc... On dispose ainsi de nombreuses bibliothèques thématiques.

19 Les concepts de base Objet, Classe, Attributs, Méthodes Objet, Classe, Attributs, Méthodes Encapsulation Encapsulation Cycle de vie Cycle de vie Classification, Héritage Classification, Héritage Polymorphisme, classe abstraite, interface Polymorphisme, classe abstraite, interface

20 Encapsulation Lencapsulation consiste à masquer aux utilisateurs dun objet les détails relevant de son implémentation (vue interne ou réalisation), et de ne laisser accessible que la vue externe ou interface. Démarrer SeDéplacer Mettredelessence Voiture kilométrage consommation Attributs privés

21 Encapsulation : Types de visibilité Types de visibilité dun attribut ou dune opération Public : visible de toutes les classes Protégé : visible de la classe et des sous-classes Privé : visible uniquement de la classe

22 Encapsulation Limiter la visibilité, cest : Protéger lintérieur de lobjet Dissimuler la complexité Simplifier la maintenance Codifier les échanges avec lextérieur

23 Encapsulation Il est important de noter : quun objet nest connu que par son interface : les services quil peut rendre quil est autonome : il est responsable des actions quil sait effectuer.

24 C# : une classe class Compte { public int numero; private decimal solde; public string titulaire; public void Deposer (decimal somme) { solde += somme } public void Retirer (decimal somme) { solde -= somme } } class Compte { public int numero; private decimal solde; public string titulaire; public void Deposer (decimal somme) { solde += somme } public void Retirer (decimal somme) { solde -= somme } }

25 C# : une classe class Compte { private int numero;.... public int GetNumero() { return numero; } public void SetNumero(int num) { numero = num; }.... class Compte { private int numero;.... public int GetNumero() { return numero; } public void SetNumero(int num) { numero = num; }.... class Compte { private int numero;.... public int Numero { get { return numero; } set { numero = value; } class Compte { private int numero;.... public int Numero { get { return numero; } set { numero = value; } Fonction daccès aux attributs Ou assesseurs et modifieurs Propriétés dobjets

26 Les concepts de base Objet, Classe, Attributs, Méthodes Objet, Classe, Attributs, Méthodes Encapsulation Encapsulation Cycle de vie Cycle de vie Classification, Héritage Classification, Héritage Polymorphisme, classe abstraite, interface Polymorphisme, classe abstraite, interface

27 Cycle de vie de lobjet Lobjet naît, vit, meurt : il a un cycle de vie Création dobjet Allocation de mémoire à laide de new Lobjet est initialisé grâce à un constructeur Utilisation de lobjet : appel de méthodes Destruction dobjet Lobjet redevient mémoire Lallocation de mémoire est annulée

28 Cycle de vie de lobjet L'instanciation est le processus par lequel on crée de nouveaux objets à partir du modèle défini par une classe. Classe I n s t a n c e s Lopérateur new est utilisé pour créer des objets (allocation de mémoire à partir de tas)

29 Cycle de vie de lobjet unCompte Attributs : numéro solde titulaire Opérations : Déposer (somme) Retirer (somme) AvoirSolde () Classe numéro 4462 solde 200 titulaire Paul Instance de numéro 8765 solde 5000 titulaire Jean Le monde abstrait des concepts Le monde réel, concret

30 class Compte { private int numero; private decimal solde; private string titulaire; public int Numero { get{return numero;} set{numero = value;} } public string Titulaire { get{return titulaire;} set{titulaire = value;} } public decimal Solde { get{return solde;} } public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme;} } class Compte { private int numero; private decimal solde; private string titulaire; public int Numero { get{return numero;} set{numero = value;} } public string Titulaire { get{return titulaire;} set{titulaire = value;} } public decimal Solde { get{return solde;} } public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme;} }

31 C# : Cycle de vie de lobjet class Exemple { static void Main() { Compte leCompte = new Compte(); leCompte.Numero=4462; leCompte.Titulaire = Paul; leCompte.Deposer(200); Console.WriteLine(leCompte.Solde) // écrit 200 } class Exemple { static void Main() { Compte leCompte = new Compte(); leCompte.Numero=4462; leCompte.Titulaire = Paul; leCompte.Deposer(200); Console.WriteLine(leCompte.Solde) // écrit 200 }

32 C# : Cycle de vie de lobjet class Compte{ private int numero; private decimal solde; private string titulaire; public int Numero { get{return numero;} set{numero = value;}} public string Titulaire { get{return titulaire;} set{titulaire = value;}} public decimal Solde { get{return solde;}} public Compte() {numero=0; solde=0.0M; titulaire=;} public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } class Compte{ private int numero; private decimal solde; private string titulaire; public int Numero { get{return numero;} set{numero = value;}} public string Titulaire { get{return titulaire;} set{titulaire = value;}} public decimal Solde { get{return solde;}} public Compte() {numero=0; solde=0.0M; titulaire=;} public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } Constructeur par défaut (généré par le compilateur si non codé)

33 C# : Cycle de vie de lobjet class Compte { public int numero; private decimal solde; public string titulaire; public Compte (int num, decimal mt, string nom) { numero=num; solde=mt; titulaire=nom; } public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } class Compte { public int numero; private decimal solde; public string titulaire; public Compte (int num, decimal mt, string nom) { numero=num; solde=mt; titulaire=nom; } public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } Constructeur surchargé

34 C# : Cycle de vie de lobjet class Compte{ private int numero; private decimal solde; private string titulaire; public int Numero { get{return numero;} set{numero = value;}} public string Titulaire { get{return titulaire;} set{titulaire = value;}} public decimal Solde { get{return solde;}} public Compte (int num, string nom) {numero=num; titulaire=nom;} public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } class Compte{ private int numero; private decimal solde; private string titulaire; public int Numero { get{return numero;} set{numero = value;}} public string Titulaire { get{return titulaire;} set{titulaire = value;}} public decimal Solde { get{return solde;}} public Compte (int num, string nom) {numero=num; titulaire=nom;} public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } Constructeur surchargé

35 C# : Cycle de vie de lobjet class Exemple { static void Main() { Compte leCompte = new Compte(4462, Paul); leCompte.Deposer(200); Console.WriteLine(leCompte.Solde) // écrit 200 } class Exemple { static void Main() { Compte leCompte = new Compte(4462, Paul); leCompte.Deposer(200); Console.WriteLine(leCompte.Solde) // écrit 200 }

36 Notion de référence L identifieur (leCompte) qui est attaché à l objet lors de l instanciation puis qui permet de le manipuler s appelle une référence ( en C#), un pointeur (en C++) ou un handle(en Java ) Rien nempêche que plusieurs références pointent sur le même objet leCompte=new Compte tabCompte[5]=leCompte paramXX=leCompte Dans ce cas, le garbage collector est vigilant et ne détruit pas l objet tant qu il est encore référencé. numéro 4462 solde 200 titulaire Paul Deposer ( Somme ) Retirer ( Somme ) AvoirSolde() paramXX tabCompte[5] leCompte

37 Suppression dobjets en C# Impossible de détruire explicitement un objet C# ne fournit pas dopposé à new car une fonction de suppression est source de nombreuses erreurs Oubli de détruire les objets Tentative de destruction dun même objet plusieurs fois Destruction dun objet actif Cest le garbage collector qui détruit les objets Détruit les objets inaccessibles Réalloue la mémoire dans le tas Effectue cette tâche lorsque la mémoire est insuffisante

38 Suppression dobjets en C# Impossible de contrôler le moment ou un objet est détruit, mais contrôle possible de ce qui se passe lors de la destruction Par lutilisation de la méthode Finalize (objets du framework) Par lécriture dun destructeur class Compte { ~ Compte { // instructions de nettoyage } class Compte { ~ Compte { // instructions de nettoyage } A éviter … Augmente la charge et retarde la récupération mémoire

39 Les concepts de base Objet, Classe, Attributs, Méthodes Objet, Classe, Attributs, Méthodes Encapsulation Encapsulation Cycle de vie Cycle de vie Classification, Héritage Classification, Héritage Polymorphisme, classe abstraite, interface Polymorphisme, classe abstraite, interface

40 Classification Les classifications permettent de gérer la complexité en ordonnant les objets au sein d'arborescences de classes d'abstraction croissante. Substance Corps Substance incorporelle Corps animéCorps inerte Animal Pierre Esprit Animal rationnel Etre humainAnge Larbre de Porphyre(philosophe 3eme siècle après JC)

41 Classification Personnel Naviguant Personnel Au sol Hôtesse de lair Pilote Hôtesse daccueil Technicien

42 Généralisation La généralisation consiste à factoriser les éléments communs d'un ensemble de classes dans une classe plus générale : la super-classe ou sur-classe La classe Personnel est une généralisation de la classe PersonnelAuSol Personnel Naviguant Personnel Au sol Hôtesse de lair Pilote Hôtesse daccueil Technicien

43 Spécialisation La spécialisation permet de capturer les particularités d'un ensemble d'objets non discriminées par les classes déjà identifiées. la classe Pilote est une spécialisation de la classe PersonnelNaviguant,qui est elle même une spécialisation de la classe Personnel … Personnel Naviguant Personnel Au sol Hôtesse de lair Pilote Hôtesse daccueil Technicien

44 classe de base classe dérivée CA CB Relation d héritage Généralisation Spécialisation/Généralisation Lhéritage spécifie une relation « est une sorte de » Spécialisation

45 Héritage Une instance de la classe Pilote Possède la structure définie sur la classe Pilote Hérite de la structure définie sur la super-classe PersonnelNaviguant qui a elle-même hérité de la structure définie sur sa super-classe Personnel Personnel Naviguant Personnel Au sol Hôtesse de lair Pilote Hôtesse daccueil Technicien

46 Héritage Les données membres de la classe de base deviennent donc données à part entière de la classe dérivée Un pilote a un nom, prénom, âge … qui lui viennent de la classe Personnel Les services rendus par la super classe le sont aussi par la classe dérivée Un pilote en tant que Personnel dispose dun salaire qui peut être évalué sur l année La classe fille rajoute ses propres données membres et services Un pilote possède un nombre dheures de vols...

47 Héritage Héritage simple : dérivé dune classe de base Héritage multiple : dérivé de plusieurs classes de base Véhicules terrestres Voiture Véhicules terrestresVéhicules marins Amphibie C# restreint lutilisation de lhéritage multiple : une classe ne peut hériter que dune classe, mais de plusieurs interfaces.

48 Héritage Compte Attributs : numéro solde titulaire Opérations : Déposer (somme) Retirer (somme) AvoirSolde () CompteEpargne Attributs : taux Opérations : CalculerInterêts () unCompteEpargne Attributs : numéro solde titulaire taux Opérations : Déposer (somme) Retirer (somme) AvoirSolde () CalculerInterêts () Est une sorte de Hérite de

49 C# : Héritage class Compte { private int numero; protected decimal solde; private string titulaire; public Compte() {numero=0; solde=0.0M; titulaire=;} public Compte(int num) {numero=num;} public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } class Compte { private int numero; protected decimal solde; private string titulaire; public Compte() {numero=0; solde=0.0M; titulaire=;} public Compte(int num) {numero=num;} public void Deposer (decimal somme) {solde += somme;} public void Retirer (decimal somme) { solde -= somme; } } class CompteEpargne : Compte { private decimal taux; public CompteEpargne() : base() {taux=0.0M;} public CompteEpargne(int num, decimal tx) :base(num) {taux =tx;} public void CalculerInterets () { … } class CompteEpargne : Compte { private decimal taux; public CompteEpargne() : base() {taux=0.0M;} public CompteEpargne(int num, decimal tx) :base(num) {taux =tx;} public void CalculerInterets () { … } Constructeur de classe de base

50 Héritage : Types de visibilité Une opération dune classe autre quune sous-classe na pas accès aux attributs et opérations privés ou protégés Une opération dune sous-classe Ne peut pas accéder (consultation ou affectation) à lattribut privé de sa sur-classe Peut accéder (consultation ou affectation) à lattribut protégé de sa sur-classe Privé =« Boite noire » de la classe Protégé=« Boite noire » de la hiérarchie de classe

51 Les concepts de base Objet, Classe, Attributs, Méthodes Objet, Classe, Attributs, Méthodes Encapsulation Encapsulation Cycle de vie Cycle de vie Classification, Héritage Classification, Héritage Polymorphisme, classe abstraite, interface Polymorphisme, classe abstraite, interface

52 Polymorphisme En Programmation classique Si x. type = "cercle " alors x, dessinerCercle Sinon Si x. type ="rectangle " alors x, dessinerRectangle Sinon Si x. type = "triangle " alors x, dessinerTriangle Finsi FinSi

53 Polymorphisme On appelle polymorphisme (du grec signifiant « plusieurs formes ») le fait de dissimuler des traitements différents derrière la même méthode.

54 Polymorphisme En Programmation objet Le nom de la méthode réside dans la classe de base Les implémentations de la méthode résident dans les classes dérivées Figure Dessiner() Cercle Dessiner() Rectangle Dessiner() Triangle Dessiner()

55 Polymorphisme Évolution du logiciel : si je veux dessiner un octogone Ajout de la classe Octogone Il suffira de coder la méthode Dessiner dans la classe Octogone. Aucune autre modification ne sera nécessaire. Figure Dessiner() Cercle Dessiner() Rectangle Dessiner() Triangle Dessiner() Octogone Dessiner()

56 Polymorphisme Cest la propriété de donner le même nom (sélecteur dans le message) À des comportements analogues Qui vont donner lieu à des réalisations plus ou moins différentes Selon le receveur du message

57 Une méthode virtuelle spécifie une implémentation possible dune méthode qui peut être substituée par polymorphisme dans une classe dérivée Une méthode non virtuelle ne peut pas être substituée dans une classe dérivée C# : Implémentation de méthodes class Figure { … public virtual void Dessiner( … ) { // instructions } class Figure { … public virtual void Dessiner( … ) { // instructions } Dans la classe de base

58 Une méthode override (de substitution) spécifie une autre implémentation dune méthode virtuelle C# : Implémentation de méthodes class Cercle : Figure { … public override void Dessiner( … ) { // instructions } class Cercle : Figure { … public override void Dessiner( … ) { // instructions } Dans la classe dérivée Identique en tous points à la méthode virtuelle : - même type de retour - même nom - mêmes paramètres Peut être substituée...

59 Substitution de méthodes Compte Attributs : numéro solde titulaire Opérations : Déposer (somme) Retirer (somme) AvoirSolde () CalculerInterêts() CompteEpargne Attributs : taux Opérations : CalculerInterêts () Est une sorte de class Compte { … public void virtual CalculerInterêts() { … } class CompteEpargne : Compte { … public void override CalculerInterêts() { … } class Compte { … public void virtual CalculerInterêts() { … } class CompteEpargne : Compte { … public void override CalculerInterêts() { … } Implicitement virtuelle Jamais static ni private

60 Classes abstraites Ce sont des classes qui ne seront jamais instanciées. Elles ne servent quà modéliser l univers. Une bonne règle : classes terminales :concrètes classes non terminales :abstraites (qualifieur abstract en C++, Java et C#)

61 Classes abstraites Figure Dessiner() Cercle Dessiner() Rectangle Dessiner() Triangle Dessiner() Octogone Dessiner() La classe de base existe dans le seul but de présenter le nom de la méthode dans la hiérarchie

62 Classes abstraites abstract class Figure { int i; public abstract void Dessiner(); public virtual bool Effacer() { … } class Cercle():Figure { public override void Dessiner() { … } public override bool Effacer() { … } abstract class Figure { int i; public abstract void Dessiner(); public virtual bool Effacer() { … } class Cercle():Figure { public override void Dessiner() { … } public override bool Effacer() { … } Ne peut pas être instanciée Pas de corps de méthode implicitement virtuelle Les classes abstraites sont utilisées pour fournir des implémentations de classes partielles, étendues dans les classes dérivées Seules les classes abstraites peuvent déclarer des méthodes abstraites Les méthodes abstraites ne peuvent pas contenir de corps de méthode Les méthodes abstraites sont virtuelles

63 Interfaces Une interface spécifie un contrat auquel toutes les classes dérivées doivent adhérer interface IConstructible { … void Dessiner( … ); } interface IConstructible { … void Dessiner( … ); } Le nom doit commencer par la lettre I Implicitement publique Pas de corps de méthode

64 Interfaces Une classe peut implémenter zéro (ou plusieurs) interface(s) interface IConstructible { void Dessiner(…); } interface IManipulable { void Copier(…); void Coller (…); void Couper(…); } class Figure :IConstructible, IManipulable { … } interface IConstructible { void Dessiner(…); } interface IManipulable { void Copier(…); void Coller (…); void Couper(…); } class Figure :IConstructible, IManipulable { … }

65 Interfaces Toutes les méthodes déclarées dans les interfaces doivent être implémentées class Figure :IConstructible, IManipulable { public void Dessiner(…) { … } public void Copier(…) { … } public void Coller (…) { … } public void Couper(…) { … } class Figure :IConstructible, IManipulable { public void Dessiner(…) { … } public void Copier(…) { … } public void Coller (…) { … } public void Couper(…) { … } Identique en tous points à la méthode dinterface: - même type de retour - même nom - mêmes paramètres Peut être virtuelle ou non...

66 Interfaces Une classe implémente une interface et étend une classe de base Cercle Dessiner() Figure Dessiner() IConstructible Dessiner() Interface Classe abstraite Classe concrète Uniquement des opérations Peut contenir une implémentation Doit implémenter toutes les opérations issues de lhéritage

67 Interfaces interface IConstructible { void Dessiner(); } abstract class Figure :IConstructible { … public virtual void Dessiner() { } class Cercle : Figure { public override void Dessiner() { } interface IConstructible { void Dessiner(); } abstract class Figure :IConstructible { … public virtual void Dessiner() { } class Cercle : Figure { public override void Dessiner() { }

68 CONCLUSION Quest-ce quun programme ? Il ny a plus de programme au sens strict Chaque entité est conçue indépendamment Doù un gain de modularité Doù aussi la nécessité de maîtriser les interactions Permet de modéliser la réalité telle quelle est conceptualisée

69 Principes Créer des classes qui vont permettre dinstancier des objets Principe de réification Communiquer par envoi de messages Principe de délégation Utilisation de lhéritage Conception par affinage et abstraction


Télécharger ppt "OBJET Les concepts. Approche classique Basée sur la séparation entre: Le code Les données Un programme est un ensemble de procédures qui utilisent et."

Présentations similaires


Annonces Google