0% ont trouvé ce document utile (0 vote)
44 vues64 pages

1 Cours POOv

Transféré par

Samrat Simrator
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)
44 vues64 pages

1 Cours POOv

Transféré par

Samrat Simrator
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

Cours de programmation

orientée objets

Salima Hassas
Université Claude Bernard-lyon 1
Plan du cours (1/2)
 Introduction
 Pourquoi la programmation orientée objets?
 Quelques bons concepts
 Des Types de Données Abstraits (TDA) au
Modèle Orienté Objets (MOO)
 Exemples illustratifs
 Que permet la programmation orientée objets de
plus/ à la programmation par type de données
abstraits
 Concepts de base de la programmation
orientée objets
Plan du cours (2/2)
 Concepts de base
 Objets: classes et instances
 Encapsulation
 Protection des données et du code
 Polymorphisme
 surcharge
 Héritage
 Héritage simple et multiple
 Réutilisation de code (spécialisation)
 Relations entre classes
 Association, agrégation, composition
Les langages objets
 Simula
 Premier langage objet, Oslo 1967
 Extension d’Algol 60 aux types abstraîts
 Programmation évènementielle
 Eiffel
 Inspiré de Simula 67
 Préoccupations Génie-Logiciel
 (Protections, pré-post conditions, héritage multiples,etc)
Les langages objets
 Smalltalk
 Envoi de messages(72), notion de meta-classe
 Notion de tout objet
 C++ (86-87)
 Extension de C à l’objet
 Java (94)
 Compromis entre C++ et Smalltalk
 Machine virtuelle
Introduction
Problèmes de génie logiciel
« software is not enough »

 Spécification
 Développement
 Protection
 Mise au point
 Maintenance
 Evolution
Introduction
Problèmes de génie logiciel
« software is not enough »

 Spécification
 Développement
 Protection
 Mise au point
 Maintenance
 Evolution

75% du coût du logiciel sont des coûts de maintenance


Introduction
Bons Concepts

 Modularité: diviser pour régner


 Protection: des données
 Généricité: partage et réutilisation
 Abstraction (de l’implantation): lisibilité
Introduction
En programmation classique
Dualité des programmes /données
Priorité aux traitements
Or
Les données sont plus stables que les traitements
Procéder de manière inverse
Introduction
Organisation/traitements Organisation/données
D1 D4
T3 état état
état état
état
Opérat° Opérat°
état
état
état

état état état


état
Opérat° Opérat°
D2 D3
T1
T2
Introduction
 Spécifier les données
 Caractéristiques définissant la nature la données : état et
opérations permettant la manipulation de la donnée

 Organiser l’application (traitements) autour des données

 Approche guidée par les données (types abstraits de données)


Introduction

Premier pas vers la programmation orientée


objets

les Types Abstraits de Données?


Introduction
Première solution: les TDA

Ils apportent une réponse à


 La modularité

 Protection: des données (+ ou -)

 Généricité: partage et réutilisation

 Abstraction (de l’implantation): lisibilité


Introduction
Première solution: les TDA

Par exemple
 TDA Liste, Pile, File, Arbre, ..etc

 Définitions propres, modulaires, réutilisables, …

 Mais !!!
 Opérations: introduisant même concepts, noms différents
 Insertion/suppression, affichage dans une liste, dans un arbre,
..etc
 Données: pas de protection (en dur) : pas d’encapsulation
 Règles de bonne programmation
Introduction
 Liste  Pile
Inserer Empiler
Liste x Element x Position-> Liste Pile x Element -> Pile
Supprimer Dépiler
Liste x Position -> Liste Pile -> Pile
Afficher_Pile:
Afficher_liste:
Pile -> Pile
Liste-> Liste


Inserer empiler
Inserer Inserer dans une liste
Pile
Liste

Supprimer Supprimer

Opérations introduisant le même concept , devraient porter le même nom : plus de


lisibilité, éviter la complexité lexicale
Introduction
 Liste
