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