0% ont trouvé ce document utile (0 vote)
30 vues11 pages

Classe Abstraite et Interfaces en Java

Le chapitre 5 traite des classes abstraites et des interfaces en programmation orientée objet, en mettant l'accent sur leur utilité pour la factorisation du code et le polymorphisme. Les classes abstraites permettent de définir des concepts incomplets à implémenter dans des sous-classes, tandis que les interfaces offrent une flexibilité accrue en permettant à plusieurs classes de réaliser les mêmes opérations sans héritage multiple. Des exercices pratiques sont proposés pour illustrer la création et l'utilisation de classes abstraites et d'interfaces.

Transféré par

hamza.zitou97
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues11 pages

Classe Abstraite et Interfaces en Java

Le chapitre 5 traite des classes abstraites et des interfaces en programmation orientée objet, en mettant l'accent sur leur utilité pour la factorisation du code et le polymorphisme. Les classes abstraites permettent de définir des concepts incomplets à implémenter dans des sous-classes, tandis que les interfaces offrent une flexibilité accrue en permettant à plusieurs classes de réaliser les mêmes opérations sans héritage multiple. Des exercices pratiques sont proposés pour illustrer la création et l'utilisation de classes abstraites et d'interfaces.

Transféré par

hamza.zitou97
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Département d’Informatique Chapitre 5

Filière SMI - Semestre 6


2022-2023 Classe abstraite
Exemple introductif
• un grand classique: les formes géométriques
– on veut définir une application permettant de manipuler des formes géométriques
(triangles, rectangles, cercles…).
– chaque forme est définie par sa position dans le plan
– chaque forme peut être déplacée (modification de sa position), peut calculer son
périmètre, sa surface

1 Factoriser le code ? 3

Chapitre 5
Classe abstraite
Exemple introductif

2 4

1
Chapitre 5 Chapitre 5
Classe abstraite Classe abstraite
Exemple introductif Exemple introductif
• Utilité:
– définir des concepts incomplets qui devront être implémentés dans les sous classes
– factoriser le code
– les opérations abstraites sont particulièrement utiles pour mettre en oeuvre le
polymorphisme.
• l'utilisation du nom d'une classe abstraite comme type pour une (des) référence(s) est
toujours possible (et souvent souhaitable !!!)

Une solution propre et élégante : les classes abstraites 5 7

Chapitre 5 Chapitre 5
Classe abstraite Classe abstraite
Exemple introductif Intérêts
la classe doit être • Classe abstraite: classe non instanciable, c'est à dire qu'elle n'admet pas
déclarée comme étant d'instances directes.
Classe explicitement abstraite – Impossible de faire new ClasseAbstraite(…);
abstraite – mais une classe abstraite peut néanmoins avoir un ou des constructeurs

on spécifie qu'un objet de


• opération abstraite: opération n'admettant pas d'implémentation
type Forme aura une
méthode périmètre et – au niveau de la classe dans laquelle elle est déclarée, on ne peut pas dire comment la
une méthode surface réaliser.
– Une classe pour laquelle au moins une opération abstraite est déclarée est une classe
abstraite (l'inverse n'est pas vrai).
Méthodes
par contre on ne sait pas
abstraites
comment cela sera
implémenté →
méthodes sans corps :
; au lieu de { … }

6 8

2
Chapitre 5 Chapitre 5
Classe abstraite Classe abstraite
Intérêts Polymorphisme
• Une classe abstraite est une description d'objets destinée à être héritée par des
classes plus spécialisées.

• Pour être utile, une classe abstraite doit admettre des classes descendantes concrètes.

• Toute classe concrète sous-classe d'une classe abstraite doit “concrétiser” toutes les
opérations abstraites de cette dernière.
– elle doit implémenter toutes les méthodes abstraites

• Une classe abstraite permet de regrouper certaines caractéristiques communes à ses


sous-classes et définit un comportement minimal commun.

• La factorisation optimale des propriétés communes à plusieurs classes par


généralisation nécessite souvent l'utilisation de classes abstraites.

9 11

Chapitre 5 Chapitre 5
Classe abstraite Classe abstraite
Exercice
UML Une société souhaite développer un module pour la gestion des utilisateurs de son
service, ci-dessous le diagramme de classe établi :

10 12

3
Chapitre 5 Chapitre 5
Classe abstraite Classe abstraite
Exercice Exercice
1. Créer la classe abstraite « Personne».
2. Créer les classes «Developpeur» et «Manager».
3. Redéfinir la méthode calculerSalaire(). Sachant que :
•Le développeur aura une augmentation de 20% par rapport à
son salaire normal.
•Le manager aura une augmentation de 35% par rapport à son
salaire normal.
4. Créer deux développeurs et deux managers.
5. Afficher les informations des objets crées.
Sous la forme :
•Le salaire du manager ELMAMOUN Mohamed est : 30 000 dh,
son service : Informatique
•Le salaire du développeur SLAMI Omar est : 10 000 dh, sa
spécialité : PHP
6. Créer un objet de type Personne. Qu’est ce que vous remarquez13? 15

