Académique Documents
Professionnel Documents
Culture Documents
A.Hammache 1
Plan du Chapitre
Composition
Héritage
Polymorphisme
Les packages
A.Hammache 2
Relations entre classes
Etudiant Employé
30/08/2020 3
Composition
Un objet peut être composé à partir d’autres objets
1. Chaque objet composant est un attribut de l'objet composé.
2. Généralement, on fait appel au constructeur de l'objet composant dans le
constructeur de l'objet composé.
30/08/2020 Hammache.A 4
Héritage
Héritage : mécanisme permettant à une classe (sous-classe) d’hériter
(réutiliser) et/ou de redéfinir les propriétés d’une autre classe
(superclasse). La relation d’héritage est une relation de généralisation
/ spécialisation.
Hom m e
A g e : In t e g e r
T a ille : D o u b le
P o id s : D o u b le
N o m : S t rin g Superclasse
p a rle ()
m a n g e ()
b o it ()
d o rt ()
Lien d’héritage
C o n d u c teu r
c o n d u ire ()
Sous-classe
d e m a rre r()
A //attributs A
Superclasse
//Méthodes A
}
Est un
class B exetends A{
B //attributs B
Sous-classe
//Méthodes B
30/08/2020 7
Héritage
Personne
class Personne
nom : String
{ date_naissance : Date
private String nom;
private Date date_naissance;
// ...
}
Employe
class Employe extends Personne salaire : Double
{
private float salaire;
// ...
}
// ...
}
30/08/2020 9
Héritage
Pour forcer l'appel d'un constructeur précis, on utilisera le mot
réservé super. Cet appel devra être la première instruction du
constructeur
30/08/2020 12
Polymorphisme
Types
– Statique
– Dynamique dit « d’héritage »
Mise en œuvre
1. Références de type super classe
2. Recherche dynamique de méthode:
déclenchement de la méthode la plus spécifique
d’un objet, c'est-à-dire celle correspondant au
type réel de l'objet, déterminé à l'exécution
uniquement (et non le type de la référence, seul
type connu à la compilation, qui peut être plus
générique).
30/08/2020 13
Polymorphisme
Employe
salaire : Double
calculePrime()
calculePrime()
30/08/2020 14
Classes abstraites
Il peut être nécessaire au programmeur de créer une
classe déclarant une méthode sans la définir (c'est-à-
dire sans en donner le code). La définition du code est
dans ce cas est laissée aux sous-classes.
Une telle classe est appelée classe abstraite.
Elle doit être notée avec le mot réservé abstract.
Toutes les méthodes de cette classe qui ne sont pas
définies doivent elles aussi être marquées par le mot
réservé abstract.
Une classe abstraite ne peut pas être instanciée.
Impossible de faire new ClassAbstraite(...)
30/08/2020 15
Classes abstraites
public abstract class Forme {
protected double x, y;
Forme public void deplacer(double dx, double dy) {
<<abstract>> x += dx; y+= dy;
}
perimetre() public abstract double perimetre();
surface() public abstract double surface();
}
public class Rectangle extends Forme {
Rectangle Cercle private hauteur;
hauteur rayon private largeur;
largeur perimetre() public double perimetre()
perimetre() surface() {
surface() return 2*(hauteur+largeur);
}
public double surface(){
Return (hauteur*largeur);
30/08/2020 } 16
Les Interfaces
Une interface définit un ou plusieurs services offerts
Elle est composée d’un ensemble de méthodes abstraites et de
constantes (« static » et « final »)
Une classe peut implémenter une ou plusieurs interfaces
Elle doit fournir une implémentation pour chaque méthode
public interface A{
Interface A
Interface //attributs (constantes)
//Méthodes abstraites
}
implements
class B implements A{
Classe B //attributs de B
Classe //Méthodes
}
30/08/2020 17
Les Interfaces
Comparable public interface Comparable{
<<interface>> public int estPlusGrand (Comparable other);
}
estPlusGrand()
class Rectangle implements Comparable {
implements private int largeur = 0; private int hauteur = 0;
public int getSurface() { return largeur *
Rectangle Employé hauteur; }
30/08/2020 19
Interfaces et types
• Une interface définit un nouveau type
• Des objets différents peuvent répondre au même
message à condition qu’ils implémentent la même
interface
• L’opérateur « instanceof » peut être utilisé pour
savoir si un objet implémente une interface donnée
Affichable p1 = new Point();
30/08/2020 20
Quand utiliser les interfaces ?
• Pour définir des services techniques
• Pour contourner le fait que Java ne supporte pas
l’héritage multiple
• Interface vs Héritage :
– On utilise l’héritage quand un objet est un sous-type d’un
autre
– On utilise une interface pour décrire le fait qu’une classe
implémente un service particulier
Figure Comparable
extends
implements
Rectangle
30/08/2020 21
Les packages
Un package est une bibliothèque de classes
On regroupe les classes d’un même domaine dans un
package
Meilleure réutilisation de code
Elimination des conflits de noms : ainsi vous pouvez
décrire deux classe qui porte le même nom mais qui
appartient à deux packages différents.
Apporte un niveau supplémentaire d’encapsulation.
30/08/2020 22
Les packages
public
protected
friendly
(par défaut)
private
30/08/2020 25