0% ont trouvé ce document utile (0 vote)
26 vues71 pages

GL 03ConceptOrientéObjet

Le document présente une introduction au concept de programmation orientée objet (POO), définissant les objets comme des entités modélisant des éléments du monde réel avec des attributs et des comportements. Il aborde également l'historique de la POO, les classes et objets, ainsi que les mécanismes de communication entre objets. Enfin, il explique les étapes de construction d'un objet et les concepts clés tels que l'encapsulation, l'héritage et le polymorphisme.

Transféré par

lekoukouare
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)
26 vues71 pages

GL 03ConceptOrientéObjet

Le document présente une introduction au concept de programmation orientée objet (POO), définissant les objets comme des entités modélisant des éléments du monde réel avec des attributs et des comportements. Il aborde également l'historique de la POO, les classes et objets, ainsi que les mécanismes de communication entre objets. Enfin, il explique les étapes de construction d'un objet et les concepts clés tels que l'encapsulation, l'héritage et le polymorphisme.

Transféré par

lekoukouare
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

Introduction au concept orienté objet

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 1


Concepts orientés objets
Un coup d’oeil sur cette image

une voitures, des arbres, une maison, une montagne etc.


2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 3
Concepts orientés objets

Aux objets: une voitures, des arbres, une maison, une montant etc.

+
« l’air ambiant », la « température », la « bonne
ambiance », « la lumière du jour » etc.
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 4
Concepts orientés objets

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 5


Concepts orientés objets

Livres de différentes tailles, couleurs et longueurs


2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 6
Concepts orientés objets
• Objet: Abstraction informatique d’une entité du monde
réel caractérisée par une identité, un état et un
comportement.

• L’informatique décrit le monde qui nous entoure en ce


trio <entité, attribut, valeur>
• <voiture, couleur, rouge>, <voiture, marque, peugeot>

• <passant, taille, grande>, <passant, âge, 50>

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 7


Concepts orientés objets

Objets, attributs, valeurs

<entité, attribut, valeur>

Les langages informatiques stockent et manipulent des


objets en mémoire, comme autant d’ensembles de couples
attribut/valeur.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 8


Stockage des objets
• Stockage des objets informatiques en mémoire

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 9


Stockage des objets
• Stockage des objets informatiques en mémoire avec des attributs de
type « primitif » comme entier, réel, caractère…

Modèle propre aux bases


de données relationnelles

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 10


Le référent d’un objet
• Nom de l’objet

• Nom unique identifiant de manière univoque à l’adresse physique de


l’objet en mémoire

• Deux objets ne peuvent pas avoir le même référent

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 11


Le référent d’un objet
• Plusieurs référents désignent un même objet grâce au mécanisme
informatique d’adressage indirect.
meilleur arbitre africain
de football en 2019

Alioum Sidi

meilleur homme en noir adjudant-chef de l’armée


de la CAN 2019 de l’air camerounais

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 12


Objet composite et objet composant
• L’objet moteur devient un composant de l’objet voiture

Alioum Sidi

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 13


Objet composite et états d’un objet

Une composition d’objets


Entre eux, les objets peuvent entrer dans une relation de type
composition, où certains se trouvent contenus dans d’autres et ne
sont accessibles qu’à partir de ces autres. Leur existence dépend
Alioum Sidi
entièrement de celle des objets qui les contiennent.

Changement d’états
Le cycle de vie d’un objet, lors de l’exécution d’un programme orienté
objet, se limite à une succession de changements d’états, jusqu’à sa
disparition pure et simple de la mémoire centrale.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 14


Objet composite et états d’un objet

Changement d’états
Le cycle de vie d’un objet, lors de l’exécution d’un programme orienté
objet, se limite à une succession de changements d’états, jusqu’à sa
disparition pure et simple de la mémoire centrale.
Alioum Sidi

Le changement d’état du feu de


signalisation par l’entremise de
l’opération « change »

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 15


Définition d’un objet
• Un objet est une entité qui représente (modélise) un élément du
domaine étudié.

• Equation objet

Objet = état + actions


- des informations (ou données) qui le caractérisent.

- des actions (ou traitements) qu'on peut exercer sur lui.

• Un objet se compose d'informations et d'actions. Les actions utilisent


(et parfois modifient) les informations de l'objet.

Informations Actions Informations Actions

voiture, propriétaire démarrer, laver titulaire, solde, devise créditer, débiter

