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

Introduction au paradigme orienté-objet (suite) Rappel : –Un langage orienté-objet est un langage de programmation qui offre lencapsulation, lhéritage.

Présentations similaires


Présentation au sujet: "Introduction au paradigme orienté-objet (suite) Rappel : –Un langage orienté-objet est un langage de programmation qui offre lencapsulation, lhéritage."— Transcription de la présentation:

1 Introduction au paradigme orienté-objet (suite) Rappel : –Un langage orienté-objet est un langage de programmation qui offre lencapsulation, lhéritage et le polymorphisme dynamique. –Encapsulation : rendre lutilisation dune classe indépendante de son implémentation.

2 Introduction au paradigme orienté-objet (suite) Héritage –Classes dérivées Classe Object –Interfaces Implémentation multiples dinterfaces Classes abstraites Modificateurs daccès et sous classes –public, protected, private Constructeur des classes de base (parent) –Super() Héritage (est un) vs composition (a un) –Généralisation ou aggrégation/spécialisation

3 Principe dhéritage

4 Une classe décrit une catégorie de données, ses limites et ses différents comportements. Cest un type de données. Pour une classe générale, il peut exister plusieurs sous-classes plus spécifiques. Exemple : Animaux AnimauxMarins AnimauxFermes AnimauxDomestiques …

5 Principe dhéritage Pour une sous-classe générale il peut exister dautres sous-classes plus spécifiques. Exemple : AnimauxDomestiques Canin Félin Poisson … Bref : UNE SOUS-CLASSE EST UNE CLASSE.

6 Principe dhéritage Quest-ce que les sous-classes ont en commun ? –Les caractéristiques de la classe supérieure (de base ou parent). Quest-ce que les sous-classes ont de différent ? –Leurs caractéristiques propres qui les distinguent.

7 Principe dhéritage Exemple : Caractéristiques des Animaux : –Nom (ex: lion, chat, chien,...) –Poids –Taille –Date de naissance Caractéristiques des AnimauxMarins : –Nom –Poids –Taille –Date de naissance –Nombre de branchies Caractéristiques des Pieuvre : –Nom –Poids –Taille –Date de naissance –Nombre de branchies –Nombre de tentacules

8 Principe dhéritage Programmation On dit quune sous-classe hérite (elle les a de façon innée) des attributs de sa classe de base (parent) et de ses méthodes. Java, deux sortes dhéritage –À partir dune classe –À partir dune interface

9 Héritage à partir de classe

