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

99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.

Présentations similaires


Présentation au sujet: "99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour."— Transcription de la présentation:

1 99 Réutilisation du code grâce à l'héritage

2 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour définir de nouvelles classes Fournir des constructeurs appropriés Redéfinir des méthodes dans la superclasse Décrire le polymorphisme Utiliser efficacement le polymorphisme À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour définir de nouvelles classes Fournir des constructeurs appropriés Redéfinir des méthodes dans la superclasse Décrire le polymorphisme Utiliser efficacement le polymorphisme

3 9-3 Vue d'ensemble Héritage Héritage et constructeurs Polymorphisme L'héritage est un concept essentiel dans la programmation orientée objet (POO) Héritage Héritage et constructeurs Polymorphisme L'héritage est un concept essentiel dans la programmation orientée objet (POO) InventoryItem MovieGameVcr SuperclasseSuperclasse Sous-classesSous-classes

4 9-4 Exemple d'héritage La classe InventoryItem définit des méthodes et des variables. Movie étend InventoryItem et peut : –ajouter de nouvelles variables –ajouter de nouvelles méthodes –redéfinir des méthodes de la classe InventoryItem La classe InventoryItem définit des méthodes et des variables. Movie étend InventoryItem et peut : –ajouter de nouvelles variables –ajouter de nouvelles méthodes –redéfinir des méthodes de la classe InventoryItem InventoryItem Movie

5 9-5 Spécification de l'héritage dans Java L'héritage est obtenu en spécifiant la superclasse étendue par la sous-classe. Movie hérite de toutes les variables et méthodes de InventoryItem. L'héritage est obtenu en spécifiant la superclasse étendue par la sous-classe. Movie hérite de toutes les variables et méthodes de InventoryItem. public class InventoryItem { … } public class Movie extends InventoryItem { … }

6 9-6 Définition de l'héritage avec Eclipse Lors de la spécification d'une classe, JDeveloper demande le nom de sa superclasse : Nom de la superclasse Eclipse génère le code automatiquement.

7 9-7 À quoi ressemble un objet de sous-classe ? Une sous-classe hérite de toutes les variables d'instance de sa superclasse. public class InventoryItem { private float price; private String condition; … } public class Movie extends InventoryItem{ private String title; private int length; … } condition du prix longueur du titre condition du prix InventoryItemInventoryItem MovieMovie

8 9-8 Initialisation par défaut Que se passe-t-il lorsqu'un objet de sous-classe est créé ? Si aucun constructeur n'est défini : –Un constructeur sans clause et par défaut est appelé dans la superclasse. –Le constructeur sans clause et par défaut est appelé dans la sous-classe. Que se passe-t-il lorsqu'un objet de sous-classe est créé ? Si aucun constructeur n'est défini : –Un constructeur sans clause et par défaut est appelé dans la superclasse. –Le constructeur sans clause et par défaut est appelé dans la sous-classe. Movie movie1 = new Movie(); longueur du titre condition du prix MovieMovie

9 9-9 La référence super Super () fait référence à la classe de base de données. Elle sert à appeler des constructeurs de classes de bases de données. Elle doit figurer en première ligne dans le constructeur de la classe dérivée. Elle peut être utilisée pour appeler n'importe quelle méthode de la classe de base de données. Super () fait référence à la classe de base de données. Elle sert à appeler des constructeurs de classes de bases de données. Elle doit figurer en première ligne dans le constructeur de la classe dérivée. Elle peut être utilisée pour appeler n'importe quelle méthode de la classe de base de données.

