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

1 COURS DE PROGRAMMATION ORIENTEE OBJET : Héritage.

Présentations similaires


Présentation au sujet: "1 COURS DE PROGRAMMATION ORIENTEE OBJET : Héritage."— Transcription de la présentation:

1 1 COURS DE PROGRAMMATION ORIENTEE OBJET : Héritage

2 2 Principes –Lhéritage permet de mettre en œuvre la notion de réutilisation. –Lhéritage est une relation entre deux classes qui permet à une classe de réutiliser les caractéristiques dune autre classe X Y Classe parent ou superclasse Classe enfant ou sous-classe Héritage

3 3 Exemple : –Un compte bancaire peut soit être un compte courant soit un compte dépargne. Un compte courant permet un solde négatif mais des agios sont déduits chaque jour si le solde est négatif. Un compte dépargne doit toujours avoir un solde positif mais on ajoute des intérêts calculés chaque jour. Héritage

4 4 CompteBancaire public void crediter (int montant) public void debiter (int montant) public void afficherEtat () public String getNom () public void setNom(String nom) public String getAdresse () public void setAdresse(String adresse) public int getNumero() public int getSolde() public void traitementQuotidien() CompteCourant - tauxAgios : double CompteEpargne - tauxInterets : double Héritage

5 5 Classe CompteCourant : public class CompteCourant extends CompteBancaire{ private double tauxAgios; // taux quotidien des agios... } Héritage

6 6 Classe CompteEpargne: public class CompteEpargne extends CompteBancaire{ private double tauxInterets; //taux dintérêts par jour... } Héritage

7 7 Classes abstraites –Dans certains cas, la classe ancêtre est tellement générale que certaines méthodes ne peuvent plus être implémentées dans celle-ci mais seulement dans chacune des classes dérivées, on parle de méthodes abstraites. –On ne considère plus la classe ancêtre comme une classe pouvant être instanciée. –Une classe possédant une ou plusieurs méthodes abstraites doit être déclarée abstraite. –On emploie le mot clé abstract. Héritage

8 8 Classes abstraites –Exemple : La classe CompteBancaire sera déclarée abstraite car la méthode traitementQuotidien est abstraite. Le traitement à appliquer dépend du type de compte et sera décrit dans les classes dérivées. La classe CompteBancaire ne pourra pas être instanciée directement. Héritage

9 9 Classe CompteBancaire modifiée : public abstract class CompteBancaire { … public abstract void traitementQuotidien(); } Héritage

10 10 La redéfinition de méthode –Certaines méthodes de la superclasse ne conviennent pas pour la sous-classe. On peut alors les redéfinir. –Dans ce cas, on utilisera le mot clé super pour faire référence à la méthode de la superclasse. Héritage

11 11 La redéfinition de méthode Exemple : Redéfinir debiter pour la classe CompteEpargne //méthode debiter redéfinie public void debiter ( int montant ) { if ( montant <= getSolde ()) super.debiter ( montant ); else System.out.println ( " Débit non autorisé "); } Héritage

12 12 Constructeur de la sous-classe –La première instruction dans le constructeur de la sous-classe doit être lappel au constructeur de la superclasse avec le mot clé super. –Si on ne fait pas dappel explicite au constructeur de la superclasse, cest le constructeur par défaut de la superclasse qui est appelé à condition quil existe. Héritage

13 13 Constructeur de la sous-classe Exemple : Classe CompteCourant : //constructeur public CompteCourant(String nom,String adresse, double tauxAgios) { super (nom, adresse); this.tauxAgios = tauxAgios; } Héritage

14 14 Constructeur de la sous-classe Exemple : Classe CompteEpargne : //constructeur public CompteEpargne ( String nom,String adresse, double tauxInterets ) { super ( nom, adresse ); this.tauxInterets = tauxInterets; } Héritage

15 15 Définition de la méthode traitementQuotidien dans chaque sous-classe : Classe CompteCourant : public void traitementQuotidien () { if (getSolde () < 0) { debiter ((int)(-1.0*getSolde()*tauxAgios)); } Héritage

16 16 Définition de la méthode traitementQuotidien dans chaque sous-classe : Classe CompteEpargne: public void traitementQuotidien () { crediter ((int)(getSolde()* tauxInterets)); } Héritage

17 17 Polymorphisme Possibilité daffecter un objet dune sous-classe à une variable de la superclasse. Exemple : CompteBancaire c; c = new CompteEpargne(…); Application : Une agence gère plusieurs comptes. CompteBancaire[] agence = new CompteBancaire[100]; CompteCourant courant = new CompteCourant(…); agence[0] = courant; Héritage

18 18 La classe OBJECT Toutes les classes sont dérivées de la classe Object. Chaque méthode de la classe Object est héritée par toutes les classes. Méthodes importantes de la classe Object : public boolean equals ( Object o ) protected Object clone() public final Class getClass() public int hashcode() public String toString() Héritage

19 19 La classe OBJECT – La méthode equals –La méthode equals détermine si deux objets sont égaux ou non. –Son implémentation dans la classe Object vérifie que les références dobjets sont identiques. –On aura souvent besoin de redéfinir la méthode equals : deux objets seront égaux quand ils auront le même état. Héritage

20 20 La classe OBJECT – La méthode equals Redéfinir la méthode equals pour la classe CompteBancaire Héritage

21 21 public boolean equals(Object autre){ //tester si les objets sont identiques if (this == autre) return true; //doit renvoyer false si le paramètre explicite vaut null if (autre == null) return false; //si les classes ne correspondent pas, elles ne //peuvent être égales if (getClass() != autre.getClass()) return false; //autre est un objet de type CompteBancaire non null CompteBancaire autreCompte =(CompteBancaire)autre; //tester si les comptes ont même numéro return this.numero== autreCompte.numero; }//fin de la méthode equals Héritage

22 22 La classe OBJECT – La méthode hashCode –Un code de hachage est un entier dérivé dun objet. –Par défaut, le code de hachage est extrait de ladresse mémoire de lobjet. –Les objets égaux doivent renvoyer des codes de hachages identiques. Héritage

23 23 La classe OBJECT – La méthode clone –La méthode clone renvoie une copie de lobjet. –Si la sous-classe ne redéfinit pas cette méthode, elle effectue une copie champ par champ. Héritage

24 24 La classe OBJECT – La méthode toString –Il est conseillé de redéfinir la méthode toString. –Lappel de System.out.print(o) pour un objet o va afficher le résultat de lappel de o.toString() Héritage

25 25 La classe OBJECT : toString Exemple : dans les classes CompteBancaire et CompteCourant et CompteEpargne, on pourrait redéfinir toString et supprimer alors la méthode afficherEtat. Méthode toString() de la classe CompteBancaire : public String toString (){ return " Compte numéro " + numero + " ouvert au nom de " + nom + " \n Adresse du titulaire " + adresse+ " \nSolde actuel " + solde" ; } Héritage

26 26 La classe OBJECT : toString Méthode toString() de la classe CompteCourant public String toString(){ return " Compte courant " +super.toString(); } Méthode toString() de la classe CompteEpargne public String toString(){ return " Compte dépargne " +super.toString(); } Héritage

27 27 Exemple complet

28 28

29 29

30 30


Télécharger ppt "1 COURS DE PROGRAMMATION ORIENTEE OBJET : Héritage."

Présentations similaires


Annonces Google