PARADIGME ORIENTÉ OBJET - PART 2

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

Programmer en JAVA. par Tama

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

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

Programmation par les Objets en Java

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.

GOL502 Industries de services

TD/TP PAC - Programmation n 3

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

Cours 1: Java et les objets

Initiation à JAVA et à la programmation objet.

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

TD/TP PAC - Programmation n 3

Auto-évaluation Programmation en Java

Chapitre VI- La validation de la composition.

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)

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

TP1 : Initiation à Java et Eclipse

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

Langage Java. Classe de première SI

Une introduction à Java

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

F. Barthélemy. 17 mai 2005

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

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 )

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

Projet de programmation (IK3) : TP n 1 Correction

INITIATION AU LANGAGE JAVA

RMI le langage Java XII-1 JMF

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

Projet gestion d'objets dupliqués

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

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

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

Support de cours et TD Programmation Orientée Objet

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

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

IFT2255 : Génie logiciel

Package Java.util Classe générique

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

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

Bases Java - Eclipse / Netbeans

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

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

Interfaces graphiques avec l API Swing

1 Définition d une classe en Java

Programmation Orientée Objet

LOG4430 : Architecture logicielle et conception avancée

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

Développement Logiciel

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Programmation Par Objets

Programmation Objet Java Correction

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

Remote Method Invocation (RMI)

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

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

Traduction des Langages : Le Compilateur Micro Java

Applet pour visualiser les variables «automate» notifiées

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

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

Java 1.5 : principales nouveautés

Remote Method Invocation en Java (RMI)

Classe Interne, Anonyme & Enumération

Web Tier : déploiement de servlets

Programmation Orientée Objet en C#

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

Introduction à l héritage en C++

Corrigé des exercices sur les références

Synchro et Threads Java TM

Tutoriel BlueJ. Michael Kölling Mærsk Institute University of Southern Denmark. Version 1.4 fr-2 par le groupe Sigma 1 pour BlueJ Version 1.2.

Diagramme de classes

as Architecture des Systèmes d Information

La carte à puce. Jean-Philippe Babau

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

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

Java c est quoi? Java pourquoi?

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Université de Bangui. Modélisons en UML

Les frameworks au coeur des applications web

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Threads. Threads. USTL routier 1

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

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java Licence Professionnelle CISII,

UML (Diagramme de classes) Unified Modeling Language

Programme Compte bancaire (code)

et Programmation Objet

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Utiliser Java sans BlueJ

ACTIVITÉ DE PROGRAMMATION

Transcription:

PARADIGME ORIENTÉ OBJET - PART 2 A programming paradigm that uses objects to design systems. Sébastien Adam Les concepts avancés de la programmation orientée-objet

2 Plan Héritage en Java Modificateur d accès Constructeur parent Classe abstraite, interface et type interface Redéfinition de méthode Polymorphisme

3 Héritage : le principe L héritage met en œuvre la généralisation / spécialisation. Généralisation : les éléments communs sont définis dans une superclasse. Spécialisation : les éléments spécifiques sont définis dans une sous-classe. Pour une superclasse (parent) générale, il peut exister plusieurs sous-classes (enfants) plus spécifiques. Parent : Animal Enfant : AnimalMarin Petits enfants : Requin, Poisson, Pieuvre

