Académique Documents
Professionnel Documents
Culture Documents
Licence SIR
(Systèmes informatiques Répartis)
Plan
Plan
Introduction
Délégation
public class C1 {
public class C2 {
private C2 refc2;
...
...
}
}
La classe cliente C1 possède une référence de type de la classe
serveuse C2.
Délégation : exemple
Le point peut être partagé
par plusieurs instances d’objets
public class Cercle {
private Point centre; (éventuellement d’autres classes).
private double r;
public Cercle(Point centre, double r) { Point p1 = new Point(10,0);
this.centre = centre; Cercle c1 = new Cercle(p1,10);
this.r = r; Cercle c2 = new Cercle(p1,20);
}
c2.deplace(10,0); Affecte aussi c1
...
public void deplace(double dx,double dy)
{
centre.deplace(dx,dy);
}
}
Délégation : exemple
Le Point représentant le centre n’est
pas partagé (un Point ne peut être
liée qu’à un seul Cercle)
Héritage
Généralisation/Spécialisation
La généralisation exprime une relation ”est-un” entre une classe et
sa super-classe (chaque instance de la classe est aussi décrite de façon
plus générale par la super- classe)=> factorisation les propriétés
communes aux sous-classes.
La spécialisation exprime une relation de ”particularisation” entre
une classe et sa sous-classe (chaque instance de la sous-classe est
décrite de manière plus spécifique)=> modification incrémentielle
les descriptions existantes.
L’héritage
import java.awt.Color;
public class PointCouleur extends Point {
Color c;
public PointCouleur(double x, double y, Color c){
super(x,y);
this.c = c;
}
}
Laila AMIR Programmations Orientées Objet 13 / 30
Réutilisation des classes Délégation
Méthodes et classes abstraites, Interface Héritage
Exemple 2
// Animal.java
public class Animal
{
private int poids;
public void dormir () { System.out.println (”Méthode dormir de Animal”); }
public void jouer () { System.out.println (”Méthode jouer de Animal”);}
public void seReproduire () { System.out.println (”Méthode sereproduire de
Animal”); }
}
// Mammifere.java
public class Mammifere extends Animal
{
public void seReproduire () { System.out.println (”Méthode seReproduire de
Mammifère”);}
}
// Chat.java
public class Chat extends Mammifere{
public void jouer () { System.out.println (”Méthode jouer de Chat”);}
public void miauler () { System.out.println (”Méthode miauler de Chat”);}
}
// RunChat.java
public class RunChat{
L’exécution de RunChat donnera :
public static void main (String []args){
Chat minet = new Chat();
minet.dormir(); Méthode dormir de Animal
minet.seReproduire(); Méthode seReproduire de Mammifère
minet.jouer(); Méthode jouer de Chat
}
}
Le mot-clé super
Plan
Une méthode déclarée abstract ne peut être exécutée. En fait, elle n’a pas
d’existence réelle. Sa déclaration indique simplement que les classes
dérivées doivent la redéfinir.
La méthode crie() de la
classe Animal est déclarée abstract class Animal {
abstract, ce qui signifie que // champs
le cri d’un animal est une // méthodes
notion abstraite. abstract void crie() ;
}
La méthode ainsi définie
indique qu’une sous-classe De cette façon, il n’est plus possible de
devra définir la méthode de créer un animal en instanciant la classe
façon concrète. Animal.
Les interfaces
Elles peuvent être étendues comme les autres classes, avec une
différence majeure : une interface peut dériver de plusieurs autres
interfaces. En revanche, une classe ne peut pas dériver de plusieurs
classes (pas d’héritage multiple de classes).
Une interface peut être dotée des mêmes droits d’accès qu’une classe
(public ou droit de paquetage).
il n’est pas nécessaire de mentionner les mots-clés public et abstract
(on peut quand même le faire).