Programmation en Java Héritage. NGUYEN Thi Minh Tuyen

Documents pareils
LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Programmer en JAVA. par Tama

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Objets et Programmation. origine des langages orientés-objet

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Initiation à la programmation orientée-objet avec le langage Java

Héritage presque multiple en Java (1/2)

Initiation à JAVA et à la programmation objet.

Une introduction à Java

Package Java.util Classe générique

Langage Java. Classe de première SI

Chapitre VI- La validation de la composition.

TD/TP PAC - Programmation n 3

INITIATION AU LANGAGE JAVA

Programmation Par Objets

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Programmation par les Objets en Java

TP1 : Initiation à Java et Eclipse

Java 1.5 : principales nouveautés

F. Barthélemy. 17 mai 2005

Support de cours et TD Programmation Orientée Objet

TD/TP PAC - Programmation n 3

Auto-évaluation Programmation en Java

Chapitre 10. Les interfaces Comparable et Comparator 1

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

2. Comprendre les définitions de classes

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Chapitre V. Les classes : Object, Vector, etc.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

RMI le langage Java XII-1 JMF

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

UML. Diagrammes de classes (suite) Delphine Longuet.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Traduction des Langages : Le Compilateur Micro Java

Projet de programmation (IK3) : TP n 1 Correction

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

GOL502 Industries de services

Plan du cours. Historique du langage Nouveautés de Java 7

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Synchro et Threads Java TM

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Environnements de développement (intégrés)

Les structures de données. Rajae El Ouazzani

Généralités sur le Langage Java et éléments syntaxiques.

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

PROGRAMMATION PAR OBJETS

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Programmation Orientée Objet application au langage Java Version Novembre 2007

Interfaces graphiques avec l API Swing

Génie Logiciel avec Ada. 4 février 2013

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Programmation Objet Java Correction

Diagramme de classes

Threads. Threads. USTL routier 1

Cours 1: Java et les objets

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Remote Method Invocation en Java (RMI)

Classe Interne, Anonyme & Enumération

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Développement Logiciel

Remote Method Invocation (RMI)

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Programmation MacOSX / ios

as Architecture des Systèmes d Information

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Web Tier : déploiement de servlets

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Programmation Objet II

Dis papa, c est quoi un bus logiciel réparti?

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

4. Groupement d objets

Introduction à l héritage en C++

Bases Java - Eclipse / Netbeans

Design patterns. Design patterns - définition. Design patterns - avantages

Un ordonnanceur stupide

Corrigé des exercices sur les références

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

Classes et Objets en Ocaml.

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Les arbres binaires de recherche

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Architecture matériel et logiciel 2

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

et Programmation Objet

Exercices sur les interfaces

Premiers Pas en Programmation Objet : les Classes et les Objets

Tp 1 correction. Structures de données (IF2)

Transcription:

Programmation en Java Héritage

Principle de l héritage L idée est d organiser les classes de manière hiérarchique. La rela7on d héritage est unidirec7onnelle Si une classe B hérite d une classe A, on dira que B est une sous- classe de A. Ce>e no7on de sous- classe signifie que la classe B est un cas par7culier de la classe A et donc que les objets instanciant la classe B instancient également la classe A. 2

Exemple Forme Rectangle Cercle Carré 3

