HIERARCHIE DE CLASSES

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

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

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

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

Programmer en JAVA. par Tama

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

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

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

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

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

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 )

GOL502 Industries de services

Corrigé des exercices sur les références

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

TP1 : Initiation à Java et Eclipse

TD/TP PAC - Programmation n 3

2. Comprendre les définitions de classes

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

Programmation par les Objets en Java

Premiers Pas en Programmation Objet : les Classes et les Objets

TD/TP PAC - Programmation n 3

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Java Licence Professionnelle CISII,

Une introduction à Java

Bases Java - Eclipse / Netbeans

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

Développement Logiciel

Programmation Objet Java Correction

Programmation Par Objets

Langage Java. Classe de première SI

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

Auto-évaluation Programmation en Java

IFT2255 : Génie logiciel

Initiation à JAVA et à la programmation objet.

Synchro et Threads Java TM

Package Java.util Classe générique

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

Chapitre VI- La validation de la composition.

TD2 Programmation concurrentielle

INITIATION AU LANGAGE JAVA

Traduction des Langages : Le Compilateur Micro Java

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

Valeur C - RSM Conception d Applications Multimedia. Objectifs du cours: 1. Java en général

Cours 1: Java et les objets

Programmation avec le langage Java

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

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

Support de cours et TD Programmation Orientée Objet

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

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

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)

Threads. Threads. USTL routier 1

IRL : Simulation distribuée pour les systèmes embarqués

Diagramme de classes

PROGRAMMATION PAR OBJETS

Introduction à l héritage en C++

Web Tier : déploiement de servlets

LOG4430 : Architecture logicielle et conception avancée

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Chapitre 10. Les interfaces Comparable et Comparator 1

Interfaces graphiques avec l API Swing

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

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

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

RMI le langage Java XII-1 JMF

UML (Diagramme de classes) Unified Modeling Language

Remote Method Invocation en Java (RMI)

Compréhension de lecture

Un ordonnanceur stupide

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

as Architecture des Systèmes d Information

Accès aux ressources informatiques de l ENSEEIHT à distance

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

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

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Exercices sur les interfaces

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Projet de programmation (IK3) : TP n 1 Correction

Cours 14 Les fichiers

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

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Ingénérie logicielle dirigée par les modèles

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Certificat Big Data - Master MAthématiques

Programmation Objet I

Programmation avec des objets : Cours 7. Menu du jour

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

Programmation par composants (1/3) Programmation par composants (2/3)

Classe Interne, Anonyme & Enumération

Alfstore workflow framework Spécification technique

UML. Diagrammes de classes (suite) Delphine Longuet.

Java 1.5 : principales nouveautés

Plan. Patrons de conception. Motivations. Design Pattern : principe. Philippe Collet

Transcription:

RAPPELS SUR L HERITAGE EN PROGRAMMATION ORIENTEE-OBJET ET EN JAVA Fabien MOUTARDE Centre de Robotique (CAOR) Fabien.Moutarde@mines-paristech.fr Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 1 HIERARCHIE DE CLASSES Animaux Animal Oiseaux Mammifères Chats Chiens Oiseau Mammifère Chat Chien Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 2

HERITAGE EN JAVA public void vieillir(){ age++; Oiseau hérite de Animal ==> un Oiseau est un cas particulier d Animal, et tout oiseau hérite d un attribut age et d une méthode vieillir() Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 3 AJOUT DE METHODES OU D ATTRIBUTS DANS UNE CLASSE FILLE // AJOUT DE METHODE public void couver() { class Mammifere extends Animal { // AJOUT D ATTRIBUT private boolean engestation; Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 4

HERITAGE ET SPECIALISATION DE METHODES PAR UNE CLASSE «FILLE» public void vieillir(){ age++; System.out.println("!"); // SPECIALISATION DE METHODE System.out.println("Cui-cui!"); Oiseau titi = new Oiseau(); // APPEL DE METHODE HERITEE titi.vieillir(); // APPEL DE METHODE SPECIALISEE // (i.e. REDEFINIE) titi.crier(); Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 5 HERITAGE ET VISIBILITE EN JAVA protected double poids; public void vieillir(){ age++; private void m() { public void grossir() { int a = age; poids *= 1/(1+a); ERREUR : age est privé OK : poids est «protégé» m(); ERREUR : m() est privée ==> ATTENTION aux visibilités («protections») des attributs et méthodes de la classe mère Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 6

HERITAGE ET REFERENCES EN JAVA Une référence vers une instance de la classe Fille peut être utilisée partout où une référence de type Mère est attendue : class Animalerie { public void ajouter( Animal a ){ Animalerie boutique = new Animalerie(); la méthode ajouter() attend un Animal en paramètre elle accepte un Oiseau boutique.ajouter( new Oiseau() ); Animal bete = new Oiseau(); une référence à Animal peut pointer vers un Oiseau Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 7 «POLYMORPHISME» DYNAMIQUE System.out.println("!"); // REDEFINITION DE METHODE System.out.println("Cui-cui!"); class Chat extends Mammifere { // REDEFINITION DE METHODE System.out.println("Miaou!"); Animal bete; bete = new Chat(); bete.crier(); appelle Animal [] tab; tab = new Animal[2]; tab[0] = new Oiseau(); tab[1] = new Chat(); for (int i=0; i<tab.length; i++) tab[i].crier(); appelle la version de crier() correspondant au type de l objet vers lequel pointe tab[i] (et non au type de tab) Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 8

HERITAGE ET CONSTRUCTEURS EN JAVA Appel du constructeur de la classe mère public Animal(int ageadoption){ age = ageadoption; private boolean sachantchanter; public Oiseau(int ageadoption, boolean chanteur){ super(ageadoption); sachantchanter = chanteur; Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 9 RE-UTILISATION D UNE METHODE DE CLASSE MERE QUI A ETE REDEFINIE DANS LA CLASSE FILLE Appels d une méthode de la classe mère qui a été redéfinie dans la classe fille System.out.println("!"); class Chat extends Mammifere { // REDEFINITION DE METHODE System.out.print("Miaou"); super.crier(); public void m() { super.crier(); Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 10

OPERATEUR instanceof Permet de tester le type EFFECTIF de l objet pointé par une référence Exemple : class Mere {/* */ class Fille extends Mere {/* */ Mere m = new Fille(); boolean b = m instanceof Fille; ATTENTION : en fait cela vérifie juste si la référence pointe vers un objet de la classe ou d une de ses sous-classes ci-dessus, m instanceof Mere est AUSSI vrai (et m instanceof Object est TOUJOURS vrai) Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 11 METHODES ET CLASSES ABSTRAITES abstract // DECLARATION DE METHODE ABSTRAITE abstract public void manger(); abstract // METHODE ABSTRAITE HERITEE // NON-REDEFINIE ==> RESTE ABSTRAITE class Poule extends Oiseau { // IMPLEMENTATION DE LA METHODE public void manger() { System.out.println("Picorer"); class Poisson extends Animal { // AUTRE IMPLEMENTATION DE LA METHODE public void manger() { System.out.println("Gober"); La méthode abstraite ne sert que de déclaration, à redéfinir dans les classes filles concrètes Animal bete = new Animal(); Une classe abstraite ne peut PAS être instanciée, et ne sert que de classe mère, et de type pour références (mais peut avoir des constructeurs!) Animal [] tab; tab = new Animal[2]; tab[0] = new Poule(); tab[1] = new Poisson(); for (int i=0; i<tab.length; i++) tab[i].manger(); Rappels sur l héritage en programmation orientée-objet et en Java, Fabien MOUTARDE, CAOR Mines ParisTech sept. 2011 12