10 9-10 La référence super : exemple public class Title { Title(String title) { System.out.println(“Title”); … } class Movie extends Title { Movie(String title) { super(title); … System.out.println(“Movie”); } Constructeur de classe de base de données Appelle le constructeur de classe de base de données

11 9-11 Utilisation de constructeurs de superclasse Utilisez super() pour appeler un constructeur de superclasse : public class InventoryItem { InventoryItem(float p, String cond) { price = p; condition = cond; } … public class Movie extends InventoryItem { Movie(String t, float p, String cond) { super(p, cond); title = t; } …

12 9-12 Spécification de méthodes additionnelles La superclasse définit des méthodes pour tous les types de InventoryItem. La sous-classe peut spécifier des méthodes additionnelles spécifiques à Movie. La superclasse définit des méthodes pour tous les types de InventoryItem. La sous-classe peut spécifier des méthodes additionnelles spécifiques à Movie. public class InventoryItem { public float calcDeposit()… public String calcDateDue()… … public class Movie extends InventoryItem { public void getTitle()… public String getLength()…

13 9-13 Redéfinition des méthodes de la superclasse Une sous-classe hérite de toutes les méthodes de sa superclasse. La sous-classe peut redéfinir une méthode avec sa propre version spécialisée. Une sous-classe hérite de toutes les méthodes de sa superclasse. La sous-classe peut redéfinir une méthode avec sa propre version spécialisée. public class InventoryItem { public float calcDeposit(int custId) { if … return itemDeposit; } public class Vcr extends InventoryItem { public float calcDeposit(int custId) { if … return itemDeposit; }

14 9-14 Invocation des méthodes de la superclasse Même si une sous-classe redéfinit une méthode, elle peut toujours appeler la méthode d'origine de la superclasse. Utilisez super.method pour appeler une méthode de superclasse à partir de la sous-classe. Même si une sous-classe redéfinit une méthode, elle peut toujours appeler la méthode d'origine de la superclasse. Utilisez super.method pour appeler une méthode de superclasse à partir de la sous-classe. public class InventoryItem { public float calcDeposit(int custId) { if … return 33.00; } public class Vcr extends InventoryItem { public float calcDeposit(int custId) { itemDeposit = super.calcDeposit(custId); return (itemDeposit + vcrDeposit); }

15 9-15 Acme Video et polymorphisme Au départ, Acme Video louait uniquement des cassettes vidéo. Acme Video a ensuite ajouté les jeux et les magnétoscopes. Quelle sera la suite ? Le polymorphisme apporte la solution. Au départ, Acme Video louait uniquement des cassettes vidéo. Acme Video a ensuite ajouté les jeux et les magnétoscopes. Quelle sera la suite ? Le polymorphisme apporte la solution.

16 9-16 ShoppingBasket Mode de fonctionnement void addItem(InventoryItem item) { // this method is called each time // the clerk scans in a new item float deposit = item.calcDeposit(); … } InventoryItem VCR Movie calcDeposit(){…}

17 9-17 L'opérateur instanceof Le vrai type d'un objet peut être déterminé au moyen de l'opérateur instanceof. Le cas échéant, une référence d'objet peut être convertie au type correct. Le vrai type d'un objet peut être déterminé au moyen de l'opérateur instanceof. Le cas échéant, une référence d'objet peut être convertie au type correct. public void aMethod(InventoryItem i) { … if (i instanceof Vcr) ((Vcr)i).playTestTape(); }

18 9-18 Méthodes et classes final Une méthode peut être déclarée final pour éviter sa redéfinition. Une classe entière peut être déclarée final pour éviter son extension. Une méthode peut être déclarée final pour éviter sa redéfinition. Une classe entière peut être déclarée final pour éviter son extension. public final class Color { … } public final boolean checkPassword(String p) { … }

19 9-19 L'héritage ne doit être utilisé que pour les relations « est une sorte de » réelles : –Un objet de sous-classe doit toujours pouvoir être substitué à un objet de superclasse. –Toutes les méthodes de la superclasse doivent avoir un sens dans la sous-classe. L'utilisation de l'héritage pour des besoins à court- terme entraîne des problèmes à long terme. L'héritage ne doit être utilisé que pour les relations « est une sorte de » réelles : –Un objet de sous-classe doit toujours pouvoir être substitué à un objet de superclasse. –Toutes les méthodes de la superclasse doivent avoir un sens dans la sous-classe. L'utilisation de l'héritage pour des besoins à court- terme entraîne des problèmes à long terme. Problèmes de conception

20 9-20 Résumé Durant ce cours, vous devriez avoir retenu que : Une sous-classe hérite de toutes les variables et méthodes de sa superclasse. Vous pouvez spécifier des variables et méthodes additionnelles et redéfinir des méthodes. Une sous-classe peut appeler une méthode redéfinie de superclasse au moyen de super. Le polymorphisme garantit que c'est la version correcte d'une méthode qui est appelée lors de l'exécution. Durant ce cours, vous devriez avoir retenu que : Une sous-classe hérite de toutes les variables et méthodes de sa superclasse. Vous pouvez spécifier des variables et méthodes additionnelles et redéfinir des méthodes. Une sous-classe peut appeler une méthode redéfinie de superclasse au moyen de super. Le polymorphisme garantit que c'est la version correcte d'une méthode qui est appelée lors de l'exécution.


Télécharger ppt "99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour."

Présentations similaires


Annonces Google