Données
Tete: Cellule *
Inserer(L, e, 1) Liste
Suite: Cellule *
Opérations: Tete Suite
Inserer :..
supprimer:

 Pour modifier la tête de liste : Inserer (L, e, 1) ou supprimer (L, 1)


==> règle de conduite du bon programmeur !!
Introduction
 Liste
Données
Tete: Cellule *
L.Tete=p Liste
Suite: Cellule *
Opérations: Tete Suite
Inserer :..
supprimer:

 Pour modifier la tête de liste : Inserer (L, e, 1) ou supprimer (L, 1)


 Mais :
L.Tete= p : tout a fait possible !!!
 On ne peut pas contrôler la modification des valeurs des données internes aux TDA,
 Un programmeur ne respecte pas forcément les règles de bonne programmation
Introduction
 Liste
Données
Tete: Cellule *
L.Tete=p Liste
Suite: Cellule *
Opérations: Tete Suite
Inserer :..
supprimer:

 Pour modifier la tête de liste : Inserer (L, e, 1) ou supprimer (L, 1)


 Mais :
L.Tete= p : tout a fait possible !!!
 On ne peut pas contrôler la modification des valeurs des données internes aux TDA,
 Un programmeur ne respecte pas forcément les règles de bonne programmation

Pas de protection effective des données : manque d’encapsulation


Introduction
Première solution: les TDA

Programmer une bibliothèque de manipulation de figures


géométriques: les polygones

1 TDA pour tous 1 TDA par figure


2 solutions
1 TDA Polygone 1 TDA Carré
Regroupe tous le polygones 1 TDA Rectangle
1TDA Triangle
1 TDA AutrePolygone
Introduction
Première solution: les TDA

Programmer une bibliothèque de manipulation de figures


géométriques: les polygones

1 TDA pour tous 1 TDA par figure


2 solutions
1 TDA Polygone 1 TDA Carré, 1 TDA Rectangle
Regroupe tous le polygones 1TDA Triangle, 1 TDA AutrePolygone

Pb de spécificité? Pb de réutilisation?
Figure simple (carré, rectangle, ..) Affichage, Déplacement, ..
Calcul compliqué non spécifique..
Introduction
Première solution: les TDA

Il aurait été intéressant de pouvoir

 Généraliser : représenter ensemble les points communs


entre les différents TDA pour plus de possibilités de
réutilisation
 Spécialiser : garder la spécificité de chaque TDA

Le modèle orienté objets


Le modèle orienté objets
Concepts de base

 Qu’est-ce qu’un objet?


 Attributs et méthodes, interfaces et messages,
 Classes et instances
 Héritage : spécialisation/généralisation
 Polymorphisme et surcharge
Concepts de base
Qu’est ce qu’un objet? objet
 Un objet est un modèle de Attributs (état)
données avec
Méthodes (comportement)
 une partie déclarative:
contenant des variables
internes à l’objet, exprimant son
état, appelés : champs ou
attributs
Compte bancaire
 une partie fonctionnelle,
contenant un ensemble Titulaire: Personne attributs
d’opérations appelées
méthodes, exprimant le
Solde: flottant
comportement de l’objet. Retirer (somme:flottant)
Déposer (somme: flottant) méthodes
..
Concepts de base
Qu’est ce qu’un objet? objet
 L’ensemble des attributs de Attributs (état)
l’objet ne sont accessibles que
via les méthodes de celui-ci Méthodes (comportement)

 Encapsulation et protection de
données

 L’ensemble des méthodes Compte bancaire


définit l’interface à travers
laquelle on peut agir sur l’objet
(ou le manipuler) Titulaire: Personne attributs
Solde: flottant
Partie cachée Retirer (somme:flottant)
Déposer (somme: flottant) méthodes
..
interface
Concepts de base
Encapsulation
 Partie visible de l’extérieur d’un
Compte bancaire
objet
 opérations Retirer (somme:flottant)