Voiture Compte bancaire


2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 16
Histoire de la programmation orientée objet
(POO)

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 17


Histoire de la programmation orientée objet (POO)

• Au cours des années 1970 naissent les premiers langages de POO


Simula, puis Smalltalk.

• A partir des années 1980, application des principes de la POO


aux langages Eiffel, C++ , Objective C.

• Durant les années 1990, apparition d’autres langages orientés


objet Java, C#, Python.

• Principal support de la POO est le langage de modélisation UML.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 18


Histoire de la programmation orientée objet (POO)

Programmation orientée objet:


acilite la conception de programmes par réutilisation de composants
existants. Elle constitue le standard actuel ou paradigme en matière de
développement de logiciels.

Langage fortement typé


Un langage de programmation est dit fortement typé quand le
compilateur vérifie que l’on ne fait avec les objets et les variables du
programme que ce qui est autorisé par leur type. Cette vérification
accroît la fiabilité de l’exécution du programme.

Java, C++ et C# sont fortement typés. Ce n’est pas le cas pour Python
et PHP 5.
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 19
Objets et classes

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 20


Le paradigme POO(1)
• La POO consiste à programmer en utilisant des objets.

• Un objet modélise un élément du domaine étudié


(exemples : un compte bancaire, une voiture, un satellite,
etc).

• Un objet est une instance de classe.

• Une classe est un type abstrait, un objet est un exemplaire


concret de cette classe.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 21


Le paradigme POO (2)
• Une classe regroupe des informations et des actions.

• Les informations sont stockées sous la forme de champs.


Les champs décrivent l'état d'un objet.

• Les actions réalisables sur un objet sont représentés par


des méthodes. Elles expriment ce que les objets peuvent
faire, leur comportement.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 22


Ecosystème du paradigme POO

- Polymorphisme

- Héritage

- Encapsulation

- Abstraction

- Classe

- Objet

- Méthode

- Envoie de Message

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 23


La notion de classe et objet
• Une classe est

- un modèle d’objet

- un type créé par le programmeur et servant de modèle pour tous


les objets de cette classe.

• Une classe spécifie les informations et les actions qu'auront en


commun tous les objets qui en sont issus.

• Un object est une instance ou une exemplaire d'une classe

Ne pas confondre objet et classe. Une classe est un type abstrait


(exemple : une voiture en général), un objet est un exemplaire
concret d'une classe (exemple : la voiture de Welso).

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 24


La notion de classe et objet
• Une classe est caractérisée par
- Modificateur

- Nom de la classe

- Nom de la classe mère, en cas d’héritage

- Liste des interfaces, si la classe les implémente

- Corps situé entre { }

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 25


Illustration de la notion classe et objet
Scénario:

Une personne caractérisée par un nom, une date de naissance, un lieu de


naissance travaille dans un projet caractérisé par une désignation, un
budget, une durée et une description.

• Exemple de classe en Java

