Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.

Slides:



Advertisements
Présentations similaires
Spécialisation/généralisation Héritage Polymorphisme.
Advertisements

Spécialisation/généralisation Héritage Polymorphisme
Au programme du jour …. Introduction à lhéritage Un concept important de la programmation objet Livraison de code Organisation des répertoires et packages.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
F. Voisin : Introduction à Java 1 Introduction à Java - lhéritage - Frédéric VOISIN FIIFO - « Remise à Niveau »
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Programmation Objet en JAVA Cours 2 : Réutilisation, Héritage 1 Agrégation, composition, héritage, Hiérarchie, Constructeurs, Transtypage.
JAV - TD 6 Structures de données JAVA
Packages et résolution de noms
JAV – TD 3 bibliothèques standards composition
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
IJA - TD 2 Bases du langage
Leçon 3 : Héritage IUP 2 Génie Informatique
Chapitre III Héritage (début)
VI) exemple: Les astres…
Programmation orientée objet
Langage Oriente Objet Cours 4.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Chapitre III Héritage. POO-L3 H. Fauconnier2 Chapitre III: Héritage A) Extensions généralités Affectation et transtypage B) Méthodes Surcharge et signature.
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Java Héritage, interfaces.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Langage Oriente Objet Cours 3.
Classes abstraites et Interfaces
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
DESS CCI POO-JAVA TD n°7 exercice n°1
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction au paradigme orienté-objet (suite)
Design Pattern: Decorator
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Formation Développeur Java Programmation objet avec JAVA Partie 2
Chapitre III Héritage. POO-L3 H. Fauconnier2 Chapitre III: Héritage A) Extensions généralités Affectation et transtypage B) Méthodes Surcharge et signature.
Chapitre III Héritage. POO-L3 H. Fauconnier2 Chapitre III: Héritage A) Extensions généralités Affectation et transtypage B) Méthodes Surcharge et signature.
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
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.
Héritage Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier.
Héritage et composition
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Java éléments de programmation. Les API essentielles java.lang : Types de bases, Threads, ClassLoader, Exception, Math,... java.util : Hashtable, Vector,
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
Programmation objet. Les classes Une classe représente un concept Une classe est :  un module : elle regroupe la déclaration de données et les opérations.
11/04/ L'héritage Cours 7 Cours 7.
Cours 7 Classes locales Clonage Divers: tableaux.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Les surcharges d'opérateurs
Schéma de conception Factory Method Exemple Sylvain Giroux.
Le polymorphisme.
Cours du 5 novembre.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Introduction à la programmation objet avec java
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Master 1 SIGLIS Jave Lecteur Stéphane Tallard Chapitre 5 – Correction TD.
Transcription de la présentation:

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV2 L'héritage - Objectifs Organiser les classes dans une hiérarchie de fonctionnement Les classes présentent dans ces relations d'héritage un rapport parent / fils La relation d'héritage représente une relation sémantique non standard entre le père et le fils Il n'existe pas de relation d'héritage universelle entre les classes. C'est le rôle de l'architecte d'application de définir la relation qu'il sous-entend

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV3 L'héritage - Syntaxe La classe parente présente généralement soit des attributs et méthodes généraux à toutes les classes filles, soit des attributs et méthodes types qui doivent être (re)définie dans dans les classes filles public class Cercle extends FormeGeometrique { … }

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV4 Lhéritage - Hiérarchie La relation d'héritage indique ce que l'objet est. Object FormeGraphique FormeEuclidienne Ellipse Cercle Trapeze Rectangle Héritage implicite

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV5 Lhéritage - Sous-type Une sous-classe étend les capacités de sa super classe. Elle hérite des capacités de sa parente et y ajoute les siennes De plus, une sous-classe est une spécialisation de sa super-classe. Toute instance de la sous-classe est une instance de la super-classe (pas nécessairement l'inverse).

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV6 L'héritage – Sous-type En Java, une classe ne peut hériter ( extends ) que d'une seule classe Les classes dérivent, par défaut, de java.lang.Object l'héritage est transitif (« transmis » ) (si B hérite de A et C hérite de B => C hérite de A via B) Une référence sur une classe C peut contenir des instances de C ou des classes dérivées de C.

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV7 L'héritage – Sous-type L'opérateur instanceof permet de déterminer la classe « réelle » d'une instance (renvoie un boolean) Les classes final (et respectivement les attributs et les méthodes) ne peuvent pas être redéfinies dans des sous-classes. Les classes abstract (et respectivement les méthodes) doivent être définies dans des sous- classes. super et this pour accéder aux membres dune classe

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV8 L'héritage - Exemple public abstract class FormeEuclidienne { public abstract double area(); } public class Ellipse extends FormeEuclidienne { public double r1, r2; public Ellipse(double r1, double r2) { this.r1 = r1; this.r2 = r2; } public double area(){...} } final class Cercle extends Ellipse { public Cercle(double r) { super(r, r); } public double getRadius() { return r1; } }

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV9 Exercices Implanter la hiérarchie de la diapo 4 –Surcharger la méthode toString() pour afficher les attributs propres à lobjet courant et les attributs de la classe père (utilisation de super() ) –Ex : Cercle c.toString() (FormeGraphique) (FormeEuclidienne) (Eclipse x:3 y:3) (Cercle r:3)

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV10 Exercices Implanter un client qui instancie plusieurs classes de FormeGraphique et qui les vérifie avec instanceof Essayer dassigner une référence de classe FormeGraphique avec un objet nappartenant pas à la hiérarchie : FormeGraphique fg = new String("test"); Object o = new Cercle(); System.out.println((String)o); Que se passe-t-il ?

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV11 Cast/Transtypage 1 Object [] tab=new Object[10]; 2 tab[0]=new Circle(); 3 System.out.println(tab[0]); 4 System.out.println((Circle)tab[0].getArea()); 5 Circle c=(Circle)tab[0]; UpCast est implicite L2 pas besoin de faire tab[0]=(Object)new Circle(); DownCast doit être explicite L4, il faut transtyper tab[0] en Circle

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV12 JAV – TD 5 Les interfaces Java

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV13 Les interfaces - Objectifs une interface décrit ce que sait faire une classe Spécification des comportements possibles pour une classe, en plus de son comportement de base Spécification formelle de classe. Elle indique les services rendus par la classe qui implante linterface !!! Technique / Conceptuel

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV14 Les interfaces - Syntaxe Linterface définit lensemble des méthodes (par leur signature) devant être implémentées dans une classe réalisant cette interface interface Dessinable { public void draw();... }

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV15 Les interfaces - Syntaxe Une interface correspond à une classe où toutes les méthodes sont abstraites Une classe peut implémenter ( implements ) une ou plusieurs interfaces tout en héritant ( extends ) d'une classe Une interface peut hériter ( extends ) de plusieurs interfaces

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV16 Les interfaces - Exemple abstract class Forme { public abstract double perimeter(); } interface Dessinable { public void draw(); } class Cercle extends Forme implements Dessinable, Serializable { public double perimeter() { return 2 * Math.PI * r; } public void draw() {...} private void writeObject(ObjectOutputStream out) throws IOException {...} } class Rectangle extends Forme implements Dessinable,Serializable { public double perimeter() { return 2 * (height + width); } public void draw() {...} private void writeObject(ObjectOutputStream out) throws IOException {...} } class Etudiant implements Serializable { private void writeObject(ObjectOutputStream out) throws IOException {...} }

Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV17 Exercice Intégrer linterface Dessinable (avec la méthode dessiner ) dans la hiérarchie développée dans lexercice précédent. Que faut-il modifier dans chaque classe ? Taper le code suivant : Dessinable d = new Cercle(); d.dessiner(); Que permet la manière de programmer de type Interface i = new Object() ?