Déposer (somme: flottant)
 Partie invisible de l’extérieur
 Données (Attributs) Titulaire: Personne
 Description du comportement Solde: flottant
des opérations
-----------------------------------
Retirer (somme:flottant){
if ((Solde-somme)<0) …
..}
Déposer (somme: flottant){
Solde+=Somme;
}
Concepts de base
Encapsulation
 Partie visible de l’extérieur d’un
Compte bancaire
objet
 opérations Retirer (somme:flottant)
Déposer (somme: flottant)
 Partie invisible de l’extérieur
 Données (Attributs) Titulaire: Personne
 Description du comportement Solde: flottant
des opérations
-----------------------------------
Retirer (somme:flottant){
if ((Solde-somme)<0) …
..}
Déposer (somme: flottant){
Solde+=Somme;
}
Concepts de base
Mode de fonctionnement?
Compte bancaire
Titulaire: Personne attributs
 Envoi de messages entre Solde: flottant
objets: Retirer (somme:flottant)
 Un message contient le nom Déposer (somme: flottant) méthodes
d’une méthode, et la liste des
arguments ..
 La réponse à la réception d’un
message consiste à exécuter la CC
méthode associée
Titulaire: Dupont
Envoi de message: Déposer (30) Solde: 2534
Concepts de base
Mode de fonctionnement?
Compte bancaire
Titulaire: Personne attributs
 Envoi de messages entre Solde: flottant
objets: Retirer (somme:flottant)
 Un message contient le nom Déposer (somme: flottant) méthodes
d’une méthode, et la liste des
arguments ..
 La réponse à la réception d’un
message consiste à exécuter la CC
méthode associée
Titulaire: Dupont
Envoi de message: Déposer (30) Solde: 2534

exécute
30
Déposer(somme)
{solde=solde+somme}
Concepts de base
Mode de fonctionnement?
Compte bancaire
Titulaire: Personne attributs
 Envoi de messages entre Solde: flottant
objets: Retirer (somme:flottant)
 Un message contient le nom Déposer (somme: flottant) méthodes
d’une méthode, et la liste des
arguments ..
 La réponse à la réception d’un
message consiste à exécuter la CC
méthode associée
Envoi de message: Déposer (30) Titulaire: Dupont
Solde: 2534 2564
exécute
30
Déposer(somme)
{solde=solde+somme}
Concepts de base
Classes et instances
 Une classe définit la description
Compte bancaire
d’une famille d’objets ayant la
même structure (partie Titulaire: Personne attributs
déclarative) et le même Solde: flottant
comportement (partie Retirer (somme:flottant)
procédurale) Déposer (somme: flottant) méthodes
 Description d’un concept ..
Concepts de base
Classes et instances Compte bancaire
 Une classe définit la description
d’une famille d’objets ayant la Titulaire: Personne attributs
même structure (partie déclarative) Solde: flottant
et le même comportement (partie Retirer (somme:flottant)
procédurale) méthodes
Déposer (somme: flottant)
 Description d’un concept
..
 Une instance correspond à un
exemplaire concret de la classe,
avec des valeurs d’attributs définis
(l’objet) CC
 Objet concret créé à partir du moule
fourni par la définition de classe Titulaire: Dupont
(instanciation)
Solde: 2534
Concepts de base
Classes et instances Compte bancaire
 Une classe définit la description
d’une famille d’objets ayant la Titulaire: Personne attributs
même structure (partie déclarative) Solde: flottant
et le même comportement (partie Retirer (somme:flottant)
procédurale) méthodes
Déposer (somme: flottant)
 Description d’un concept
..
 Une instance correspond à un
exemplaire concret de la classe, Instanciation
avec des valeurs d’attributs définis
(l’objet) CC
 Objet concret créé à partir du moule
fourni par la définition de classe Titulaire: Dupont
(instanciation)
Solde: 2534
Concepts de base
Classes et instances
La classe CARRE
 Description du concept : Carré Nombre de coté: 4
 La classe CARRE Nombre de sommets: 4