Exemple: classe Rectangle public class Rectangle extends Forme { private int largeur, longueur ; public Rectangle(int x, int y) { this.largeur = x ; this.longueur = y ; public int getlargeur() { return this.largeur ; public int getlongueur(){ return this.longueur; public int surface() {return this.longueur*this.largeur; public void affiche() { System.out.println( Rectangle +longueur+ x +largeur); 4

Classe Carre Peut bénéficier de la classe Rectangle et Ne nécessite pas la réécriture de ces méthodes. Toutes les variables de la classe Rectangle ne sont pas accessibles dans la classe Carre. Pour qu un a>ribut puisse être u7lisé dans une sous- classe, il faut que son type d accès soit public ou protected ou si les deux classes sont situées dans le même package, qu il u7lise le type d accès par défaut. Dans cet exemple: les variables longueur et largeur ne sont pas accessibles dans la class Carre è ses valeurs doivent passer par les méthodes getlargeur() et getlongueur() 5

Redé9inition L héritage intégral des a>ributs de la classe Rectangle pose deux problèmes : 1. il faut que chaque carré ait une longueur et une largeur égales ; 2. la méthode affiche écrit le mot rectangle en début de la chaîne. Il serait souhaitable que ce soit carré qui s affiche. 6

Pour résoudre le premier problème Les constructeurs ne sont pas hérités par une sous- classe. Il faut donc écrire un constructeur spécifique pour Carre: ne prend qu un paramètre qui sera affecté à la longueur et à la largeur. U7liser le mot- clé super qui fait appel au constructeur de la classe supérieure. public Carre(int cote) { super(cote, cote); 7

Pour résoudre le deuxième problème Peut être résolu par une redéfini7on de méthode On dit qu une méthode d une sous- classe redéfinit une méthode de sa classe supérieure, si elles ont la même signature mais que le traitement effectué est ré- écrit dans la sous- classe. public void affiche() { System.out.println( Carré + this.getlongueur()); 8

Exemple: Classe Carre public class Carre extends Rectangle { public Carre(int cote) { super(cote, cote); public void affiche() { System.out.println( carré + this.getlongueur()); 9

Il est possible d accéder à la méthode redéfinie dans la classe supérieure. u7lise le mot- clé super comme préfixe à la méthode. Dans notre cas: super.affiche() pour effectuer le traitement de la méthode affiche() de Rectangle. Il est possible d interdire la redéfini7on d une méthode ou d une variable: introduire le mot- clé final au début d une signature de méthode ou d une déclara7on de variable. Il est possible d interdire l héritage d une classe u7lise final au début de la déclara7on d une classe (avant le mot- clé class). 10

Polymorphisme Le polymorphisme est la capacité, pour un même message de correspondre à plusieurs formes de traitements selon l'objet auquel ce message est adressé. La ges7on du polymorphisme est assurée par la machine virtuelle dynamiquement à l'exécu7on. 11

Exemple Forme[] tableau = new Forme[4]; tableau[0] = new Rectangle(10,20); tableau[1] = new Cercle(15); tableau[2] = new Rectangle(5,30); tableau[3] = new Carre(10);... for (int i = 0 ; i < tableau.length ; i++) { if (tableau[i] instanceof Forme) System.out.println( element + i + est une forme ); if (tableau[i] instanceof Cercle) System.out.println( element + i + est un cercle ); if (tableau[i] instanceof Rectangle) System.out.println( element + i + est un rectangle ); if (tableau[i] instanceof Carre) element[0] est une forme element[0] est un rectangle element[1] est une forme element[1] est un cercle element[2] est une forme element[2] est un rectangle element[3] est une forme element[3] est un rectangle element[3] est un carré System.out.println( element + i + est un carré ); 12

L ensemble des classes Java forme une hiérarchie avec une racine unique. Ce>e racine est la classe Object dont hérite toute autre classe. Hérite par défaut de la classe Object. 13

for (int i = 0 ; i < tableau.length ; i++) { tableau[i].affiche(); Résultat : rectangle 10x20 cercle 15 rectangle 5x30 carré 10 14

Interfaces Une interface est un type, au même 7tre qu une classe, mais abstrait et ne peut être instancié décrit un ensemble de signatures de méthodes, sans implémenta7on Une interface possède les caractéris7ques suivantes : con7ent des signatures de méthodes ; ne peut pas contenir de variables ; peut hériter d une autre interface (avec le mot- clé extends) ; Une classe (abstraite ou non) peut implémenter plusieurs interfaces. 15

Dans notre exemple... Forme peut être une interface décrivant les méthodes qui doivent être implémentées par les classes Rectangle et Cercle, ainsi que par la classe Carre. public interface Forme { public int surface() ; public void affiche() ; public class Rectangle implements Forme {... et public class Cercle implements Forme {... 16

Classes abstraites Se situe entre celui de classe et celui d interface. C est une classe qu on ne peut pas directement instancier car certaines de ses méthodes ne sont pas implémentées. Peut donc contenir des variables, des méthodes implémentées et des signatures de méthode à implémenter. Peut implémenter (par7ellement ou totalement) des interfaces et peut hériter d une classe ou d une classe abstraite. U7lise le mot- clé abstract devant le mot- clé class pour déclarer une classe abstraite, ainsi que pour la déclara7on de signatures de méthodes à implémenter. 17

Exemple public abstract class Forme { private int origine_x ; private int origine_y ; public Forme() { this.origine_x = 0 ; this.origine_y = 0 ; public int getoriginex() { return this.origine_x ; public int getoriginey() { return this.origine_y ; public void setoriginex(int x) { this.origine_x = x ; public void setoriginey(int y) { this.origine_y = y ; public abstract int surface(); public abstract void affiche(); 18

Rétablir l héritage public class Rectangle extends Forme {... et public class Cercle extends Forme {... Lorsqu une classe hérite d une classe abstraite: soit implémenter les méthodes abstraites de sa super- classe en les dotant d un corps ; soit être elle- même abstraite si au moins une des méthodes abstraites de sa super- classe reste abstraite. 19

Classes et méthodes génériques Il est parfois u7le de définir des classes paramétrées par un type de données (ou une classe). Par exemple: Dans le package java.ufl: les classes représentant des ensembles (Vector, ArrayList, etc.). Ces classes sont génériques dans le sens où elles prennent en paramètre un type (classe ou interface) quelconque E. E est en quelque sorte une variable qui peut prendre comme valeur un type de donné. 20

Exemple package java.util; public class ArrayList<E> extends AbstractList<E> implements List<E>,... {... public E set(int index, E element) {... public boolean add(e e) {...... 21

Exemple public class SortedList<T> extends Comparable<T> {... La classe SortedList est paramétrée par le type T qui doit être un type dérivé (par héritage ou interfaçage) de Comparable<T>. En bref: nous définissons une liste ordonnée d éléments comparables entre eux (pour pouvoir les trier), grâce à la méthode int compareto(t o) de l interface Comparable qui permet de comparer un Comparable à un élément de type T. 22

Question? 23