Chapitre 5 Chapitre 5
Classe abstraite Classe abstraite
Exercice Exercice

14 16

4
Chapitre 5 Chapitre 5
Classe abstraite Interface
Exercice
Exemple introductif
Comment utiliser Interrogator pour faire
parler aussi un CuckooClock?

Faire rentrer CuckooClock


dans la hiérarchie Animal?

Pas d’héritage
multiple

Se passer du polymorphisme ?
17 19

Chapitre 5 Chapitre 5
Interface Interface
Exemple introductif Exemple introductif

Les interfaces permettent plus de polymorphisme car avec les interfaces il n’est pas
nécessaire de tout faire rentrer dans une seule famille (hiérarchie) de classes

18 20

5
Chapitre 5 Chapitre 5
Interface Interface
Déclaration d’une interface Réalisation d’une interface
• Une interface est une collection d'opérations utilisée pour spécifier un service • Une interface est destinée à être “réalisée” (implémentée) par d’autres classes (celles-ci en
offert par une classe. héritent toutes les descriptions et concrétisent les opérations abstraites).
– Les classes réalisantes s'engagent à fournir le service spécifié par l'interface
• Une interface peut être vue comme une classe 100% abstraite sans attributs et
dont toutes les opérations sont abstraites. • L’implémentation d’une interface est libre.
– il n'existe pas nécessairement de relations entre
les différentes classes d'implémentation

21 23

Chapitre 5 Chapitre 5
Interface Interface
Déclaration d’une interface Réalisation d’une interface
• Possibilité de définir des attributs à condition qu’il s’agisse d’attributs de type
primitif
• Ces attributs sont implicitement déclarés comme static final

22 24

6
Chapitre 5 Chapitre 5
Interface Interface
Réalisation d’une interface Héritage d’interface
• De la même manière qu'une classe peut avoir des sous-classes, une interface peut avoir
des "sous-interfaces"
• Une sous interface
– hérite de toutes les méthodes abstraites et des constantes de sa "super-interface"
– peut définir de nouvelles constantes et méthodes abstraites
• Une classe qui implémente une interface doit implémenter toutes les méthodes abstraites
définies dans l'interface et dans les interfaces dont elle hérite.

25 27

Chapitre 5 Chapitre 5
Interface Interface
Interface et polymorphisme Héritage d’interface
• Une interface peut être utilisée comme un type • A la différence des classes une interface peut étendre plus d'une interface à la fois
– A des variables (références) dont le type est une interface il est possible d'affecter des instances
de toute classe implémentant l'interface, ou toute sous-classe d'une telle classe.

• règles du polymorphisme s’appliquent de la même manière que pour les classes :


– vérification statique du code
– liaison dynamique

26 28

7
Chapitre 5 Chapitre 5
Interface Interface
Intérêt Java 8: quoi de neuf dans les interfaces ?
• Java7
• Les interfaces permettent de s’affranchir d’éventuelles contraintes d’héritage. – une méthode déclarée dans une interface ne fournit pas d'implémentation
– Ce n'est qu'une signature, un contrat auquel chaque classe dérivée doit se conformer
en fournissant une implémentation propre
– Lorsqu’on examine une classe implémentant une ou plusieurs interfaces, on est sûr que
le code d’implémentation est dans le corps de la classe. Excellente localisation du code • Java 8 relaxe cette contrainte, possibilité de définir
(défaut de l’héritage multiple, sauf si on hérite de classes purement abstraites). – des méthodes statiques
– des méthodes par défaut
• Permet une grande évolutivité du modèle objet – des interface fonctionnelles

29 31

Chapitre 5 Chapitre 5
Interface Interface
Java 8: méthodes par défaut
Choix entre classe et interface : principe

30 32

8
Chapitre 5 Chapitre 5
Interface Interface
Java 8: méthodes par défaut Java 8: méthodes par défaut

33 35

Chapitre 5 Chapitre 5
Interface Interface
Java 8: méthodes par défaut Exercice
Soit le diagramme de classe suivant :

34 36

9
Chapitre 5 Chapitre 5
Interface Interface
Exercice Exercice
1. Créer l’interface Ipersonne.

2. Créer les classes Personne et Profil


Sans redéfinir les méthodes de l’interface, qui ce que vous remarquez ?

3. Redéfinir les méthodes affiche () et calculerSalaire () dans la classe Personne.


Sachant que :
La méthode affiche () affiche une chaine de caractère sous la forme :

Je suis le directeur SAlMI Karim né le 02 juin 1970 mon salaire est 20 000dh

Le directeur aura une augmentation de 20% par rapport à son salaire normal,
Les autres employés auront une augmentation de 10%.

4. Ecrire un programme de test.

37 39

Chapitre 5 Chapitre 5
Interface Interface
Exercice Exercice

38 40

10
Chapitre 5
Interface
Exercice

41

11

Vous aimerez peut-être aussi