attributs Liste de sommets
 Un carré contient : Longueur cote:
 4 cotés
 4 sommets
 Une liste de sommets Périmètre: 4* Longueur cote
Une longueur de coté

Surface: Longueur cote^2
Affichage() …
 On peut effectuer les opérations
suivantes sur un carré Rotation (sommet)..
méthodes Rotation (Axe) ..
 Calcul du périmètre
 Calcul de la surface
 Affichage, translation,
rotation/sommet, rotation/axe
Concepts de base
Classes et instances
L’objet Carré1
 Instanciation d’un objet de la classe Carré
L’objet Carré1
Nombre de coté: 4
attributs

Nombre de sommets: 4
 Carré1 a des valeurs d’attributs définis : Liste de sommets
 4 cotés Longueur cote: 4
 4 sommets
 Une liste de sommets définie:
(0,0),(0,4), (4,0), (4,4) Périmètre: 4* Longueur cote
 Une longueur de coté: 4 Surface: Longueur cote^2
Affichage
 Les opérations sont celles de la classe méthodes
Carré Rotation (sommet)
 Calcul du périmètre Rotation (Axe) ..
 Calcul de la surface
 Affichage, translation,
rotation/sommet, rotation/axe
Concepts de base
Classes, sous classes et instances

La classe CARRE La classe Rectangle La classe Triangle

Nombre de coté: 4 Nombre de coté: 4 Nombre de coté: 3


Nombre de sommets: 4 Nombre de sommets: 4 Nombre de sommets: 3
Liste de sommets Liste de sommets Liste de sommets
Longueur cote: Longueur Base
Largeur Hauteur

Périmètre: Périmètre: Périmètre:


4* Longueur cote 2*(Longueur +Largeur) Surface:
Surface: Surface: Base*Hauteur/2
Longueur cote^2 Longueur *Largeur Affichage
Affichage Affichage Rotation (sommet)
Rotation (sommet) Rotation (sommet) Rotation (Axe) ..
Rotation (Axe) .. Rotation (Axe) ..
Concepts de base
Classes, sous classes et instances Redondance

La classe CARRE La classe Rectangle La classe Triangle

Nombre de coté: 4 Nombre de coté: 4 Nombre de coté: 3


Nombre de sommets: 4 Nombre de sommets: 4 Nombre de sommets: 3
Liste de sommets Liste de sommets Liste de sommets
Longueur cote: Longueur Base
Largeur Hauteur

Périmetre: Périmetre: Périmetre:


4* Longueur cote 2*(Longueur +Largeur) Surface:
Surface: Surface: Base*Hauteur/2
Longueur cote^2 Longueur *Largeur Affichage
Affichage Affichage Rotation (sommet)
Rotation (sommet) Rotation (sommet) Rotation (Axe) ..
Rotation (Axe) .. Rotation (Axe) ..
Concepts de base
Classes, sous classes et instances

 Organisation des objets en hiérarchies


 A la racine une classe regroupant les propriétés communes

à toutes les autres classes


==> classe mère (super classe)
 Descendre dans la hiérarchie par spécialisation ( plus de
propriétés communes)
==> création d’une sous classe
 Réitérer le processus jusqu’à ce qu’il n’y ait plus de classes
ayant des propriétés communes
==> clases concrètes
Concepts de base
Classes, sous classes et instances

 La hiérarchie des classes définit le graphe d’héritage.


 Aux niveaux supérieurs, on dispose des classes abstraites
 Au niveau le plus bas : les classes concrètes utilisées pour l’instanciation

 Récupération des propriétés (attributs, méthodes) au niveau le plus


bas grâce à l’héritage
 Héritage : parcours du graphe d’héritage
Concepts de base
Classes, sous classes et instances
 Définitions
 Classe/instance

La classe détient l liste des attributs et la liste des méthodes.


L’instance, créée à partir de la classe, ne détient que la liste des
valeurs d’attributs

 Classe/sous-classe
