CM Oo Notions
CM Oo Notions
CM Oo Notions
Mais aussi :
Apparition de besoins nouveaux (années 80)
Domaines d'application de plus en plus nombreux
Applications de plus en plus complexes, notamment en interactions homme-machine (IHM)
La réutilisabilité des logiciels devient une nécessité économique
Besoin d'abstraction des données
Besoin de modularité, d'évolutivité
Besoin de communication
Besoin de maintenance, qui devient, de plus en plus couteuse
1. Conception : où est le problème ?
1. Initialiser stock = 0
2. Décharger camion
3. Stock = Stock + 1
4. Si Camion est vide alors aller à étape 6
5. Sinon aller à l’étape 2
6. Imprimer « le stock déchargé est : » Stock
7. Fin du programme
Conception à la SPAGHETTI
• Complexité de conception
• Complexité de maintenance et de suivi
• Pas facile à comprendre et à communiquer
1. Conception : Histoire, évolution des idées et réflexions
Décomposition en objets :
1970. Alan Kay : … Designing by pieces
sous-classification
polymorphisme Orienté-Objet
Un programme ?
est un ensemble de procédures
• Qui utilisent des données
• Qui modifient des données
Programmer ?
c’est concevoir des traitements
• Elaboration d’algorithmes
Programmation structurée ?
séparation des données et des traitements
• Exemple : Évolution d’une application de gestion de bibliothèque pour gérer une
médiathèque
Plan
Programmation orientée-objet ?
Centralisation des données et des traitements, au sein d’une même entité : l’objet
• Un objet est une entité
• Qui possède une identité (un nom)
• Dont les attributs décrivent l’état
• Dont les opérations (méthodes) décrivent le comportement
• Un objet communique avec un autre objet par envoi de messages
2. Orient objet : Concept
Classe
Marque
Puissance fiscale
Vitesse maximale
Vitesse courante
Dans un système, réussir à identifier les acteurs = les objets = les entités = ...
2. Orienté objet : Pourquoi ?
l’Objet
Gains ?
Maîtrise des interactions
Modularité
Facilité de maintenance
Réutilisabilité
Facilité de codage
Evolutivité du système
Utilisation de la mémoire :
Dans les langages procéduraux, il est nécessaire de définir toutes les données dont on va
avoir besoin ; Le compilateur réserve systématiquement toute la place en mémoire,
nécessaire à ces données, et durant toute l’exécution du programme.
En programmation objet, l’utilisation de la mémoire est dynamique : fonction des
instances qui sont utilisées à un moment donné.
2. Orient objet : Pourquoi ?
2. Orienté objet : Comment décomposer ?
Fonction
A
- -
D - C
Sous-fonction 1 Sous-fonction 2
- - E
1967. SIMULA:
1er langage de programmation à implémenter le concept de type abstrait, à l’aide de
classes
1986. C++ :
Par Bjarne Stroustrup
1994. Java :
Par Sunsoft, langage de classe «à la smalltalk» avec syntaxe de type C++
2. Orienté objet : Classes & objets
Héritage :
Relation qui permet la transmission des propriétés d'une classe (ses attributs et
méthodes) vers une sous-classe :
• Une sous-classe est une spécialisation de sa super-classe ou classe mère
• Une super-classe est une généralisation de ses sous-classes
Engin
est-un
Véhicule Avion
Moto
Voiture Camion
2. Orient objet : Classes & objets
Généralisation :
La super-classe
La sous-classe
Est-un
2. Orienté objet : Classes & objets
Spécialisation :
CompteCourant
CompteCourant Client
numéro Société
nom
solde courant prénom Nom
âge Adresse siège
Code SIRET
UnCompte
950445123
+ 12001
UnClient
Montale
UnAutreCompte
Fabien
43
950445675
- 31789
2. Orienté objet : Relations entre classes
Associations :
Les associations entre classes peuvent être :
• Structurelles
• composition, agrégation
• Situatives
• dans le temps (avant, pendant, après, ...)
• dans l’espace (sur, sous, à gauche de, …)
• Significatives d’un rôle, d’une possession
• directeur de, maire de, piloté par,
• etc.
2. Orienté objet : Relations entre classes
Agrégation :
• Représente une connexion bidirectionnelle non symétrique
• Exprime un couplage plus fort entre classes
• Permet de définir une relation type composé/composants :
• Définit des objets composés d’autres objets
• Permet d’assembler des objets de base, pour construire des objets plus
complexes
Agrégation
Agrégation réflexive type composé / composants
2. Orienté objet : Relations entre classes
Le polymorphisme :
• poly - plusieurs
• morphisme – forme
Jouer Rembobiner
Arrêter Dérouler
... Symboles
polymorphes
Cassette USB
Lecteur CD
2. Orienté objet : Polymorphisme
Le polymorphisme :
• C’est la faculté d'une opération à pouvoir s'appliquer à des objets de classes
différentes
• C’est la propriété de donner le même nom (sélecteur dans le message) :
• À des comportements analogues
• Qui vont donner lieu à des réalisations plus ou moins différentes
• Selon le receveur du message
En termes informatiques
Vehicule convoi[3] =
{
Train("TGV"),
Voiture("twingo"),
Bateau("Titanic")
};
Encapsulation :
• Consiste à masquer les détails d'implémentation d'un objet, en définissant une
interface
• C’est la vue externe d'un objet,
• Elle définit les services accessibles (offerts) aux utilisateurs de l'objet
• Elle facilite l'évolution d'une application car elle stabilise l'utilisation des objets
• Garantit l'intégrité des données, car elle permet d'interdire l'accès direct aux
attributs des objets
Individu
booléen esTuMajeur ()
{Retourne (self.donneMoiTonAge () >= self.ageMajorité() }
Plan
1984. Knuth :
Utilisation des commentaires
Inconvénient : illisibilité et structure non apparente
1990. Rumbaugh:
Diagrammes
1993 Booch :
Diagrammes et légendes
3. UML : Un peu d’histoire …
1984. Knuth :
Utilisation des commentaires
Inconvénient : illisibilité et structure non apparente
Un standard incontournable
UML est un langage qui définit : les éléments de la modélisation et leur sémantique
Vue de déploiement
Vue des
composants Vue des processus
Vue des cas
d’utilisation
Vue Logique
3. UML : Fondements
• Le diagramme d’états-transition
• Permet de décrire les changements d'états d’une classe, en réponse aux interactions
avec d'autres classes ou avec des acteurs
• Principe :
• Automate d'états finis, sous forme de graphes d'états, reliés par des arcs orientés qui
décrivent les transitions
3. UML : Diagrammes de cas d’utilisation ?
• Diagramme de séquence
• Présente les collaborations entre objets selon un point de vue temporel :
• L'ordre d'envoi d'un message est déterminé par sa position sur l'axe vertical
du diagramme
• Le temps s'écoule "de haut en bas" de cet axe
• Pour illustrer un cas d'utilisation ou pour représenter les messages échangés
entre objets
3. UML : Diagrammes de collaboration ?
• Le diagramme de collaboration
• Spécifie le comportement dynamique du système suivant la vision des messages
échangés.
• Modélise les flux de contrôle et illustre la coordination entre objets (instances de
classes) et/ou entre objets et acteurs
3. UML : Diagrammes d’activité ?
• Diagramme d’activités
• Présente le comportement interne d'une opération ou le déroulement d'un cas
d'utilisation
3. UML : Diagrammes de composants ?
• Diagramme de composants
• Permet de décrire l'architecture physique et statique d'une application en terme
de modules (fichiers sources, librairies, exécutables, etc…)
• Montre la mise en oeuvre physique des modèles de la vue logique avec
l'environnement de développement
• Les composants peuvent être organisés en paquetages, qui définissent des sous-
systèmes
3. UML : Diagrammes de déploiement ?
• Diagramme de déploiement
• Montre la disposition physique des matériels qui composent le système et la
répartition des composants sur ces matériels
• Correspond à la vue de déploiement d'une architecture logicielle
• Les ressources matérielles sont représentées sous forme de noeuds
3. UML : Diagrammes ?
Question ?
Réponse
Question ?
• Le chat
• Garfield
• Felix the cat
• La tulipe
• Les tulipes de mon jardin
• La fleur
4. Pratique
Réponse
Question ?
Voi tu re
Réponse
Arbres de généralisation :
Question ?
Où est le problème ?
4. Pratique
Réponse :
Oiseau Oiseau
marcher()
OiseauVolant OiseauNonVolant
Pigeon Autruche
Question ?
Réponse
Question ?
Le secrétaire de mairie veut informatiser la gestion de l’état civil : enregistrement des actes de
naissance, de mariage, de décès.
• Pour une naissance, on enregistre les nom, prénom, date naissance, lieu de naissance de
l’individu.
• Pour un mariage : date de mariage, nom du conjoint et lieu de mariage, éventuellement
date décès.
• Pour un décès, date et lieu décès.
• Lors de la publication du journal annuel de la commune, le secrétaire veut pouvoir
éditer la liste des individus, triés par nom, nés dans l’année écoulée.
Réponse
Le secrétaire de mairie veut informatiser la gestion de l’état civil : enregistrement des actes de
naissance, de mariage, de décès.
• Pour une naissance, on enregistre les nom, prénom, date naissance, lieu de naissance de
l’individu.
• Pour un mariage : date de mariage, nom du conjoint et lieu de mariage, éventuellement
date décès.
• Pour un décès, date et lieu décès.
• Lors de la publication du journal annuel de la commune, le secrétaire veut pouvoir
éditer la liste des individus, triés par nom, nés dans l’année écoulée.
Plan
B B
Rôle A : Client
Rôle B : Fournisseur de
produit final
Rôle C : Négociateur de
contrat
Rôle D : Producteur de
matière première
Avenir : Orienté Agent
Rôle
Interaction
fournisseur Client
Producteur
Agent-Acteur
Rôle Client Rôle Fournisseur Rôle Producteur
Rôle Client
Rôle Producteur
Acheter() Rôle Fournisseur
Fabriquer()
Passer_Commande() Vendre()
Calculer_Coût_Production()
Calculer_coût_Achat() Recevoir_Commande()
Livrer()
Calculer_coût_Vente()
Avenir : AUML
UML AUML
Merci …