Académique Documents
Professionnel Documents
Culture Documents
Références:
• 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 DB des
horaires
Tom Sally
Compagnie
de train
Agence de
voyage
Données Comportement
7
Information Hiding (Masquage d’information)
Interface
DATA BEHAVIOR
8
Que peut modéliser une classe ?
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
}
– 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
• 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
16
Association : notation UML
Diagramme de classe
Rôle Nom
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é
18
Association: notation UML
Diagramme d’objet
Isabelle : Personne
Alain : Personne
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
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
Attributs:
ceux de la Etudiant Professeur
personne, * *
n° inscription
année *
Cours *
* 25
Analyse OO
26
Analyse OO
27
Conception OO
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
30