public class Projet { public class Personne {


String designation; String nom;
int budget; Date dateNaissance;
int duree; String lieuNaissance;
String description; }
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 26


Illustration de la notion classe et objet
public class Project {
String name;
int budget;

public Project(String name, int budget) {


[Link] = name;
[Link] = budget;
}
public String getName() {
return name;
}
public void setName(String name) {
[Link] = name;
}

public int getBudget() {


return budget;
}
public void setBudget(int budget) {
[Link] = budget;
}
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 27


Illustration de la notion classe et objet
public class Projet {
String name;
int budget;

public Project(String name, int budget) {


[Link] = name;
[Link] = budget;
}
……..
}

• Créer un objet de type Projet


• Créer une instance de la classe Projet

Projet pro = new Projet(“Adduction en eau”, “500 000”);

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 28


Construction d’un objet
• L’opérateur new construit une instance ou un objet de la classe

- Chaque instance a ses propres variables

- Pas risque de confusion, car les variables sont séparées en


mémoire

• Le constructeur est une méthode particulière, portant le même


nom que la classe, et qui est définie sans aucun retour.

- initialise les attributs d’un objet dès sa création


- est appelé que lors de la construction de l’objet
- sa version par défaut est toujours fournie par les langages de
programmation
- n’as pas de retour de valeur
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 29
Construction d’un objet
• Exemples de constructeur

public Project() {
/*reproduire le comportement par défaut.*/
}

public Project(String nom, int montant) {


name = nom;
budget = montant;
}

public Project(String name, int budget) {


[Link] = name;
[Link] = budget;
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 30


Etapes de construction d’un objet
• Etape 1: Projet pro;

- Réservation de mémoire et référence vers un objet de type Projet

• Etape 2: new

- Réservation de mémoire pour les variables d’instance affectée de valeurs


par défaut

• Etape 3: Appel à la méthode constructeur

Projet(“Adduction en eau”, “500 000”);

• Etape 4: Exécution de la méthode constructeur

- Affectations typiques aux variables d’instance

Projet pro = new Projet(“Adduction en eau”, “500 000”);

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 31


Schéma des étapes de construction d’un objet

Projet pro = new Projet(“Adduction en eau”, “500 000”);

Projet pro

pro = new Projet

Adduction en eau
pro = new
Projet(“Adduction en eau”, “500 000”); 500 000

Memoire des objets


2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 32
Représentation graphique d’une classe

• Usage du standard ou de la norme UML (Unified Modeling Language)

Classe et des trois types d’information

• les attributs / champs correspondent aux informations de la classe

• les méthodes correspondent aux actions réalisables

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 33


Représentation graphique d’une classe

• Quelques exemples

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 34


Accesseurs et mutateurs
• Les fonctions membres permettant d'accéder aux données
membres sont appelées accesseurs, parfois getter

• Les fonctions membres permettant de modifier les données


membres sont appelées mutateurs, parfois setter

public class Project {


String name; pro = new Projet
int budget;

public int getBudget() { //Modifier au budget


return budget; [Link](100000)
}
public void setBudget(int budget) {
[Link] = budget; //Accéder au budget
} int budget = [Link]()
}
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 35
Communication entre les objets
• Association de classes
- Les deux classes O1 et O2 en interaction par un lien fort et permanent
dit « d’association ». Les messages sont envoyés de la classe O1 vers
la classe O2.

class O1 {
O2 lienO2 ; /*la classe O2 type un attribut de la classe O1 */
void jeTravaillePourO1() {
lienO2.jeTravaillePourO2() ;
}
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 36


Communication entre les objets
• Dépendance de classes
- Une méthode de O1 reçoit un objet O2

class O1 {
void jeTravaillePourO1(O2 lienO2) {
lienO2.jeTravaillePourO2() ;
}
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 37


Communication entre les objets
• Package
- Un mécanisme de nommage de classes, comme si on créait un répertoire
#Fichier [Link]
package O2;
public class O2 {
public void jeTravaillePourO2() {
[Link]("Je travaille pour O2");
}
}
#Fichier [Link]
import O2.*; /* Pour rappeler les classes du répertoire O2 */
public class O1 {
public void jeTravaillePourO1(){}
public static void main(String[] args) {
O2 unO2 = new O2();
unO2.jeTravaillePourO2();
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 38


Communication entre les objets
• Passage d’arguments prédéfinis dans les messages
public class O2 {
public void jeTravaillePourO2() {
x++; /* incrément de l’argument*/
[Link]("la valeur de la variable x est: " + x);
}
}
public class O1 {
O2 lienO2;
void jeTravaillePourO1() {
int b = 6;
lienO2 = new O2();
lienO2.jeTravaillePourO2(b);
[Link]("la valeur de la variable b est: " + b);
}
public static void main(String[] args) {
O1 unO1 = new O1();
unO1.jeTravaillePourO1();
} Résultats
} la valeur de la variable x est : 7
la valeur de la variable b est : 6
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 39
Digramme de classe et lien entres les objets

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 40


Méthode et ses caractéristiques
• Méthode

- ensemble d'instructions qui effectuent une tâche spécifique et


renvoient le résultat à l’appelant.

• Méthode et ses six composants

1. Modificateur d’accès
- public: accessible dans toutes les classes de votre application.

- protected: accessible dans le package dans lequel il est défini et dans sa sous-classe

- private: accessible uniquement dans la classe dans laquelle il est défini.

- default (déclaré / défini sans utiliser de modificateur): accessible au sein de la même


classe et du même package que celui dans lequel sa classe est définie

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 41


Méthode et message
• Méthode et ses six composants

1. Modificateur d’accès

2. Le type de retour de données sauf la méthode void ne renvoie pas de


valeur

3. Nom de la méthode

4. Liste des paramètres

5. Liste des exceptions

6. Corps de la méthode

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 42


Message et méthode
• Message = signature de méthode disponible

- Le message se limite uniquement à la signature de la méthode : le


type de ce qu’elle retourne, son nom et ses arguments.

• Même message, plusieurs méthodes

- Le fait de tenir la signature séparée du corps de la méthode permet


aussi de prévoir plusieurs implémentations possibles pour un même
message

- Il s’agit du polymorphisme

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 43


Surcharge des méthodes par leur signature
• Surcharge de méthode
- Manoeuvre consistant à créer une nouvelle méthode, dont la signature
se différencie de la précédente, uniquement par la liste ou la nature
des arguments.
void ajouterEmployee(String nom, int montant);
void ajouterEmployee(String nom, float montant);
void ajouterEmployee(String nom);

• Signature de méthode
- Ce qui permet de retrouver la méthode dans la mémoire des
méthodes.

- Caractérisée par le nom, la liste et le type des arguments.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 44


Encapsulation et masquage d'information

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 45


Objet et Encapsulation
• Un objet est une entité hermétique qui contient à la fois des données
(informations) et des traitements (actions).

• Les structures de données définies dans un objet sont appelés les attributs
de cet objet;

• Les traitements définis dans un objet seront appelées les méthodes de cet
objet.
Objet1
Attribut1 attribut2
Methode1 methode2 methode3

• Le principe d’encapsulation consiste à regrouper dans le même objet


informatique des structures de données particulières et les méthodes qui
leur sont spécifiques

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 46


Encapsulation et ses principes
• Encapsulation : mécanisme qui consiste à déclarer comme privé (private)
une partie ou tous les attributs et de nombreuses méthodes.

• Encapsulation vise à
- préserver l’intégrité des objets
- protéger le contenu des classes d’une manipulation maladroite et ou mal
intentionnée.
- faciliter le test unitaire
- Augmenter la flexibilité et la réutilisabilité de code

class Employe {
Projet pro;
void augmenter() {
[Link] = [Link] + 50000; // plutôt que
[Link](50000)
}
}
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 47
Encapsulation et ses principes
• Appliquer le principe public class Project {
private String name;
d’encapsulation private int budget;

public Project(String name, int budget) {


[Link] = name;
[Link] = budget;
}
public String getName() {
return name;
}
public void setName(String name) {
[Link] = name;
}

public int getBudget() {


return budget;
}
public void setBudget(int budget) {
[Link] = budget;
}
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 48


Encapsulation et ses principes
• Appliquer le principe d’encapsulation
class Employe {
Projet pro;
void augmenter() {
[Link](50000);
}
………
[Link](“Le montant du budget: “ + [Link]());
}

Intégrité des objets


Une première raison justifiant l’encapsulation des attributs dans la
classe est d’obliger cette dernière, par l’intermédiaire de
ses méthodes, à se charger de préserver l’intégrité de tous ses
objets.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 49


Encapsulation et ses principes
• L’encapsulation permet d’abstraire à 2 niveaux de perception

1. Le niveau externe de l’objet

- les méthodes et attributs accessibles hors de l’objet

- l’interface de l’objet avec l’extérieur résultat de l’abstraction

2. Le niveau interne de l’objet

- implémentation de l’objet

- les méthodes et attributs accessibles uniquement depuis l’intérieur de


l’objet

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 50


Encapsulation et masquage
• Le masquage d’information est une extension du principe d’encapsulation
en utilisant les limitateurs:

- public: les fonctions membres de toutes les autres classes

- protected: l'accès aux fonctions membres protégées

- private: l'accès aux fonctions membres privées

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 51


Généralisation - spécialisation
ou héritage

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 52


Généralisation spécialisation ou héritage
• La généralisation est la factorisation des caractéristiques communes de
plusieurs classes appelées classes enfants (classes filles) dans une classe
appelée classe parente (classe mère).

- mise en commun des attributs (structures de données) et des


opérations (services)

- mécanisme de réutilisation le plus important du paradigme orienté


objet

- classes enfants « héritent » des caractéristiques de leurs classes


parentes

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 53


Généralisation spécialisation ou héritage

• Héritage et sous-typage
• un objet Personne peut désigner une instance des classes Personne, Avocat,
Vendeur, Enseignant, Vacataire et Permanent ;
• un objet Enseignant peut désigner une instance des classes Enseignant,
Vacataire et Permanent ;
◦ il ne peut pas désigner une instance des classes Personne, Avocat et
Vendeur.
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 54
Héritage multiple
• Très peu de langage de POO supporte le principe d’héritage multiple.

- utilisation déconseillée

- Problèmes d’interprétation

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 55


Agrégation et Composition

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 56


Agrégation
• Agrégation = une association exprimant un couplage fort lié à une
relation de subordination

• Une agrégation exprime une relation « contenant / contenu » ou


« ensemble / élément », ou encore « agrégé / agrégat »

Relation polygone et point


Relation salle de classe et étudiant

Représentation en langage UML

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 57


Composition
• La composition est une forme d'agrégation plus spécifique. Il décrit la
propriété.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 58


Interface

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 59


Interface
• Comparable à une classe abstraite mais n’inclut aucun code

- Une interface
- contient les méthodes mais ne les implémente pas

- est héritable

- est précédée du mot clé interface

• La classe implémentant l’interface utilise le mot clé implements

• Une classe implémente une ou plusieurs interfaces

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 60


Interface
• Exemple d’une interface avec une classe qui l’implémente
interface Famille {
int nombreEnfant(int nbre) ;
boolean statusFamille(boolean status)
}
}

public class Enfant implements Famille{


int nombreEnfant(int enfts) {
return enfts+2;
}
boolean statusFamille(boolean status){
int n = 2;
int nbre = nombreEnfant(n) ;
}
}
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 61
Classe abstraite

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 62


Classe abstraite
• Le mot clé abstract est utilisé pour représenter une classe ou une
méthode abstraite.

• Définir des modèles génériques permettant de définir ultérieurement des


actions spécifiques

• Une méthode déclarée en abstract dans une sur-classe

- N'a pas de corps de méthode, donc n'est pas exécutable.

- Doit obligatoirement être redéfinie dans une sous-classe

- La sur-classe doit elle-même être déclarée en abstract

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 63


Classe abstraite

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 64


Classe abstraite
abstract class Animal { //[Link]

protected String couleur;


protected int poids;

protected void manger(){


[Link]("Je mange de la viande.");
}

protected void boire(){


[Link]("Je bois de l'eau !");
}

abstract void deplacement();

abstract void crier();

public String toString(){


String str = "Je suis un objet de la " + [Link]() + ", je suis
" + [Link] + ", je pèse " + [Link];
return str;
}
}
2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 65
Classe abstraite
//[Link]
public abstract class Felin extends Animal {
void deplacement() {
[Link]("Je me déplace seul !");
}
}

//[Link]
public abstract class Canin extends Animal {
void deplacement() {
[Link]("Je me déplace en meute !");
}
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 66


Classe abstraite
public class Lion extends Felin { //[Link]

public Lion(){
}
public Lion(String couleur, int poids){
[Link] = couleur;
[Link] = poids;
}
void crier() {
[Link]("Je rugis dans la savane !");
}
}
public class Chien extends Canin { //[Link]
public Chien(){
}
public Chien(String couleur, int poids){
[Link] = couleur;
[Link] = poids;
}
void crier() {
[Link]("J'aboie sans raison !");
}
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 67


Polymorphisme

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 68


Polymorphisme et liaison dynamique
• Polymorphisme ou redéfinition des méthodes: capacité des
langages de programmation OOP de différencier efficacement
des entités portant le même nom.
- permet au développeur d'utiliser une méthode ou un attribute
selon plusieurs manières
- permet l’usage des méthodes homonymes
- int addition(int, int)

- float addition(float, float)

- char addition(char, char)

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 69


Polymorphisme et liaison dynamique

La classe O2 déclenche sur la classe O1 le message


jeFaisPresqueLaMemeChose qui se trouve redéfini dans trois sous-classes.

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 70


Polymorphisme et liaison dynamique
public class Sum {

// Surchargé sum() avec 2 paramètres int


public int sum(int x, int y)
{
return (x + y);
}
// Surchargé sum() avec 2 paramètres int
public int sum(int x, int y, int z)
{
return (x + y + z);
}
// Surchargé sum() avec 2 paramètres double
public double sum(double x, double y)
{
return (x + y);
}
}

2024-2025 Prof.- Dr.-Ing. Paul Dayang, DMI, FS, UN 71

Vous aimerez peut-être aussi