Une classe contient un ensemble de propriétés (attributs,
méthodes) à partir desquelles on peut définir des sous-classes
plus spécifiques, complétant les propriétés de la classe mère.

généralisation
Sous-classe Super classe
spécialisation
Concepts de base
Classes, sous classes et instances
La classe Polygone
 Exemple
Nombre de coté:
Nombre de sommets
Liste de sommets La classe Triangle
La classe CARRE Base
Longueur cote: Périmetre Hauteur
Surface
Périmetre: Affichage Périmetre:
4* Longueur cote Rotation (sommet) Surface:
Surface: Rotation (Axe) .. Base*Hauteur/2
Longueur cote^2
Concepts de base
Classes, sous classes et instances
 Exemple La classe Polygone
Nombre de coté: Héritage:
Héritage: Nombre de sommets
Liste de sommets La classe Triangle
La classe CARRE Base
Longueur cote: Périmètre Hauteur
Surface
Périmètre: Affichage Périmètre:
4* Longueur cote Rotation (sommet) Surface:
Surface: Rotation (Axe) .. Base*Hauteur/2
Longueur cote^2
T1 Instanciation
C1 Instanciation
3,
4, 3,
4, (0,0)(2,4)(4,0)
(0,0)(0,4)(4,0)(4,4) 4
4 4
Concepts de base
Classes, sous classes et instances
 Définitions

Spécialisation d’une classe

Par enrichissement Par substitution


- Définition d’attributs et/ou de méthodes - Définition d’une nouvelle méthode héritée
supplémentaires -Masquage de la méthode héritée

Ex: surface dans la classe Triangle


Ex: base, hauteur dans la classe Triangle
Concepts de base
Classes, sous classes et instances
La classe Polygone
 Exemple
Nombre de coté: Héritage:
Héritage: Nombre de sommets
Liste de sommets La classe Triangle
La classe CARRE Base
Longueur cote: Périmetre Hauteur
Surface
Périmetre: masquage:
Affichage masquage: Périmetre:
4* Longueur cote Rotation (sommet) Surface:
Surface: Rotation (Axe) .. Base*Hauteur/2
Longueur cote^2
Spécialisation par substitution

Spécialisation par enrichissement


Concepts de base
Classes, sous classes et instances
La classe Polygone
 Exemple
Nombre de coté: Héritage:
Héritage: Nombre de sommets
Liste de sommets La classe Triangle
La classe CARRE Base
Longueur cote: Périmètre Hauteur
Surface
Périmètre: Affichage Périmètre:
4* Longueur cote Rotation (sommet) Surface:
Surface: Rotation (Axe) .. Base*Hauteur/2
Longueur cote^2
T1 Instanciation
C1 Instanciation
3,
Hérités de la classe 3,
4, Polygone
4, (0,0)(2,4)(4,0)
(0,0)(0,4)(4,0)(4,4) 4
4 4
Concepts de base
Polymorphisme
La classe Polygone
 Exemple
Nombre de coté: Héritage:
Héritage: Nombre de sommets
Liste de sommets La classe Triangle
La classe CARRE Base
Longueur cote: Périmètre Hauteur
Surface
Périmètre: Affichage Périmètre:
4* Longueur cote Rotation (sommet) Surface:
Surface: Rotation (Axe) .. Base*Hauteur/2
Longueur cote^2
surface
surface
Base*Hauteur/2
Longueur cote^2

Même nom de méthode (surface), mais code différent selon la classe qui reçoit le message
Concepts de base
Généricité

 Méthode générique
 Une méthode dont le code est indépendant du type de ses arguments
 Ex: insertion dans une pile, parcours d’un arbre, etc

 Classe Générique
 Classe dont toutes les méthodes sont génériques

 Exemple:

 Les classes contenaires : classe Liste, classe arbre, classe graphe, etc
 Les opérations de manipulation de ces données est indépendant du
type des éléments qu’elles contiennent

 Notation (C++) : Nom-classe <T1, T2, ..>


 Ex: Arbre<T>, Arbre<entier>, Liste<Arbre<caractère>>