10 Héritage à partir dune classe –On peut hériter dune seule classe à laide du mot réservé extends Exemple : public class AnimauxMarin extends Animaux{ –Tous les attributs de la classe parent existent pour la sous-classe mais ils ne sont pas accessibles directement sils sont déclarés private.

11 Héritage à partir dune classe Toutes les méthodes non privées de la classe parent existent pour la sous-classe. On peut ajouter autant dattributs et de méthodes que lon veut dans une sous-classe. Ils ne sont pas accessibles par le parent.

12 Héritage à partir dune classe On peut redéfinir tous les membres de la classe parent à lexception des constructeurs (bien entendu). Si on fait référence à un membre qui ne fait pas partie dune sous-classe, Java ira voir dans les classes parents pour le trouver. –En Java toutes les classes héritent par défaut de la classe Object. –Cette classe définit entre autres les méthodes clone(), toString(), equals() et finalize() (voir api).

13 Modificateurs daccès et sous classes

14 Modificateurs daccès et sous classes Il existe trois modificateurs daccès pour les membres dune classe –Public –Private –Protected Public –Toutes les sous-classes et les objets peuvent accéder directement aux membres public

15 Modificateurs daccès et sous classes Private –Seuls les membres de la classe peuvent accéder aux membres private, pas même les membres des sous-classes. Protected –Seuls les membres de la classe et des sous- classes peuvent accéder aux membres protected (pas les objets).

16 Modificateurs daccès et sous classes Exemple 1: public class Classe1{ public int x; private int y; protected int z; } Objet Classe1 objet = new Classe1(); objet.x = 0; objet.y = 0; objet.z = 0; légal illégal

17 Modificateurs daccès et sous classes Exemple 2: public class Classe1{ public int x; private int y; protected int z; } Sous classes public class Classe2 extends Class1{ private int a = x; private int b = y; private int c = z; } légal illégal légal

18 Constructeur des classes de base

19 Les constructeurs de la classe de base ne peuvent pas être surchargés dans une sous-classe. On peut accéder aux membres des classes de bases grâce à une référence qui sappelle super (même principe que this).

20 Constructeur des classes de base Le constructeur par défaut dune classe de base est super() et doit toujours être utilisé comme première instruction dans une méthode. À défaut dutiliser explicitement un constructeur de la classe de base, cest celui par défaut qui est toujours appelé.

21 Constructeur des classes de base Exemple : Public class Classe1{ private int x; public Classe1(int x){ this.x = x; } } public class Classe2 extends Classe1{ private static int y; public Classe2(){ y++; } } Classe2 ne compile par car il nexiste pas de constructeur par défaut dans Classe1. Java vous oblige à en avoir un lors de lhéritage.

22 Constructeur des classes de base Exemple : Public class Classe1{ private static int n; private int x; public Classe1(){n++;} public Classe1(int x){ this.x = x; n++; } public class Classe2 extends Classe1{ private static int y; public Classe2(){y++;} public Classe2(int x, int y){ this.y = y; y++; } Lutilisation dun constructeur de Classe2 forcera lappel à super() qui est le constructeur du parent.

23 Constructeur des classes de base La bonne utilisation du constructeur par copie dattribut est dappeler le constructeur de la classe de base explicitement. Public class Classe1{ private static int n; private int x; public Classe1(){n++; } public Classe1(int x){ this.x = x; n++; } public class Classe2 extends Classe1{ private static int y; public Classe2(){y++;} public Classe2(int x, int y){ super(x); this.y = y; y++; }

24 Héritage vs composition

25 Pour la conception dun logiciel, il y a deux approches pour la construction des classes. Héritage (est un) –Une sous-classe qui hérite est un élément de la classe parent. Composition*** (a un) –Une sous classe a un attribut de la classe parent. ***À noter que la composition existe indépendamment de lhéritage.

26 Héritage vs composition Exemple est un: public class Classe1{... int methode1(){} } public class Classe2 extends Classe1{... int methode2(){} } Classe2 objet = new Classe2(); Objet.methode1(); //légal Un objet de la Classe2 peut accéder à la méthode1 car Classe2 est aussi un élément de la Classe1.

27 Héritage vs composition Exemple a un: public class Classe1{... int methode1(){} } public class Classe2 { private Classe1 objet1; int methode2(){} } Classe2 objet = new Classe2(); Objet.methode1(); //illégal Un objet de la Classe2 ne peut pas accéder à la méthode1 car Classe2 nest pas un élément de la Classe1.

28 Héritage vs composition Solution : public class Classe1{... int methode1(){} } public class Classe2 { private Classe1 objet1;... int methode1(){ return objet1.methode1(); } int methode2(){} } Classe2 objet = new Classe2(); Objet.methode1(); //légal Un objet de la Classe2 peut maintenant accéder à la méthode1 car Classe2 lui a donné laccès avec un observateur.

29 Héritage vs composition Il est préférable dutiliser la composition à lhéritage si les caractéristiques et le comportement sont appelés à changer dans lévolution du logiciel. –Cela occasionne de la répétition de code mais permet un meilleur contrôle sur la conception de la sous-classe (voir java.util.Stack qui hérite de java.util.Vector). On utilisera lhéritage lorsque la hiérarchie est fixe et que les changements sont improbables. –Gain sur lécriture de code mais dépendance de la sous-classe sur les modifications à la classe parent.

30 Héritage à partir dinterface

31 2) À partir dune interface Une interface est une classe pour laquelle il ny a que les attributs et les en-têtes de méthodes. Les attributs doivent absolument être initialisés et être public Le contenu des méthodes est à définir par les classes qui héritent de linterface (Pas { }). On définit une interface à laide du mot réservé interface plutôt que class

32 Héritage à partir dinterface Exemple : public interface Animaux { public String nom = null; public double poids = 0; public double taille = 0;... public String getNom(); }

33 Héritage à partir dinterface –Une classe peut hériter de plusieurs interfaces à laide du mot réservé implements. On parle alors dhéritage multiple dinterfaces. Exemple : public class Classe1 implements Int1, Int2,... –Une classe qui hérite dune interface et qui nimplémente pas toutes les méthodes devient une classe abstraites.

34 Héritage à partir dinterface –Une classe abstraite doit commencer avec le mot réservé abstract Exemple : public abstract classe1 implements Int1 –On ne peut pas instancier un objet dune classe abstraite. –On dira quune classe est concrète si toutes ses méthodes sont définies. –Un objet est toujours instancié à partir dune classe concrète.

35 Héritage à partir dinterface Exemple : public interface Int1{ public int x = 0; public int methode1(); } public abstract class Classe1 implements Int1{ int y; } Classe1 objet = new Classe1(); //erreur classe abstraite Obligatoire puisque methode1() nest pas définie methode1() nest pas implémentée

36 Généralisation vs spécialisation

37 Une sous-classe est une définition plus spécifique que celle de sa classe de base. Une classe de base est une définition plus générale que celle de ses sous-classes. Lorsquon crée des sous-classes on fait de la spécialisation. Lorsquon trouve une forme générale pour des sous-classes, on dit quon fait de la généralisation ou de laggrégation

38 Généralisation vs spécialisation Spécialisation : On connaît les attributs commun et on définit des attributs spécifiques pour les sous-classes –StatJoueurs (attribut commun :nombre parties jouées) StatJoueurBaseball (nombre de buts volé) StatJoueurHockey(nombre de passes) StatJoueurBasket(nombre de paniers)...

39 Généralisation vs spécialisation Généralisation : On connaît les attributs des sous-classes et on regroupe les attributs communs dans une classe de base

40 Animaux AnimauxDomestiquesAnimauxDeFerme CochonsPoules Couveuses Pondeuses... Généralisation vs spécialisation Spécialisation Généralisation

41 FIN DU COURS


Télécharger ppt "Introduction au paradigme orienté-objet (suite) Rappel : –Un langage orienté-objet est un langage de programmation qui offre lencapsulation, lhéritage."

Présentations similaires


Annonces Google