4 Héritage : le mot réservé extends L héritage est un concept essentiel en Java. Toute classe hérite de la classe Object. Une classe peut hériter d une seule classe à l aide du mot réservé extends. public class Animal { // éléments communs public class AnimalMarin extends Animal { // éléments spécifiques

5 Héritage : le contenu hérité Une classe enfant hérite des déclarations et des définitions de la classe parent (méthodes et attributs). Qu est-ce que les sous-classes ont en commun? Les caractéristiques de la classe parent. Qu est-ce que les sous-classes ont de différent? Leurs caractéristiques spécifiques qui les distinguent.

6 Héritage : un exemple Pieuvre est un animal marin est un animal. Caractéristiques d un animal : Nom Poids Taille Date de naissance Caractéristiques d un animal marin : Nom Poids Taille Date de naissance Nombre de branchies Caractéristiques d une pieuvre : Nom Poids Taille Date de naissance Nombre de branchies Nombre de tentacules

7 Héritage : les modificateurs d accès Trois modificateurs d accès permettent de définir la visibilité des membres d une classe en Java. private : les membres sont accessibles à l intérieur de leur classe seulement. protected : private + les membres sont accessibles par les enfants. public : les membres sont accessibles partout. Un membre déclaré sans modificateur d accès a une visibilité package. package : les membres sont accessibles à l intérieur de leur package seulement. L enfant n a pas accès à tout l héritage, ce qui est privé au parent n est pas accessible.

8 Héritage : un exemple public class Classe1 { public int x; private int y; protected int z; public class Classe2 { Classe1 objet = new Classe1(); objet.x = 0; // ok objet.y = 0; // non objet.z = 0; // non public class Classe1 { public int x; private int y; protected int z; public class Classe2 extends Classe1 { private int a = x; // ok private int b = y; // non private int c = z; // ok

9 Héritage (est un) vs Composition (a un) L héritage est utilisé si la hiérarchie de parents est stable. public class Classe2 extends Classe1 { La composition est préférable si un parent est appelé à changer. public class Classe2 { Classe1 objet = new Classe1();

10 Constructeur parent Un enfant pour appeler un constructeur de la classe parent à l aide du mot réservé super. À défaut d utiliser explicitement un constructeur de la classe de parent, c est celui par défaut qui est toujours appelé. Si le mot réservé super() est utilisé, il doit être la première instruction dans un constructeur enfant. public class Classe1 { private int x; public void setx(int x) { this.x = x; // Le constructeur de Classe2 appelle le constructeur du parent Classe1. public class Classe2 extends Classe1 { private int y; public Classe2(int y) { this.y = y; // Classe3 ne compile pas car il n existe pas de constructeur par défaut dans Classe2. public class Classe3 extends Classe2 { private int z; public Classe3() { this.z = 0; // Classe4 compile correctement car son constructeur appelle dès le début du corps le constructeur du parent. public class Classe4 extends Classe2 { public Classe4() { super(z);

11 Classe abstraite Une classe abstraite généralise un ensemble de classes définit les éléments communs laisse les enfants définir les éléments spécifiques contient une à plusieurs méthodes abstraites Une classe ou une méthode abstraite est déclarée avec le motclé «abstract» en Java public abstract class Document { public String getauteur () { return auteur; // Commun public String gettitre () { return titre; // Commun public abstract String getdescription (); // Spécifique

12 Type Interface Un type interface généralise un ensemble de classes déclare les éléments communs laisse les enfants définir les éléments spécifiques est déclaré avec le mot-clé interface en Java définit des attributs public, static et final en Java ne définit aucune méthode est plus abstrait qu'une classe abstraite Si une classe implémente partiellement un type interface, elle est déclarée abstraite. public interface Document { public String getauteur () ; public String gettitre () ; public String getdescription () ;

13 Héritage : le type interface Une classe peut hériter d un ou plusieurs types interface à l aide du mot réservé implements. public class Classe1 implements Int1, Int2 { Un type interface peut être hériter de plusieurs types interface à l aide du mot réservé extends. public interface Int1 extends Int2, Int3, Int4 {

14 Type abstrait Un type abstrait ne peut pas être instanciée Le type d un objet n est jamais abstrait Document d = new Document ( ); // Invalide : l objet a un type abstrait Le type d une variable peut être abstrait public class Livre extends Document { public String getdescription () { return "Livre : " + gettitre(); Document d = new Livre ( ); // Valide : l objet a un type concret

15 Méthode : signature et redéfinition Une méthode est déclarée par sa signature. Signature = nom + paramètres (type et ordre) Une signature est unique dans une classe Le principe de surcharge (overload) permet à deux méthodes d avoir le même nom à l intérieur d une classe. Le principe de redéfinition (override) permet à une méthode enfant d avoir la même signature qu une méthode parent, sauf le constructeur. Le mot-clé final empêche l'héritage et la redéfinition.

16 Polymorphisme Le principe de substitution stipule qu un enfant peut substituer un parent class Chien extends Animal { // Relation enfant / parent void dresser (Animal a) { // Parent attendu dresser(new Chien()); // Enfant substitue Le polymorphisme est un mécanisme permettant à un même message de déclencher différents comportements selon le type de l'objet qui reçoit le message Animal a; // Variable : Animal a = new Chien(); // Objet : Chien a.parle(); // Le chien aboit a = new Chat(); // Objet : Chat a.parle() // Le chat miaule

17 Polymorphisme Le mot réservé super annule le polymorphisme Dites quel est votre choix d implémentation entre a) et b). public class Employe { double getsalaire() { return salaire; public class Directeur extends Employe { a) double getsalaire() { return ((Employe) this ).getsalaire() + bonus; b) double getsalaire() { return super.getsalaire() + bonus;