Concepts de base
Partage d’information: Héritage
La représentation graphique de la hiérarchie des classes définit le
graphe d’héritage

 Héritage simple
 Chaque sous-classe admet une et une seule classe mère (super
classe)
 Graphe d’héritage = arbre dont la racine est la super classe la plus
générale
 Relation d’héritage = relation d’ordre total => pas de conflits
Concepts de base
Héritage simple
Objet

Article
Ref, désignation
PrixTTC, prixHT,..
Vetement
Electroménager ArticleDeLuxe
Coloris
DureeGarantie taille
Poids PrixTTC

Aspirateur Téléviseur CaviarFrais chemise


NiveauSonore Taille écran Provenance Type col
Depression Télécommande Poids Type manches
Débit
Concepts de base
Héritage simple
Objet

Article
Ref, désignation
PrixTTC, prixHT,..
Vetement
Electroménager ArticleDeLuxe
Coloris
DureeGarantie taille
Poids PrixTTC

Aspirateur Téléviseur CaviarFrais chemise


NiveauSonore Taille écran Provenance Type col
Depression Télécommande Poids Type manches
Débit
Concepts de base
Partage d’information: Héritage
La représentation graphique de la hiérarchie des classes définit le
graphe d’héritage

 Héritage multiple
 Une sous classe peut avoir plus d’une super classe

 Graphe d’héritage = graphe orienté sans circuit

 Héritage = union des propriétés (attributs, méthodes) de ses

super classes
 Relation d’héritage= relation d’ordre partiel => classes non

comparables
Concepts de base
Héritage multiple
Transport
Objet
PrixTransport
Article
Ref, désignation Périssable Fragile
PrixTTC, prixHT,.. PrixTransport PrixTransport

Electroménager Vetement
ArticleDeLuxe Coloris
DureeGarantie
Poids PrixTTC taille
crémerie

chemise
Aspirateur Téléviseur CaviarFrais
NiveauSonore Type col
Taille écran Provenance oeufs Type manches
Depression Télécommande Poids
Débit
Concepts de base
Partage d’information: Héritage
Héritage multiples et situations conflictuelles

 Conflit
 Propriétés homonymes appartenant à des classes de hiérarchie
d’héritage différentes (classes non comparables)

 Problème : trouver un ordre de parcours du graphe d’héritage qui


satisfasse au mieux les intentions du concepteur de la hiérarchie
 Critères: ordre , multiplicité, modularité

 Dans les langages : l’héritage multiple est géré par l’utilisateur


 En C++ (explicite lors de la déclaration des classes),
 En Java: héritage simple + utilisation des interfaces
Concepts de base
Notation graphique

Nom de la classe Nom instance Nom classe


Nom
Nom:type ou Nom instance : nom de la classse
Nom:type = valeur par
défaut
Méthode ou Nom instance : nom de la classse
Méthode(liste de par): type
Attribut1=valeur 1
retour
Attribut2=

super classe
Relation d’héritage
sous classe
Concepts de base
Classes concrètes/ Classes abstraites
 Classe abstraite
 Son rôle est le regroupement de propriétés communes
 Doit apparaître comme un nœud au niveau de la hiérarchie
 N’admet pas d’instances concrètes
 Ex: classe humain, classe figue géométrique

 Classe concrète
 Doit apparaître comme feuille au niveau de la hiérarchie

 Elle est destinée à être instanciée

 Ex: classe homme, femme, classe rectangle


Concepts de base
Exemple
Compte
Titulaire Traiter_depassement() Méthode initialisation
Numéro
Solde
Compte(T,N,S)..
Get_Titulaire().. Méthode d’accès
Compte Rémunéré ..
Taux interet Dépôt (Somme) : Méthode concrète

Calcul_Interet().. Poss_Retrait Méthode générique


Solde Min
Retrait(S)..
Virement(S,C)..
Traiter_depassement() Compte Courant

