Poo Java Chap5 2
Poo Java Chap5 2
N.EL FADDOULI
2020-2021
Relation Uses
Relation d'héritage
Les sous-classes
Héritage simple
Membres protégés
Constructeurs
Le polymorphisme
Les interfaces
1
04/05/2021
Exemple: Employe
EST-UN - nom EST-UN
- salaire
+ Affich_Details( ) { ….. }
…..
Manager Ingénieur
- Departement ……
POO \ N.EL FADDOULI 84
2
04/05/2021
Exemple: Personnel
- nom
- datnais
……
Enseignant Chercheur
- Matières - domaine
…… - nbpublication
public double salaire( ) {...} public double salaire( ) {...}
EnseignatChercheur
…….
POO \ N.EL FADDOULI 86
3
04/05/2021
Exemple:
public class Employe
{ protected String nom; protected float salaire;
public Employe (String a, float b) {nom=a; salaire=b; } …..
}
Exemple:
public class Manager extends Employe
public class Employe { private String dept;
{ // on peut utiliser les attributs hérités de la classe Employe
protected String nom; public float augmentation(float t)
protected float salaire; {return salaire *(1+t); }
….. …..
} }
POO \ N.EL FADDOULI 89
4
04/05/2021
L'héritage en java
Exercice:
1. Reprendre la classe Employe (attributs protected).
2. Compléter cette classe par:
- Un constructeur ayant deux arguments (valeur de nom et salaire)
- Des accesseurs
- Une méthode toString qui retourne une chaîne composée par le
nom et le salaire de l'employé.
3. Reprendre la classe dérivée Manager qui contient:
- Un attribut departement (private)
- Un constructeur ayant trois arguments (les valeurs des attributs: nom,
salaire et departement)
- Une méthode toString qui retourne une chaîne composée par le nom,
le salaire et le département du manager
4. Tester les deux classes.
POO \ N.EL FADDOULI 91
5
04/05/2021
6
04/05/2021
Le polymorphisme (1)
Il est possible de créer un objet de la classe Manager (classe fille) et
d'affecter sa référence à une variable de type Employe (classe mère):
Une variable est polymorphe: elle peut faire référence à des objets
de formes différentes.
POO \ N.EL FADDOULI 94
Le polymorphisme (2)
Dans l'instruction System.out.println(e3.toString()); c'est la méthode
définie dans la classe Manager qui sera appelée bien que e3 soit une
référence de type Employe.
Liaison dynamique
7
04/05/2021
Le polymorphisme (3)
L'opérateur instanceof: Comme il est possible d'utiliser des objets
via des références à leur classe parent, il est parfois utile de connaître
les objets réels qu'on a.
Exemple: On a une fonction qui prend comme paramètre une
référence à un objet de la classe Employe. Cette fonction peut
accepter un paramètre de la classe Employe ou de l'une de ses
classes dérivées.
Peut faire référence à un objet de type
Employe ou d'une classe dérivée
public static void Traiter (Employe e)
{ if ( e instanceof Manager) { //code1: traiter un Manager }
else if ( e instanceof Ingenieur ) { // code2: traiter un Ingénieur }
else { // code3: traiter un autre type d'employés } }
Exemple d'appel: Manager e1 = new Manager(….);
Employe.Traiter (e1);
POO \ N.EL FADDOULI 96
Classe abstraite
Une classe est dite abstraite si elle annonce une méthode sans la
définir.
8
04/05/2021
Classe abstraite
Exemple 2:
public abstract class Forme
{ ..... // attributs, méthodes concrètes et constructeurs
public abstract void Dessiner();
public abstract void Deplacer(int nb_pixels);
}
class Rectangle extends Forme
{ ….. // attributs et méthodes spécifiques, constructeurs
public void Dessiner() {…….....}
public void Deplacer( int d) {…….....}
}
POO \ N.EL FADDOULI 98
Exercice (1)
Définir une classe Point qui contient:
– Deux attributs privés X et Y de type double.
– Un constructeur ayant deux paramètres (valeurs initiale de X et Y)
– Un constructeur ayant un paramètre de type Point (copier un point
dans un autre).
– Un modificateur et un accesseur pour chaque attribut.
– Une méthode statique Distance ayant deux paramètres de type
Point. Elle retourne la distance entre ces deux points.
Tester la classe Point: Créer deux points p1 et p2 - Afficher la
distance qui les sépare – Créer un point p3 à partir de p2 – Modifier les
coordonnées de p2- Calculer et afficher la distance qui sépare p1 et p3.
9
04/05/2021
Exercice (2)
Exercice (3)
Définir une classe Cercle qui hérite de la classe Forme et qui a:
10
04/05/2021
Exercice (4)
Exercice (5)
11
04/05/2021
Exercice (6)
Exercice (7)
12
04/05/2021
13
04/05/2021
14
04/05/2021
Capturer des similarités entre classes sans lien, sans forcer une
relation de classe.
– Des méthodes par défaut dont la définition sera partagée par toutes les
classes qui vont implémenter l'interface. Ces méthodes ont un corps dans
l'interface et sont qualifiées par le mot-clé default.
15
04/05/2021
// remplacement de traiter2
public void traiter2(int n) { System.out.println("Cls_A -> traiter2 "+n); }
Exercice 1 (1/2)
Objectif: On veut créer l'interface IPersonne et les deux classes
Personne et Profil
- Libelle : String
16
04/05/2021
Exercice 1 (2/2)
2. Créer les classes Personne et Profil dans le package emi.rt.bean
dont chacune contient un constructeur sachant que:
Exercice 2 (1/2)
Objectif: On veut créer les deux interfaces IOperation et IAffichage
ainsi que les deux classes Complexe et Reel
17
04/05/2021
Exercice 2 (2/2)
2. Créer les classes Complexe et Reel dans le package emi.rt.bean dont
chacune contient un constructeur, sachant que:
18