Beruflich Dokumente
Kultur Dokumente
et le langage Java
Master BBSG 2
Laurent Tichit
Departement Informatique et Interactions, Faculte des Sciences de Luminy
Cours 3: Lheritage
L.
c Tichit, 2015-2016 POO et Java 1/1
Lh
eritage
Heritage : la problematique
Point
Pixel
L.
c Tichit, 2015-2016 POO et Java 2/1
Lh
eritage
Heritage : la problematique
Point
Point
Pixel tend
Pixel
L.
c Tichit, 2015-2016 POO et Java 2/1
Lh
eritage
Heritage : la problematique
Point
Point
Pixel tend
Pixel
Cercle Carr
L.
c Tichit, 2015-2016 POO et Java 2/1
Lh
eritage
Heritage : la problematique
Point
Point
Pixel tend
Pixel
Objet
Graphique
Cercle Carr
L.
c Tichit, 2015-2016 POO et Java 2/1
Lh
eritage
Heritage
m
ecanisme pour d
efinir une nouvelle classe comme extension dune classe pr
eexistante
L.
c Tichit, 2015-2016 POO et Java 3/1
Lh
eritage
Heritage
m
ecanisme pour d
efinir une nouvelle classe comme extension dune classe pr
eexistante
tous les membres de la classe pr
eexistante sont membres de la nouvelle classe
L.
c Tichit, 2015-2016 POO et Java 3/1
Lh
eritage
Heritage
m
ecanisme pour d
efinir une nouvelle classe comme extension dune classe pr
eexistante
tous les membres de la classe pr
eexistante sont membres de la nouvelle classe
Fichier Point.java
public class Point {
int x, y;
void placer(int a, int b) {
x = a;
y = b;
}
...
}
L.
c Tichit, 2015-2016 POO et Java 3/1
Lh
eritage
Heritage
m
ecanisme pour d
efinir une nouvelle classe comme extension dune classe pr
eexistante
tous les membres de la classe pr
eexistante sont membres de la nouvelle classe
Fichier Point.java
public class Point {
int x, y;
void placer(int a, int b) {
x = a;
y = b;
}
...
}
Fichier Pixel.java
public class Pixel extends Point {
Color couleur;
void colorier(Color c) {
couleur = c;
}
...
}
L.
c Tichit, 2015-2016 POO et Java 3/1
Lh
eritage
Heritage
m
ecanisme pour d
efinir une nouvelle classe comme extension dune classe pr
eexistante
tous les membres de la classe pr
eexistante sont membres de la nouvelle classe
Fichier Point.java
un objet Point
public class Point {
int x, y; 10 x
void placer(int a, int b) { 20 y
x = a;
y = b;
} un objet Pixel
...
} 10 x
20 y
red couleur
Fichier Pixel.java
public class Pixel extends Point {
Color couleur; Pixel pix = new Pixel();
void colorier(Color c) { pix.placer(10, 20);
couleur = c; pix.colorier(Color.red);
}
...
}
L.
c Tichit, 2015-2016 POO et Java 3/1
Lh
eritage
Point
x
y
placer(int,int) la super-classe
distance(Point)
toString()
...
relation extends
L.
c Tichit, 2015-2016 POO et Java 4/1
Lh
eritage
Point
x
y
placer(int,int) la super-classe
distance(Point)
toString() Pas de contrainte-surprise :
... la super-classe na pas `
a etre
ni dans le meme package
relation extends
ni dans le meme dossier
un Pixel est une ni disponible sous forme de
sorte de Point
source
Pixel
couleur
colorier(Color) la sous-classe
toString()
...
L.
c Tichit, 2015-2016 POO et Java 4/1
Lh
eritage
Heritage...
L.
c Tichit, 2015-2016 POO et Java 5/1
Lh
eritage
Heritage...
Fichier Point.java
exemple, avec
class Point {
int x, y;
Point point1, point2;
double distance(Point p) { Pixel pixel1, pixel2;
int dx = x - p.x;
int dy = y - p.y;
return Math.sqrt(dx * dx + dy * dy); initialisation de ces variables
}
...
} ces expressions sont legitimes :
point1.distance(point2)
Fichier Pixel.java
L.
c Tichit, 2015-2016 POO et Java 5/1
Lh
eritage
Heritage...
Fichier Point.java
exemple, avec
class Point {
int x, y;
Point point1, point2;
double distance(Point p) { Pixel pixel1, pixel2;
int dx = x - p.x;
int dy = y - p.y;
return Math.sqrt(dx * dx + dy * dy); initialisation de ces variables
}
...
} ces expressions sont legitimes :
point1.distance(point2)
Fichier Pixel.java
pixel1.distance(point2)
class Pixel extends Point {
Color couleur;
...
}
L.
c Tichit, 2015-2016 POO et Java 5/1
Lh
eritage
Heritage...
Fichier Point.java
exemple, avec
class Point {
int x, y;
Point point1, point2;
double distance(Point p) { Pixel pixel1, pixel2;
int dx = x - p.x;
int dy = y - p.y;
return Math.sqrt(dx * dx + dy * dy); initialisation de ces variables
}
...
} ces expressions sont legitimes :
point1.distance(point2)
Fichier Pixel.java
pixel1.distance(point2)
class Pixel extends Point {
Color couleur;
point1.distance(pixel2)
...
}
L.
c Tichit, 2015-2016 POO et Java 5/1
Lh
eritage
Heritage...
Fichier Point.java
exemple, avec
class Point {
int x, y;
Point point1, point2;
double distance(Point p) { Pixel pixel1, pixel2;
int dx = x - p.x;
int dy = y - p.y;
return Math.sqrt(dx * dx + dy * dy); initialisation de ces variables
}
...
} ces expressions sont legitimes :
point1.distance(point2)
Fichier Pixel.java
pixel1.distance(point2)
class Pixel extends Point {
Color couleur;
point1.distance(pixel2)
}
... pixel1.distance(pixel2)
L.
c Tichit, 2015-2016 POO et Java 5/1
Lh
eritage
Heritage et constructeur
un Point
x y couleur
un Pixel
L.
c Tichit, 2015-2016 POO et Java 6/1
Lh
eritage
Heritage et constructeur
un Point
x y couleur
un Pixel
L.
c Tichit, 2015-2016 POO et Java 6/1
Lh
eritage
Heritage et constructeur
un Point
x y couleur
un Pixel
L.
c Tichit, 2015-2016 POO et Java 6/1
Lh
eritage
Heritage et constructeur
un Point
x y couleur
un Pixel
L.
c Tichit, 2015-2016 POO et Java 6/1
Lh
eritage
Heritage et constructeur
Constructeur probl
ematique :
L.
c Tichit, 2015-2016 POO et Java 7/1
Lh
eritage
Heritage et constructeur
Constructeur probl
ematique :
L.
c Tichit, 2015-2016 POO et Java 7/1
Lh
eritage
Heritage et constructeur
Constructeur probl
ematique :
L.
c Tichit, 2015-2016 POO et Java 7/1
Lh
eritage
Heritage et constructeur
La solution :
Fichier Pixel.java
class Pixel extends Point {
Color couleur;
Pixel(int a, int b, Color c) {
super(a, b);
couleur = c;
}
...
}
L.
c Tichit, 2015-2016 POO et Java 8/1
Lh
eritage
Heritage et constructeur
La solution :
Fichier Pixel.java
class Pixel extends Point {
Color couleur;
Pixel(int a, int b, Color c) {
super(a, b);
couleur = c;
}
...
}
cela se lit : pour initialiser un Pixel avec a, b et c, commencez par linitialiser en tant
que Point avec a et b, puis donnez ` a couleur la valeur c
L.
c Tichit, 2015-2016 POO et Java 8/1
Lh
eritage
Heritage et constructeur
La solution :
Fichier Pixel.java
class Pixel extends Point {
Color couleur;
Pixel(int a, int b, Color c) {
super(a, b);
couleur = c;
}
...
}
cela se lit : pour initialiser un Pixel avec a, b et c, commencez par linitialiser en tant
que Point avec a et b, puis donnez ` a couleur la valeur c
lexpression super(...); doit
etre la premi`
ere instruction dun constructeur
L.
c Tichit, 2015-2016 POO et Java 8/1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 9/1
Lh
eritage
Fichier Meuble.java
class Meuble {
protected Meuble(...) {
...
} Meuble
...
}
Fichier Chaise.java
class Chaise extends Meuble {
public Chaise(...) { Chaise Table
super(...);
...
}
...
}
L.
c Tichit, 2015-2016 POO et Java 9/1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 10 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 10 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 10 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 10 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 10 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 11 / 1
Lh
eritage
class Point {
...
void deplacer(int dx, int dy) {
changement de la position du point
}
}
L.
c Tichit, 2015-2016 POO et Java 12 / 1
Lh
eritage
class Point {
...
void deplacer(int dx, int dy) {
changement de la position du point
}
}
L.
c Tichit, 2015-2016 POO et Java 12 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 13 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 13 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 13 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 13 / 1
Lh
eritage
Fichier Point.java
class Point { Un point sous forme de
private int x, y; chane :
... "(10,20)"
public String toString() {
return "(" + x + "," + y + ")";
} Un pixel sous forme de
... chane :
} "(10,20)-red"
Fichier Pixel.java
class Pixel extends Point {
private Color couleur;
...
public String toString() {
return "(" + x + "," + y + ")-" + couleur; Erreur :
} x et y sont priv
es.
...
}
L.
c Tichit, 2015-2016 POO et Java 14 / 1
Lh
eritage
Fichier Point.java
Un point sous forme de
class Point {
protected int x, y; chane :
... "(10,20)"
public String toString() {
return "(" + x + "," + y + ")"; Un pixel sous forme de
} chane :
...
} "(10,20)-red"
Fichier Pixel.java
class Pixel extends Point { Cela passe, mais cest
private Color couleur; mal concu : la classe
...
public String toString() { Pixel sappuie sur des
return "(" + x + "," + y + ")-" + couleur; d
etails internes de
}
... la classe Point
}
L.
c Tichit, 2015-2016 POO et Java 15 / 1
Lh
eritage
Fichier Point.java
class Point {
private int x, y; Un point sous forme de
... chane :
public String toString() { "(10,20)"
return "(" + x + "," + y + ")";
}
Un pixel sous forme de
...
} chane :
"(10,20)-red"
Fichier Pixel.java
class Pixel extends Point {
private Color couleur;
...
public String toString() {
return super.toString() + "-" + couleur;
} La bonne solution
...
}
L.
c Tichit, 2015-2016 POO et Java 16 / 1
Lh
eritage
Object
L.
c Tichit, 2015-2016 POO et Java 17 / 1
Lh
eritage
a b
10 20
x y
L.
c Tichit, 2015-2016 POO et Java 18 / 1
Lh
eritage
a b
10 20
x y
a b c
10 20 10 20
x y x y
L.
c Tichit, 2015-2016 POO et Java 18 / 1
Lh
eritage
a b c
10 20 10 20
x y x y
a == b vaut true
a == c vaut false
L.
c Tichit, 2015-2016 POO et Java 19 / 1
Lh
eritage
a b c
10 20 10 20
x y x y
a == b vaut true
a == c vaut false
L.
c Tichit, 2015-2016 POO et Java 19 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 20 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 20 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 20 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 20 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 20 / 1
Lh
eritage
Operateur instanceof
L.
c Tichit, 2015-2016 POO et Java 21 / 1
Lh
eritage
Operateur instanceof
Fichier Point.java
class Point {
private int x, y;
...
public boolean equals(Point p) {
return p.x == x && p.y == y;
}
...
}
L.
c Tichit, 2015-2016 POO et Java 21 / 1
Lh
eritage
Operateur instanceof
Fichier Point.java
class Point {
private int x, y;
... Erreur ! Cette m
ethode
public boolean equals(Point p) { est correcte, mais elle
return p.x == x && p.y == y; nest pas une
} red
efinition de
... equals(Object p)
}
L.
c Tichit, 2015-2016 POO et Java 21 / 1
Lh
eritage
Operateur instanceof
Fichier Point.java
class Point {
private int x, y;
...
public boolean equals(Object p) {
return p instanceof Point && La premi` ere condition
((Point)p).x == x && ((Point)p).y == y; justifie les deux
} changements de type
}
L.
c Tichit, 2015-2016 POO et Java 22 / 1
Lh
eritage
les types primitifs ne sont pas dans larbre des classes ; regrettable car
cela brouille le discours (deux poids, deux mesures)
de nombreux outils ne sont definis que pour les objets
L.
c Tichit, 2015-2016 POO et Java 23 / 1
Lh
eritage
les types primitifs ne sont pas dans larbre des classes ; regrettable car
cela brouille le discours (deux poids, deux mesures)
de nombreux outils ne sont definis que pour les objets
les classes-enveloppes permettent de deguiser en objets les valeurs de types
primitifs :
Byte Float
Short Double
Integer Character
Long Boolean
L.
c Tichit, 2015-2016 POO et Java 23 / 1
Lh
eritage
les types primitifs ne sont pas dans larbre des classes ; regrettable car
cela brouille le discours (deux poids, deux mesures)
de nombreux outils ne sont definis que pour les objets
les classes-enveloppes permettent de deguiser en objets les valeurs de types
primitifs :
Byte Float
Short Double
Integer Character
Long Boolean
L.
c Tichit, 2015-2016 POO et Java 23 / 1
Lh
eritage
les types primitifs ne sont pas dans larbre des classes ; regrettable car
cela brouille le discours (deux poids, deux mesures)
de nombreux outils ne sont definis que pour les objets
les classes-enveloppes permettent de deguiser en objets les valeurs de types
primitifs :
Byte Float
Short Double
Integer Character
Long Boolean
L.
c Tichit, 2015-2016 POO et Java 23 / 1
Lh
eritage
les types primitifs ne sont pas dans larbre des classes ; regrettable car
cela brouille le discours (deux poids, deux mesures)
de nombreux outils ne sont definis que pour les objets
les classes-enveloppes permettent de deguiser en objets les valeurs de types
primitifs :
Byte Float
Short Double
Integer Character
Long Boolean
L.
c Tichit, 2015-2016 POO et Java 23 / 1
Lh
eritage
les types primitifs ne sont pas dans larbre des classes ; regrettable car
cela brouille le discours (deux poids, deux mesures)
de nombreux outils ne sont definis que pour les objets
les classes-enveloppes permettent de deguiser en objets les valeurs de types
primitifs :
Byte Float
Short Double
Integer Character
Long Boolean
`
a partir de Java 5, emballage et deballage sont devenus automatiques.
L.
c Tichit, 2015-2016 POO et Java 23 / 1
Lh
eritage
Polymorphisme
L.
c Tichit, 2015-2016 POO et Java 24 / 1
Lh
eritage
Polymorphisme
L.
c Tichit, 2015-2016 POO et Java 24 / 1
Lh
eritage
Polymorphisme
L.
c Tichit, 2015-2016 POO et Java 24 / 1
Lh
eritage
Polymorphisme
L.
c Tichit, 2015-2016 POO et Java 24 / 1
Lh
eritage
Polymorphisme
L.
c Tichit, 2015-2016 POO et Java 24 / 1
Lh
eritage
Polymorphisme
L.
c Tichit, 2015-2016 POO et Java 24 / 1
Lh
eritage
Polymorphisme
L.
c Tichit, 2015-2016 POO et Java 24 / 1
Lh
eritage
Generalisation
une m
ethode attendant un point
L.
c Tichit, 2015-2016 POO et Java 25 / 1
Lh
eritage
Generalisation
une m
ethode attendant un point
un appel de cette m
ethode
...
Pixel pix = new Pixel(10, 20, pink);
...
unTraitement(pix);
...
L.
c Tichit, 2015-2016 POO et Java 25 / 1
Lh
eritage
Generalisation
une m
ethode attendant un point
un appel de cette m
ethode
...
Pixel pix = new Pixel(10, 20, pink);
...
unTraitement(pix);
...
L.
c Tichit, 2015-2016 POO et Java 25 / 1
Lh
eritage
Generalisation
x y couleur
L.
c Tichit, 2015-2016 POO et Java 26 / 1
Lh
eritage
Generalisation
x y couleur
Point pt = pix;
...
L.
c Tichit, 2015-2016 POO et Java 26 / 1
Lh
eritage
Generalisation
x y couleur
Point pt = pix;
...
pix pt
x y couleur
L.
c Tichit, 2015-2016 POO et Java 26 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 27 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 27 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 27 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 27 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 27 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 27 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 28 / 1
Lh
eritage
Particularisation
L.
c Tichit, 2015-2016 POO et Java 28 / 1
Lh
eritage
Particularisation
x y
L.
c Tichit, 2015-2016 POO et Java 28 / 1
Lh
eritage
Particularisation
x y
L.
c Tichit, 2015-2016 POO et Java 28 / 1
Lh
eritage
Les collections (classes Collection, List, Vector, Set, Map, etc.) de la biblioth`
eque Java
sont d
efinies en toute gen
eralit
e
L.
c Tichit, 2015-2016 POO et Java 29 / 1
Lh
eritage
Les collections (classes Collection, List, Vector, Set, Map, etc.) de la biblioth`
eque Java
sont d
efinies en toute gen
eralit
e
leurs
el
ements sont d
eclar
es sous le type Object
L.
c Tichit, 2015-2016 POO et Java 29 / 1
Lh
eritage
Les collections (classes Collection, List, Vector, Set, Map, etc.) de la biblioth`
eque Java
sont d
efinies en toute gen
eralit
e
leurs
el
ements sont d
eclar
es sous le type Object
exemple : la classe Stack (pile) :
L.
c Tichit, 2015-2016 POO et Java 29 / 1
Lh
eritage
Exemple dutilisation de la pile : un programme cr ee des points, les exploite une premi`
ere
fois en les empilant, puis une deuxi`eme fois en les d
epilant
L.
c Tichit, 2015-2016 POO et Java 30 / 1
Lh
eritage
Exemple dutilisation de la pile : un programme cr ee des points, les exploite une premi`
ere
fois en les empilant, puis une deuxi`eme fois en les d
epilant
d
eclaration et initialisation de la pile
Stack pile = new Stack();
L.
c Tichit, 2015-2016 POO et Java 30 / 1
Lh
eritage
Exemple dutilisation de la pile : un programme cr ee des points, les exploite une premi`
ere
fois en les empilant, puis une deuxi`eme fois en les d
epilant
d
eclaration et initialisation de la pile
Stack pile = new Stack();
empilement des points
for (int i = 0; i < n; i++) {
Point pt = new Point(arguments);
exploitation de pt
pile.push(pt);
}
L.
c Tichit, 2015-2016 POO et Java 30 / 1
Lh
eritage
Exemple dutilisation de la pile : un programme cr ee des points, les exploite une premi`
ere
fois en les empilant, puis une deuxi`eme fois en les d
epilant
d
eclaration et initialisation de la pile
Stack pile = new Stack();
empilement des points
for (int i = 0; i < n; i++) {
Point pt = new Point(arguments);
exploitation de pt
pile.push(pt); gen
eralisation de pt
}
L.
c Tichit, 2015-2016 POO et Java 30 / 1
Lh
eritage
Exemple dutilisation de la pile : un programme cr ee des points, les exploite une premi`
ere
fois en les empilant, puis une deuxi`eme fois en les d
epilant
d
eclaration et initialisation de la pile
Stack pile = new Stack();
empilement des points
for (int i = 0; i < n; i++) {
Point pt = new Point(arguments);
exploitation de pt
pile.push(pt); gen
eralisation de pt
}
d
epilement des points
while (!pile.empty()) {
Point pt = (Point) pile.pop();
exploitation de pt
}
L.
c Tichit, 2015-2016 POO et Java 30 / 1
Lh
eritage
Exemple dutilisation de la pile : un programme cr ee des points, les exploite une premi`
ere
fois en les empilant, puis une deuxi`eme fois en les d
epilant
d
eclaration et initialisation de la pile
Stack pile = new Stack();
empilement des points
for (int i = 0; i < n; i++) {
Point pt = new Point(arguments);
exploitation de pt
pile.push(pt); gen
eralisation de pt
}
d
epilement des points
while (!pile.empty()) {
Point pt = (Point) pile.pop(); particularisation de pt
exploitation de pt
}
L.
c Tichit, 2015-2016 POO et Java 30 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 31 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 31 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 31 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 31 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 31 / 1
Lh
eritage
Usager
emettreTicket()
...
Habituel
emettreTicket()
...
Abonn
emettreTicket()
...
Rsident
emettreTicket()
...
L.
c Tichit, 2015-2016 POO et Java 32 / 1
Lh
eritage
Usager
emettreTicket()
... avec la d
eclaration :
Usager unClient;
Habituel
emettreTicket()
...
Abonn
emettreTicket()
...
Rsident
emettreTicket()
...
L.
c Tichit, 2015-2016 POO et Java 32 / 1
Lh
eritage
Usager
emettreTicket()
... avec la d
eclaration :
Usager unClient;
Habituel une expression comme
emettreTicket() unClient.emettreTicket();
...
pose deux questions :
Abonn cette expression passe-t-elle la compilation ?
emettreTicket()
...
Rsident
emettreTicket()
...
L.
c Tichit, 2015-2016 POO et Java 32 / 1
Lh
eritage
Usager
emettreTicket()
... avec la d
eclaration :
Usager unClient;
Habituel une expression comme
emettreTicket() unClient.emettreTicket();
...
pose deux questions :
Abonn cette expression passe-t-elle la compilation ?
emettreTicket()
Oui, car emettreTicket() est membre de la classe Usager
...
Rsident
emettreTicket()
...
L.
c Tichit, 2015-2016 POO et Java 32 / 1
Lh
eritage
Usager
emettreTicket()
... avec la d
eclaration :
Usager unClient;
Habituel une expression comme
emettreTicket() unClient.emettreTicket();
...
pose deux questions :
Abonn cette expression passe-t-elle la compilation ?
emettreTicket()
Oui, car emettreTicket() est membre de la classe Usager
... peut-on dire quel sera son effet `
a lex
ecution ?
Rsident
emettreTicket()
...
L.
c Tichit, 2015-2016 POO et Java 32 / 1
Lh
eritage
Usager
emettreTicket()
... avec la d
eclaration :
Usager unClient;
Habituel une expression comme
emettreTicket() unClient.emettreTicket();
...
pose deux questions :
Abonn cette expression passe-t-elle la compilation ?
emettreTicket()
Oui, car emettreTicket() est membre de la classe Usager
... peut-on dire quel sera son effet `
a lex
ecution ?
Non, car la methode emettreTicket() etant red
efinie,
Rsident cela d
ependra de la valeur effective de unClient au
emettreTicket() moment de lappel.
...
L.
c Tichit, 2015-2016 POO et Java 32 / 1
Lh
eritage
Usager
emettreTicket()
... avec la d
eclaration :
Usager unClient;
Habituel une expression comme
emettreTicket() unClient.emettreTicket();
...
pose deux questions :
Abonn cette expression passe-t-elle la compilation ?
emettreTicket()
Oui, car emettreTicket() est membre de la classe Usager
... peut-on dire quel sera son effet `
a lex
ecution ?
Non, car la methode emettreTicket() etant red
efinie,
Rsident cela d
ependra de la valeur effective de unClient au
emettreTicket() moment de lappel.
...
L.
c Tichit, 2015-2016 POO et Java 32 / 1
Lh
eritage
Lexemple magique
class ObjetGraphique {
public void seDessiner() {
...
}
}
L.
c Tichit, 2015-2016 POO et Java 33 / 1
Lh
eritage
Lexemple magique
class ObjetGraphique {
public void seDessiner() {
...
}
}
class Triangle extends ObjetGraphique {
public void seDessiner() {
op
erations pour dessiner un triangle
}
}
L.
c Tichit, 2015-2016 POO et Java 33 / 1
Lh
eritage
Lexemple magique
class ObjetGraphique {
public void seDessiner() {
...
}
}
class Triangle extends ObjetGraphique {
public void seDessiner() {
op
erations pour dessiner un triangle
}
}
class Cercle extends ObjetGraphique {
public void seDessiner() {
op
erations pour dessiner un cercle
}
}
L.
c Tichit, 2015-2016 POO et Java 33 / 1
Lh
eritage
Lexemple magique
class ObjetGraphique {
public void seDessiner() {
...
}
} Objet
class Triangle extends ObjetGraphique { Graphique
public void seDessiner() {
op
erations pour dessiner un triangle
} Triangle Cercle
}
class Cercle extends ObjetGraphique {
public void seDessiner() {
op
erations pour dessiner un cercle
}
Rectangle
}
class Rectangle extends ObjetGraphique {
public void seDessiner() {
op
erations pour dessiner un rectangle
}
}
L.
c Tichit, 2015-2016 POO et Java 33 / 1
Lh
eritage
Lexemple magique
class ObjetGraphique {
public void seDessiner() {
System.out.println("ERREUR");
}
} Objet
class Triangle extends ObjetGraphique { Graphique
public void seDessiner() {
op
erations pour dessiner un triangle
} Triangle Cercle
}
class Cercle extends ObjetGraphique {
public void seDessiner() {
op
erations pour dessiner un cercle
}
Rectangle
}
class Rectangle extends ObjetGraphique {
public void seDessiner() {
op
erations pour dessiner un rectangle
}
}
L.
c Tichit, 2015-2016 POO et Java 33 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 34 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 34 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 34 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 34 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 34 / 1
Lh
eritage
L.
c Tichit, 2015-2016 POO et Java 34 / 1