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

Java Héritage, interfaces. Menu 4 rappel: –package –modificateurs de visibilité –utilité de lhéritage 4 héritage –utilisation des modificateurs (extends,

Présentations similaires


Présentation au sujet: "Java Héritage, interfaces. Menu 4 rappel: –package –modificateurs de visibilité –utilité de lhéritage 4 héritage –utilisation des modificateurs (extends,"— Transcription de la présentation:

1 Java Héritage, interfaces

2 Menu 4 rappel: –package –modificateurs de visibilité –utilité de lhéritage 4 héritage –utilisation des modificateurs (extends, super) –surécriture des méthodes (override) –classes et méthodes abstraites (abstract) 4 les interfaces (interface, implements) 4 résumé des modificateurs 4 classes/interfaces (packages) existantes du JAVA

3 Rappel utilisation des modificateurs de visibilité public, protected, private

4 Organisation des classes en packages 4 un certain nombre de classes peut être regroupés en packages 4 chaque package peut contenir dautres packages 4 chaque package correspond à un répertoire dans le projet 4 les packages forment une arborescence 4 par défaut, toutes les classes appartiennent à Default Package

5 arborescence des packages - exemple Default Package package1package2 classe1.java package3package4 classe2.javaclasse3.javaclasse4.java classe5.java

6 référence aux classes des autres packages Deux possibilités : 4 opérateur point: package1.package2 4 instruction import au début du fichier: import package1.package2 toutes les propriétés et les méthodes de cette classe peuvent être référencées directement 4 exemple: java.lang.Math.sin est une méthode de la classe Math du package java.lang

7 créer un nouveau package sous MS J++ commande Project/New Folder 4 faire glisser les classes dans le répertoire correspondant à Project Explorer ou créer les nouvelles classes dans le répertoire au début du fichier.java il apparait package nom_package;

8 la notion de visibilité 4 propriété : une propriété est dite visible par une classe si les méthodes de cette classe peuvent avoir accès à sa valeur et peuvent la modifier. 4 méthode : une méthode est dite visible par une classe si les méthodes de cette classe peuvent lappeler.

9 visibilité des propriétés et des méthodes 4 public : visible de partout (à partir des autres classes des autres packages également) 4 protected : (protégé) visible uniquement à partir des classes du même package 4 private : (privé) visible uniquement dans la classe

10 important 4 Une classe ne peut pas être privée private class toto {} 4 Une classe ne peut pas être protégée protected class toto {}

11 Comment rendre accessible une propriété privée? 4 Même si une propriété est privée, on peut y accéder à laide des méthodes publiques ou protégées. 4 Ces méthodes peuvent être accessible par une autre classe. 4 Ces méthodes servent comme une interface entre les propriétés privées et des classes extérieures. 4 Ces méthodes peuvent réaliser le contrôle daccès et la validité des valeurs, donc la protection des données.

12 Les méthodes daccès à une propriété privée - exemple public class Cercle { private double rayon; // méthode constructrice public Cercle (double r) { rayon = r; } // méthodes d'accèes public double getRayon() { return rayon; } public int setRayon( double r) { if ( r>0 ) { rayon = r; return 0; } else return -1; } Classe Cercle rayon getRayonsetRayon Vers lextérieure Accès à la valeur modifier la valeur La méthode permet dassurer la validité de la valeur en cas de modification extérieure.

13 Héritage extends, abstract, final, super

14 Hiérarchie des classes 4 Example : classification des espèces (Darwin) 4 La hiérarchie va des classes générales vers les classes spécifiques véhicule voiture 4x4 camion utilitaire moto

15 héritage (öröklődés) 4 la classe dérivée possède –LES PROPRIETES DE SA CLASSE MERE en fonction des modificateurs –LES METHODES DE LA CLASSE MERE en fonction des modificateurs

16 Héritage des propriétés (exemple) voiture fabriquant chauffeur Utilitaire fabriquant, chauffeur cargaison quantité Propriétés héritées

17 Héritage des méthodes (exemple) voiture démarrer arrêter Utilitaire démarrer, arrêter charger décharger Méthodes héritées

18 héritage sous JAVA 4 Dans len-tête da la classe dérivée, le mot clé extends sert à préciser la classe mère. 4 Une classe dérivée peut avoir une seule classe mère. 4 Tous les propriétés et les méthodes de la classe mère sont héritées (i.e. utilisables dans la classe dérivée) sauf celles déclarés avec le modificateur final 4 Les classes avec les modificateur final ne peuvent pas être des classes mères

19 public class EtreHumaine { public boolean sexe; public String nom; public String profession; // méthode constructrice public EtreHumaine(boolean s, String n,String p) { sexe = s; nom = n; profession = p;} public void sePresenter() { String s = (sexe) ? "homme" : "femme"; System.out.println("Mon nom est : " +nom); System.out.println("Je suis un(e) " + s); System.out.println("Ma profession : " + profession+"\n");} }

20 classe dérivée public class Etudiant extends EtreHumaine { // méthode constructrice public Etudiant (boolean s, String n) { super (s,n,"etudiant"); } classe mère (superclass) appel du constructeur de la classe mère Code très compact, néanmoins, la classe dérivée possède les mêmes propriétés et les même méthodes que sa classe mère

21 démonstration public class ClasseMain { public static void main(String[] args) { EtreHumaine moi = new EtreHumaine(true,Kiss", "enseignant"); moi.sePresenter(); Etudiant qui = new Etudiant(false,"Claire"); qui.sePresenter(); try {System.in.read();} catch (java.io.IOException e) {} } La méthode sePresenter existe pour la classe dérivée aussi

22 Remarques 4 sous JAVA, lhéritage est dit simple : une classe ne peut avoir quune seule classe mère (lhéritage multiple existe sous C++) 4 une classe peut être la mère de plusieurs classes dérivées 4 lhéritage permet de déclarer les propriétés et les méthodes une seule fois : code très compact et réutilisation systématique!

23 Exercices 4 ajouter une classe aux précédentes : chauffeur 4 ajouter une classe aux précédentes : docteur

24 override (surécriture, felülírás) 4 Dans la classe dérivée, on peut redéfinir les propriétés et les méthodes de la classe mère. 4 La redéfinition passe par un identificateur identique. 4 Les méthodes surécrites de la classe mère sont masqués. 4 Cependant, on peut avoir accès aux propriétés et méthodes de la classe mère avec le mot clé super (voir la méthode constructrice de lexemple précédent) en fonction des modificateurs

25 exemple pour la surécriture public class EtreHumaine { public String nom; public EtreHumaine(String no) { nom = no; } public void sePresenter() { System.out.println("Je m'appelle "+nom+"\n"); } public void saluer() { System.out.println("Bonjour!\n"); } classe mère

26 classe dérivée public class Hongrois extends EtreHumaine { public Hongrois(String n) { super(n); } // méthodes surécrites public void sePresenter() { // référence à la méthode de la classe mère super.sePresenter(); System.out.println("Je suis hongrois.\n"); } public void saluer() { System.out.println("Jo napot kivanok!\n"); } méthode surécrite

27 démonstration public class ClasseMain { public static void main(String[] args) { EtreHumaine qqn = new EtreHumaine("Pierre"); qqn.sePresenter(); qqn.saluer(); Hongrois moi = new Hongrois("Balint"); moi.sePresenter(); moi.saluer(); try {System.in.read();} catch (java.io.IOException e) {} }

28 quelques règles de surécriture 4 Les propriétés et les méthodes masquées de la classe mère sont référencées à laide du mot clé super: –super.nom_méthode –super.nom_propriété 4 On ne peut pas référencer les méthodes et propriétés privées (private) de la classe mère si elles sont surécrites. 4 Les méthodes finales (final) ne peuvent jamais être surécrites dans la classe dérivée.

29 méthodes et classes abstraites 4 une méthode est abstraite si on ne déclare que son en-tête. 4 une classe est abstraite si toutes ses méthodes sont abstraites. 4 une classe abstraite ne peut pas être instanciée. (classe sans objet et sans constructeur) 4 dans une classe dérivée, les méthodes héritées doivent être implémentées. 4 Une propriété ne peut pas être abstraite. 4 Une classe abstraite ne peut avoir aucun constructeur.

30 exemple dune classe abstraite public abstract class CourbeFermee { public abstract double aire(); public abstract double circonference(); } classe abstraite en-têtes (sans bloc de code) Ces méthodes doivent être implémentées dans les classes dérivées classe sans méthode constructrice

31 première classe dérivée public class TriangleEquilateral extends CourbeFermee { public double coteLongueur; public TriangleEquilateral (double a) { coteLongueur = a; } // implémentation des méthodes héritées public double aire() { return coteLongueur*Math.cos(Math.PI/6)* coteLongueur/2; } public double circonference() { return 3 * coteLongueur; } implémentation une méthode existante de la classe java.lang.Math

32 deuxième classe dérivée public class Cercle extends CourbeFermee { public double rayon; public Cercle (double r) { rayon = r; } // implémentation des méthodes héritées public double aire() { return Math.PI * Math.pow(rayon,2); } public double circonference() { return 2*rayon*Math.PI; }

33 démonstration public class ClasseMain { public static void main(String[] args) { TriangleEquilateral t1 = new TriangleEquilateral(13.56); Cercle c1 = new Cercle(34.76); System.out.println("Aire du cercle : "+c1.aire()); System.out.println("Circ. du triangle : " +t1.circonference()); try {System.in.read();} catch (java.io.IOException e) {} }

34 Interfaces le mot clé implements

35 Interface – approche abstraite 4 Une interface pour un objet regroupe les méthodes de cet objet qui ne sont pas liées à sa classe. 4 Considérons par exemple la classe des appareils télés. 4 Le fait quun appareil télé peut avoir un prix dans un supermarché et peut avoir une panne chez un réparateur, nest pas directement lié au fait quil sagit dun télé. 4 Par conséquent, il est mieux de déclarer séparément quels sont les caractéristiques des objet qui sont vendables et réparables – cela se ferra dans des interfaces.

36 Interface – approche abstraite 4 Une classe peut être muni de plusieurs interfaces. 4 Équiper une classe par des interfaces est un type dhéritage. 4 Comme une classe peut avoir plusieurs interfaces, il sagit de lhéritage multiple.

37 Interface en Java 4 En Java, une interface est une classe tel que: –Toutes les variables sont des variables de classe (static) –Toutes les variables sont finales (final) –Toutes les méthodes sont publique et abstraites (public, abstract)

38 Interface – conseil dutilisation 4 Ne pas mettre beaucoup de méthode dans une classe. 4 Regrouper autant de méthodes en interfaces quon peut. 4 Conséquence: on peut enrichir le code dune classe par limplémentation dune nouvelle interface.

39 Implémentation des interafaces 4 En-tête dune classe qui implémente une interface class nomClasse implements nomInterface1, nomInterface2… 4 La même classe peut implémenter plusieurs interfaces – héritage multiple

40 Interface – exemple public class EtreHumaine { public String Nom; public EtreHumaine(String n) { Nom = n; } public interface Presentable { public abstract void sePresenter(); } Classe mère Interface

41 Résumé des modificateurs abstract, final, public, protected, private, static

42 abstract 4 si une classe est abstraite, alors elle possède au moins une méthode abstraite 4 une classe abstraite na pas de constructeur car elle ne peut pas avoir des objets 4 si une méthode est abstraite, alors on ne déclare que son en-tête

43 final 4 si une classe est finale, alors elle ne peut être la classe mère des autres classes 4 si une méthode est finale, alors elle ne peut pas être surécrite dans une classe dérivée 4 si une propriété est finale, alors elle ne peut pas être modifiée (il sagit dun constant)

44 public 4 si une classe/méthode/propriété est publique, alors elle est visible dans les classes des autres packages

45 protected 4 si une propriété/méthode est protégée, alors elle est visible uniquement dans les classes du package où sa classe se trouve 4 une classe ne peut pas être protégée

46 private 4 si une propriété/méthode est privée, alors elle est visible uniquement dans la classe où elle se trouve 4 une classe ne peut pas être privée

47 static 4 si une propriété est statique, alors il sagit dune variable de classe sont il existe un seul exemplaire pour tous les objets de la classe 4 si une méthode est statique, alors elle manipule les propriétés statiques de sa classe 4 une classe ne peut pas être statique

48 Classe dérivée qui implémente une interface public class Etudiant extends EtreHumaine implements Presentable { public String Profession; public Etudiant(String n) { super(n); Profession = "etudiant"; } public void sePresenter() { System.out.println("Je m'appelle " + Nom); System.out.println("Je suis un(e) " + Profession +"."); }

49 classes (packages) existantes

50 JAVA est fourni avec des packages et classes standards 4 pour faciliter la tâche des programmeurs, les concepteurs du JAVA ont prévu une très large gamme de classes, organisées en divers packages: java.lang, java.awt, java.io, java.util, java.sun, etc...

51 Exemple : quelques classes du java.lang 4 Integer : semblable au primitif int 4 Double : semblable au primitif double 4 String : on à déjà utilisé 4 Math : beaucoup de méthodes et propriétés (statiques) de mathématique : Math.PI, Math.sin, etc… 4 pour le reste : voir laide en ligne (Microsoft Studio Developpement Network)


Télécharger ppt "Java Héritage, interfaces. Menu 4 rappel: –package –modificateurs de visibilité –utilité de lhéritage 4 héritage –utilisation des modificateurs (extends,"

Présentations similaires


Annonces Google