Méthode abstraite Traiter_depassement()


Compte RemNonBloq ..
Concepts de base
Différents types de méthodes
 Méthode d’initialisation
 Exécutée juste après la création de l’objet pour initialiser les attributs de
l’objet (valeurs par défaut par exemple)
 Méthode d’accès: accesseur
 Permet l’accès en lecture (get) ou en écriture (set) aux attributs de l’objet
 Méthode générique
 Définie dans une classe abstraite et fait appel à des méthodes spécifiques
définies dans les sous classes
 Méthode abstraite (virtuelle)
 Définie dans une classe abstraite (sans code) et doit être re-définie
obligatoirement dans toutes les sous classes directes
 Méthode concrète
 Toute autre méthode
 Méthode de destruction (optionnelle) doit être exécutée juste avant la
disparition de l’objet
Concepts de base
Variables SELF et SUPER
 Self (This en C++, java)
 Fait référence à l’objet lui-même, dans le corps des méthodes de l’objet.
 Ex: PrixTTC()= Self.PrixNet() + Self. PrixTransport()

 Super
 Fait référence à la classe contenant la super méthode recherchée
 Super méthode=la première méthode (avec le nom recherché)
rencontrée dans la hiérarchie de l’objet
 En java:utilisé juste par les méthodes d’initialisation

 Ex: PrixTransport()= Super.PrixTransport ()*20%


Concepts de base
Relations Conceptuelles entre Objets
 Association
 Relations structurelles entre objets (durables) dans le temps
 Chaque objet joue un rôle dans l’association, qui peut-être noté lors de la
définition de l’association
 Association peut-être nommée
 Cardinalité peut être indiquée

1 possède 1..*
Personne Véhicule
propriétaire propriété
Concepts de base
Relations Conceptuelles entre Objets
 Association particulière (Agrégation ou composition)
 Un objet fait partie (ou compose physiquement) un autre objet

 Exemple
 La tête fait partie du corps
 Le dossier fait partie (compose) la chaise

 Notation

1 est composé de
Polygone 3..* Point
Concepts de base
Implémentation des associations
 L’association d’une classe A à une classe B est implantée par la
définition d’un attribut de type A dans la classe B.
 Le nom de l’attribut est le rôle (s’il est défini) dans l’association
 La tête d’une association de cardinalité multiple définit un attribut de
type collection
 Exemple
 Attribut: Liste de points dans une classe Polygone

1 est composé de
Polygone 3..* Point
Concepts de base
Héritage, Typage et Liason

 La liaison définit le rattachement d’une méthode à un objet.


Elle peut être:
 statique : la liaison entre le message et la méthode se fait sur la base du
type déclaré de la variable
 Ex: Les librairies en C où le code est recherché à la compilation

 dynamique: la liaison message-méthode s’effectue sur la base du type de


la valeur que prend la variable à l ’exécution
 Dans o. surface() La variable peut référencer un objet de la classe Polygone, de
la classe Carré, ou de la classe Triangle au cours de son existence
Concepts de base
Héritage, Typage et Liaison

Statique Typage, Liaison Dynamique

- Classe=type (définition abstraite) -Graphe d’héritage modifiable à l’exécution


Variables, paramètres, résultats:typés
==> Déclaration obligatoire - Envoi de messages, accès aux variables
admis a priori
- Définition de nouvelles classes/
modification: impossible à l’exécution - Vérifications au moment de l’exécution

- Envoi de messages vérifiés à la compilation ==> langage interprétés


==> langage compilés
Concepts de base
Héritage, Typage et Liaison

Statique Héritage Dynamique

-A la création de la classe le dictionnaire - Pas de recopie


des données est figé - Les infos d’une classe sont stockés dans
celle-ci et accédées par les instances au
-Format d’une instance fixé à la conception besoin
de la classe
==> Cas des méthodes
-Accès aux variables/paramètres peuvent
être compilés

==> Cas des attributs

Vous aimerez peut-être aussi