Vous êtes sur la page 1sur 30

Partie II: Introduction à l ’orienté-objet

Références:

• C++ from the Beginning, Jan Skansholm,


Addison Wesley, 1997

• Chapitres couverts
– Chapitre 6 Object-oriented Program Development
– Chapitre 7 Classes
– Chapitre 8 More about Classes
– Chapitre 12 Dynamic Data Structures

1
Contenu
• Chapitre 12 : Programmation orienté-objet
– Analyse
– Conception
– Programmation
• Chapitre 13: Classes
– Déclaration, définition, utilisation
– Constructeurs, destructeurs
– Opérateurs
• Chapitre 14: Structures de données dynamiques
– Allocation de mémoire
– Listes
– Applications : piles, files, listes généralisées
2
Chapitre 12 : Programmation orienté-objet
• L’exécution d’un programme OO est effectué par des
objets
• Chaque objet
– a sa propre identité
– a ses propres données (des variables ou d’autres objets)
– fait des requêtes aux autres objets en leur envoyant des
messages
– a ses propres fonctions (appelées méthodes)
• Chaque objet est une instance d’une classe: une
classe « groupe » les objets qui ont le même
comportement (~ types et variables)
• Les classes sont organisées en une structure
arborescente, appelée hiérarchie
3
d’héritage (non
expliquée dans ce cours)
Exemple simple: une réservation de train

• Alice désire avoir une réservation pour aller par


train à Paris dimanche prochain.
• Alice demande à Tom (qui travaille pour une agence
de voyage) d’effectuer une réservation pour un train
pour Paris.
• Tom demande à Sally (qui travaille pour la
compagnie ferrovière) l’horaire et informe Alice
• Alice marque son accord pour l’horaire à Tom
• Tom confirme à Sally
• ... 4
Exemple simple: une réservation de train

• Interactions entre “agents”

Alice DB des
horaires
Tom Sally
Compagnie
de train
Agence de
voyage

Note: d’autres agents


5 peuvent être impliqués
Elements de programmation OO

• L’exécution (exemple le scenario “réservation”) est réalisé


par des Objets

Exemple: Alice, Tom, Sally, DB, ...

• Les objets se font des requêtes à travers l’envoi de Messages.


Exemple : Alice demande à Tom d’effectuer une réservation pour un
train pour Paris
• Le recepteur du message peut l’accepter et effectuer l’action
en utilisant ses propres données et renvoie un résultat.

• Les comportements possibles d’un objet est donné par les


méthodes définies pour cet objet (~ procédures associées).
6
Encapsulation

• L’encapsulation OO est le groupement de données


et de procédures traitant ces données.

Données Comportement

7
Information Hiding (Masquage d’information)

• Technique de masquage des détails internes


• Seul un objet est peut modifier ses données (non-
interférence)

Interface
DATA BEHAVIOR

8
Que peut modéliser une classe ?

• Choses tangibles: • Incidents (Evénements)


– Avion – Décision
– Voiture – Décollage, …, Crash
– Forme
– Document • Intéractions
– Personne – Contrat
– Imprimante – Mariage
• Rôles
– Employé, Employeur • …
– Pilote, Passager
– Joueur, Supporter, Journaliste

9
Exemple

Objets
Classe Asc1BatUA:ascenseur
Ascenseur
Haut
Direction
2
Etage
Aller_vers( )
Stop ( ) Asc2BatNO:ascenseur
Quel_étage ( )
Stationnaire
8

10
Objet

• Un objet a:
– Un état (ensemble des valeurs des attributs)
– Un comportement
– Une identité
• La structure et le comportement des objets similaires
est défini par une classe.

11
Classe (Notation UML)

• Attributs de données
– Visibilité (+ : public; # : protected; - : private)
– Nom
Window
– Type + position : Coordinate = (0,0)
# lenght : Integral
– Valeur initiale # height : Integral
- visibility : Boolean

• Méthodes (opérations) + display () : Boolean

}
– Visibilité + create (position : const Point&)

– Nom
– Arguments (paramètres) Signature
– Type de retour

12
Attributs // champs en C++
Exemple sans méthode : tableau avec clé et information satellite:
typedef char TypeOfKey;
typedef int TypeOfElem;
class Entree
{
public: Attributs de la classe
TypeOfElem e;
TypeOfKey k;
};
typedef Entree Vecteur[max];
Entree x;
Vecteur v;

x.e = 47;
x.k = 'a';
v[3].e = 16;
13
v[3].k = 'h';
Relations entre objets

Alice DB des
horaires

Tom Sally
Compagnie
de train
Agence de
voyage

• Plusieurs types de relations peuvent exister entre des objets


(classes) – Exemples:
– Anne est la mère de Julie
– Un bateau est un véhicule
– Anne est la propriétaire de cette voiture
– Ma voiture a 4 roues 14
4 types de relations

