Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Interface ou h
eritage ?
public class Feuille {
protected List<Shape> lesFormes;
public void repaint() {
for(Shape s: this.lesFormes) {
s.draw();
}
}
}
public class MoveTool {
public void move(Shape selectedShape) {
selectedShape.move(...);
}
}
public class RotateTool {
public void rotate(Shape selectedShape) {
selectedShape.rotate(...);
}
}
public class ResizeTool {
public void resize(Shape selectedShape) {
selectedShape.resize(...);
}
}
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Interface ou h
eritage ?
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
h
eritage Un certain nombre de comportements et dattributs peuvent
etre definis de mani`ere commune pour toutes les formes :
couleur du trait, motif du remplissage, epaisseur du trait,
gestion du plan de profondeur daffichage, etc.
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Classes abstraites
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Classes abstraites
Universit
e Lille 1 - Licence Informatique
Interfaces
final
Multi-h
eritage
Composition et H
eritage
abstract
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
abstract
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
abstract
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
abstract
ClasseAbstraite
...
...
+ methodeAbstraite
Conception Orient
ee Objet
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Retour en Forme
Multi-h
eritage
Shape
AbstractPolygon
abstract
abstract
abstract
abstract
void
void
void
void
Triangle
Universit
e Lille 1 - Licence Informatique
Interfaces
Rectangle
Conception Orient
ee Objet
final
Circle
Square
draw();
rotate(double angle);
move(...);
resize(...);
Classes abstraites
Composition et H
eritage
Multi-h
eritage
Composition et H
eritage
Op
erateurs
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Clients bancaires
...
public abstract class Client {
protected String adresse;
protected List<Compte> comptes;
public Client(String adresse) {
this.adresse = adresse; this.comptes = new ArrayList<Compte>();
}
public abstract Identite getIdentite();
public String getAdresse() { return this.adresse; }
public List<Compte> getComptes() { return this.comptes; }
public void ajouteCompte(Compte nouveau) { this.comptes.add(nouveau); }
public void addEcriture(...) throws UnsupportedException { ... }
}
public class ClientPhysique extends Client {
protected PersonneId pid;
public ClientPhysique(String adresse, PersonneId id) {
super(adresse);
this.id = id;
}
public Identite getIdentite() { return this.pid; }
...
}
public class ClientEntreprise extends Client {
protected EntrepriseId eid;
protected String SIRET;
public Identite getIdentite() { return this.eid; }
...
}
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
10
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
M
ethodes diff
erenci
ees pour chaque constante
M
ethodes diff
erenci
ees pour chaque constante
package operation;
import java.util.*;
public enum Operation {
plus {
public double eval(double
},
minus {
public double eval(double
},
times {
public double eval(double
divided by {
public double eval(double
package operation;
import java.util.*;
public enum Operation {
plus {
public double eval(double
},
minus {
public double eval(double
},
times {
public double eval(double
divided by {
public double eval(double
x, double y) { return x + y; }
x, double y) { return x - y; }
x, double y) { return x * y; } },
x, double y) { return x / y; } };
Composition et H
eritage
x, double y) { return x + y; }
x, double y) { return x - y; }
x, double y) { return x * y; } },
x, double y) { return x / y; } };
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
11
Composition et H
eritage
H
eritage et javadoc
Universit
e Lille by
1 - 3.0
Licence
Informatique
= 2.0
6.0 divided
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
11
Composition et H
eritage
H
eritage dinterfaces
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
12
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
13
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
14
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Classes abstraites
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
14
Composition et H
eritage
14
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
14
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Multi-h
eritage
Interfaces
final
14
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Composition et H
eritage
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Conception Orient
ee Objet
Multi-h
eritage
Universit
e Lille 1 - Licence Informatique
Multi-h
eritage
Conception Orient
ee Objet
final
Classes abstraites
14
Universit
e Lille 1 - Licence Informatique
14
Composition et H
eritage
Conception Orient
ee Objet
14
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
final
public interface Animal { }
public interface Aquatique { }
public interface AnimalAquatique extends Animal, Aquatique {}
public class Zoo {
public void addAnimal(Animal animal) { ... }
}
public void Aquarium {
public void add(Aquatique aquatique) { ... }
}
public class ZooAvecAquarium extends Zoo {
protected Aquarium aquarium;
public void addAnimalAquatique(AnimalAquatique animalAqua) {
this.addAnimal(animalAqua);
this.aquarium.add(animalAqua);
}
...
}
public class Mammifere implements Animal { ...}
public class Cetace extends Mammifere implements AnimalAquatique { ...
public class Nenuphar implements Aquatique { ...
// ... utilisation ...
ZooAvecAquarium zoo = new ZooAvecAquarium();
Cetace cet = new Cetace();
zoo.addAnimalAquatique(cet);
zoo.getAquarium().add(new Nenuphar());
Conception Orient
ee Objet
Interfaces
Universit
e Lille 1 - Licence Informatique
Classes abstraites
final
Multi-h
eritage
14
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
etc.
15
Composition et H
eritage
Application
Question
Quel(s) interet(s) `a definir une methode final ?
Universit
e Lille 1 - Licence Informatique
constant
Conception Orient
ee Objet
16
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
17
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Application
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Application
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
17
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Multi-h
eritage ?
Multi-h
eritage ?
Rappel
Lheritage multiple de classes nexiste pas en Java
Rappel
Lheritage multiple de classes nexiste pas en Java
Question
Quel serait linteret du multi-heritage ?
17
Composition et H
eritage
Conception Orient
ee Objet
18
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
18
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Probl`
eme
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Probl`
eme
Question
Quel(s) probl`eme(s) peut poser lheritage multiple ?
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
19
Composition et H
eritage
Probl`
eme
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
19
Composition et H
eritage
Probl`
eme
Question
Comment pourrait-on contourner ce probl`eme ?
Conception Orient
ee Objet
19
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
19
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Le probl`
eme du diamant
Le probl`
eme du diamant
Question
Ces solutions sont-elles suffisantes ?
ou le losange de la mort
Multi-h
eritage
Composition et H
eritage
(dapr`
es B. Venners)
Animal
Dinosaur
Frog
Frogosaur
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
20
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
20
Composition et H
eritage
Conception Orient
ee Objet
21
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
21
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Multi-h
eritage
21
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Conception Orient
ee Objet
final
Classes abstraites
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
21
Composition et H
eritage
21
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
21
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Interfaces
21
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Universit
e Lille 1 - Licence Informatique
22
Conception Orient
ee Objet
23
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
23
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
23
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
23
Universit
e Lille 1 - Licence Informatique
23
Conception Orient
ee Objet
23
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
23
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Composition et H
eritage
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Choisir lheritage de lune des deux classes et definir une interface pour la
partie specifique `a lautre et que lon souhaitait recuperer.
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
23
Universit
e Lille 1 - Licence Informatique
23
Conception Orient
ee Objet
23
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Combiner interfaces et h
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Accrotre le polymorphisme
tout en evitant les probl`emes lies au multi-heritage.
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
24
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
25
Composition et H
eritage
25
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
25
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
25
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
25
Composition et H
eritage
Exemple
Conception Orient
ee Objet
25
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
26
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Exemple
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Exemple
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
26
Composition et H
eritage
Exemple
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
26
Composition et H
eritage
Exemple
Universit
e Lille 1 - Licence Informatique
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
26
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
26
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
H
eritage dinterfaces
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Conception Orient
ee Objet
Interfaces
final
Multi-h
eritage
27
Composition et H
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
28
Composition et H
eritage
R
eutiliser : h
eritage
Avantages :
Interets :
peut devenir
AbstractList<T> l = new LinkedList<T>();
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
29
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
30
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
fragilit
e linterface de la super-classe
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
31
Composition et H
eritage
Changement de linterface
Composition et H
eritage
// h
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
32
Composition et H
eritage
Changement de linterface
Universit
e Lille 1 - Licence Informatique
Multi-h
eritage
Classes abstraites
final
Universit
e Lille 1 - Licence Informatique
Interfaces
Exemple
super-classe fragile
Classes abstraites
Conception Orient
ee Objet
33
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
33
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Changement de linterface
Universit
e Lille 1 - Licence Informatique
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Conception Orient
ee Objet
final
Interfaces
Changement de linterface
Classes abstraites
Classes abstraites
Multi-h
eritage
33
Composition et H
eritage
Utilisation de la composition
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
33
Composition et H
eritage
Exemple revisit
e
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
34
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
35
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Exemple revisit
e
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Exemple revisit
e
}
public class Example2Fruit {
public static void main(String[] args) {
Apple apple = new Apple();
int pieces = apple.peel();
}
} // Example2Fruit
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
35
Composition et H
eritage
Changement de linterface
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
35
Composition et H
eritage
Changement de linterface
Universit
e Lille 1 - Licence Informatique
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
36
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
36
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Changement de linterface
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
36
Composition et H
eritage
Multi-h
eritage
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
36
Composition et H
eritage
H
eritage > composition
Universit
e Lille 1 - Licence Informatique
final
Composition > H
eritage
Interfaces
Changement de linterface
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Conception Orient
ee Objet
37
H plus facile dajouter des sous-classes par heritage que dajouter des
classes front-end par composition
grace au polymorphisme, on peut facilement passer dune (instance
de) super-classe `a sa sous-classe sans changer de code
pas si simple avec composition...
H lien par heritage plus facile `a apprehender que lien par composition
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
38
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Exemple revisit
e (2)
public interface Peelable {
public Peel peel();
}
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Conception Orient
ee Objet
final
Multi-h
eritage
39
Composition et H
eritage
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
Exemple revisit
e (2)
Exemple revisit
e (2)
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
40
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
final
Multi-h
eritage
40
Composition et H
eritage
Conception Orient
ee Objet
40
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
Exemple revisit
e (2)
public interface Peelable {
public Peel peel();
}
public class Fruit {
public int peel() {
System.out.println("peel done");
return 1;
}
}
public class Apple implements Peelable {
private Fruit fruit = new Fruit();
public Peel peel() {
return new Peel(this.fruit.peel());
}
}
public class PeelProcessor() {
public void peelSomething(Peelable something) {
something.peel();
}
public static void main(String[] args) {
PeelProcessor pp = new PeelProcessor();
pp.peelSomething(new Apple());
}
} // PeelProcessor
Universit
e Lille 1 - Licence Informatique
Classes abstraites
Interfaces
final
Multi-h
eritage
Composition et H
eritage
H
eritage=tentation
le probl`eme de la
modification de la classe
back-end est pris en charge
par la composition
Peelable
40
le probl`eme de lajout de
sous-classe est prise en
charge par linterface
Conception Orient
ee Objet
Universit
e Lille 1 - Licence Informatique
Conception Orient
ee Objet
41