• Association
• Aggrégation
• Composition

• Généralisation (Héritage)
(pas dans ce cours)
Remarque: l’exemple précédant est un diagramme d’objets UML
Généralement on regarde le diagramme de classe qui montre les liens
entres les classes définies dans l’application

15
(UML est un langage graphique utiliser pour analyser les systèmes OO à concevoir)
Association

• Représente la Relation “connaît” entre les


classes (aussi appelé lien)
– Exemples
• Est marié à
• Travaille pour
• Est le propriétaire de

16
Association : notation UML

Diagramme de classe

Rôle Nom

employé Travaille pour employeur


Personne Société
0..1
*

Multiplicité
Multiplicity
17
Association

• Caractéristiques :
– Association nom
– Pour chque extrémité
• Multiplicité
– rien : non spécifié
– * : zéro ou plus
– 0..1 : optionel
– 1 : 1 et un seul 1
• Nom de rôles
• Navigabilité

• Note: on aura les mêmes caractéristiques pour les Aggrégation &


Composition (voir plus bas)

18
Association: notation UML

Diagramme d’objet

John : Personne OA Group : Société

Isabelle : Personne

Alain : Personne

Anne : Personne IBM : Société

19
Association: UML Notation

Diagramme de classe

1
*
Ordre Client

Navigabilité

20
Association: other example

Diagramme de classe

0..1 patron

0..*
Personne
employé

Diagramme d’objet

employé patron
John:Personne Mary:Personne

21
Agrégation & Composition

• Represente la relation “est composé de” ou “fait


partie de” entre instances de classes
– Examples
• Une voiture a un moteur
• Un segment est formé de 2 points
• Un polygone est dessiné dans un certain style
• Avec la composition l’objet faisant partie peut appartenir
qu’à un seul contenant (durée de vie plus petite ou égale)

22
Aggrégation & Composition : Notation

Diagramme de classe
Contrainte

Composition

{ordered}
Points
3..*
Polygone
*
Style
1
couleur
Agrégation

23
Relation « est » (héritage)
• Une (sur)classe possède des caractéristiques
communes à d ’autres (sous)classes
• Une hiérarchie peut être construite
• Héritage => réutilisation, librairies, …
• Exemple d’héritage
Attributs communs véhicule

héritage

voiture bateau train vélo


Attributs spécifiques
24
Analyse OO - Relation « est »
• Exemple d ’héritage
Attributs:
nom, prénom
Personne

Attributs:
ceux de la Etudiant Professeur
personne, * *
n° inscription
année *
Cours *
* 25
Analyse OO

• Objectif : analyser et spécifier les besoins, comprendre


et décrire ce que le programme doit faire
• Démarche (itérative; partie « structure statique »)
– Trouver les objets faisant partie du modèle
– Définir leurs attributs
– Etablir les relations qui les relient

26
Analyse OO

• Comment trouver les objets ?


– Considérer les entités réelles de l’environnement
– Partir de scénarios représentatifs (partie dynamique et
comportementale) et vérifier que tous les services que
doivent rendre les objets sont disponibles
• Relations : est composé de (agrégation et
composition), connaît (association), est (héritage)

27
Conception OO

• Le modèle de l’analyse est rendu plus concret, et le


« comment les problèmes doivent être résolus? »
est abordé
• Deux parties
– Conception du système : modularisation du système en
sous-systèmes, communication avec l’environnement
– Conception détaillée des objets : ajouter les détails
nécessaires à la couverture des fonctions désirées et des
messages à traiter entre clients et classes - choix des
algorithmes (opérations à effectuer) et des structures de
données (construction interne)

28
Programmation OO - Un « bon » programme
• Correct : ne pas contenir d’erreurs par rapport à ce qui a été
spécifié (mais la spécification est-elle correcte ?)
• Efficace : utiliser les ressources au mieux
• Réutilisable : permettre à d’autres programmes d’être
composés sur base de modules déjà prêts et testés ; nécessite
une conformité de conception, des données, des appels
systèmes, et des interfaces bien définies
– Diminue le coût de développement
– Diminue le temps de développement
– Améliore la qualité des logiciels produits
• Adaptable : permettre la maintenance (correction d’erreurs,
ajout ou modification de fonctionnalités) ; basé sur une grande
cohésion interne, un faible couplage externe, et le principe
d’information hiding
29
Programmation OO - 3 concepts clés

• Encapsulation et information hiding


– Cacher tout ce qui définit les propriétés des objets en un
seul endroit, de telle sorte que d ’autres objets ne puissent
ni voir ni accéder à ces informations
• Héritage
– Partir d ’objets existants et leur ajouter / supprimer /
modifier des attributs en vue de créer de nouveaux objets
• Généricité
– Créer des codes qui puissent être utilisés avec différentes
classes d’objets, telles que les containers (liste, ensemble)

30