Université de Tunis
Conception Orientée
Objets (COO)
2ème année Génie Informatique
Responsable du cours:
Sonda Chtourou Sellami
Sonda Chtourou Sellami COO 2019 - 2020
Etapes du cycle de vie d’un logiciel
Abstraction et compréhension:
niveau communication avec le client
niveau mise en place, évolution et prise en main de l’application
Maîtriser la complexité et d'assurer sa cohérence
L’énergie déployée pour modéliser révèle les difficultés
Les erreurs sur les modèles coûtent bien moins cher
2 Modélisation Statique
Diagrammes de cas d'utilisation
Diagrammes de classes
Diagrammes d'objets
3 Modélisation Dynamique
Diagrammes de séquences
Points forts:
Simplicité du processus de conception
Capacité à répondre rapidement aux besoins des utilisateurs
Points faibles:
Redondance (éventuelle) des données
…
Avantages:
Reflète plus finement les objets du monde réel
Faciliter la modélisation.
Réutilisation des composantes
Extensibilité: architecture logicielle fondée sur les objets du système, plutôt
que sur la fonction qu'il est censé réaliser
Faciliter la modification et les changements / approche est adaptée à la
conception de gros logiciel.
Sonda Chtourou Sellami COO 2019 - 2020 15
Méthodes orientées objets - Historique
Apparition de plus de 50 méthodes (1990-1995): Booch, Classe-Relation,
Fusion, HOOD, OMT, OOA, OOD, OOM, OOSE...) !
Chacune de ces méthodes fournie une notation graphique et des règles pour
élaborer les modèles.
UML est standard pour spécifier, visualiser, concevoir et documenter tous les
aspects d'un système d'information:
Facilite la comparaison et l'évaluation de solutions.
UML est un langage qui permet de représenter des modèles, mais il ne définit
pas le processus d'élaboration des modèles !
Si l'on parle de méthode objet pour UML, c'est par abus de langage !
Le processus est une clé de la réussite d'un projet.
Caractérisé par :
son état: comment réagit l’objet quand on applique ces méthodes?
Attributs (Champs)
son comportement: que peut-on faire avec cet objet?
Méthodes
son identité: comment distinguer les objets qui ont le même état et le même
comportement?
Identifiant
Classe:
Une abstraction d’un ensemble d’objets qui possèdent une structure identique
(liste de propriétés ou attributs) et un même comportement (liste de méthodes)
Lorsque les besoins évoluent (ce qui est toujours le cas), il devient très difficile
d’apprécier l’impact et le coût d’une modification.
Relation
Acteur
Cas
d’utilisation
Nom de l’acteur
« acteur »
Nom de l’acteur
Déposer de
l’argent sur un
compte
Guichetier Annuler un
Chef compte
Créer un compte
Déposer de
l’argent sur un
compte
Guichetier Annuler un
Chef compte
Questions:
Q1: Identifiez les acteurs et les relations entre eux.
Q2: Définissez le DCU correspondant.
Utilisateur de salle
Existe-t-il une relation entre les acteurs ? Oui
Enseignant
Responsable de salle
Notation:
Nom du cas
d’utilsation
. 56
Sonda Chtourou Sellami COO 2019 - 2020
Relations: cas d'utilisation et acteurs
Cas d’utilisation – Acteur secondaire
Ajout du stéréotype « secondary » sur la relation
Institution
Client Entreprise Financière
Caution
Individuel Cliente Gérer compte client
CU enfant
CU A
<<include>>
CU B
<<include>>
<<include>>
CU A
<<extend>>
CU B
Client Commander
<<extend>>
Demander
catalogue
Passer
commande
Client
Client
Rubriques optionnelles
Contraintes non fonctionnelles:
Fiabilité : les accès doivent être sécurisés
Confidentialité : les informations concernant le client ne doivent pas etre divulgués
Contraintes liées à l'interface homme-machine:
Toujours demander la validation des opérations bancaires
….
A2 ….
Enchaînements E1 : Le client décide d’annuler la commande et
d’erreurs d’annuler l’achat
-Dans l’étape 6 du scénario nominal, le client
choisit d’annuler la commande
- Le système affiche un message et le cas
d’utilisation se termine
Classe
Association
Syntaxe:
Télévision
+ no_television : int
+ marque: String
+ prix : float = 0
+ chaine [1 ..10]: Canal
Exemple:
Syntaxe:
Nom association
Classe A Classe B
Exemple:
Travailler pour
Personne Société
Travailler pour
Personne Société
Exemple:
Chaque personne a accès aux films qu’elle a
déjà vus, mais à partir d’un film, on interdit de
retrouver la liste des personnes l’ayant vu.
Rôle de A
A B
Rôle de B
Une voiture est achetée par une Une personne peut acheter
et une seule personne 0 ou n voitures
1 *
1 .. *
PERSONNE rattacher à 0 .. 1 SERVICE
1 0 .. 1
diriger
Cela signifie qu’une personne peut être soit un employé dans une société
soit l’employeur de la société. Mais ne peut pas être à la fois employé et
employeur.
Remarque: Les associations n-aires sont peu fréquentes. Dans la plupart des cas, on utilise
les classes-associations et plusieurs relations binaires.
Exemple:
Personne 0..* 0..* Entreprise
Travaille dans
employé employeur
Poste
Titre : String
Salaire: double
Exemples:
Une voiture a 4 roues
Un dessin contient un ensemble de figures géométriques
Une présentation PowerPoint est composé de transparents
Une équipe de recherche est composée d’un ensemble de personnes
Syntaxe:
A - composite B
Département
Enseignant
1 / 0..1
Syntaxe: A - composite B
VOITURE
{overlapping} précise ici qu’il existe des véhicules amphibie qui sont issus
d’un croisement des sous-classes de véhicule.
Sonda Chtourou Sellami COO 2019 - 2020 118
Types de relation : Héritage
Contraintes sur les généralisations:
{complete} (liste exhaustive de classe) / {incomplete} (les sous-classes
spécifiées ne couvrent pas la super-classe)
Intérêt:
Permet d'imposer des fonctionnalités qu'on souhaite avoir dans toutes les sous-
classes instanciables.
Imposer les signatures des méthodes abstraites pour différentes
implémentations.
Exemple:
Exemple:
Syntaxe:
<<Interface>>
Nom interface
Nom d’interface
Op1()
Classe réalisatrice
Classes
utilisatrices
UML est plus riche que les langages de programmation dans le sens où il offre
des moyens d’expression plus abstraits et plus puissants.
UML JAVA
UML JAVA
import java.util.Date;
Article public class Article{
- nom: String private String nom;
- dateCreation: Date private Date dateCreation;
- Nbpage:int=50 private static int nbpage = 50;
…
}
UML JAVA
UML JAVA
interface Affichable {
…
Affichable void imprimer()
}
UML JAVA
UML JAVA
abstract public class
Personne Personne {
…
UML JAVA
UML JAVA
public class A1 {
private B1 b1;
…
}
public class A2 {
private B2 b2[];
…
}
UML JAVA
public class Homme {
private Femme epouse;
…
}
public class Femme {
private Homme mari;
…
}
UML JAVA
public class Personne {
private Personne subordonne[];
private Personne chef ;
…
}
UML JAVA
public class Voiture {
private String modele;
private Moteur moteur;
private static class Moteur {
private int puissance;
}
…
}
Exemple:
Exemple:
Filière(code,thème,nbheures)
Exemple:
Fournir(codeF#, numProd #)
Composer( numpièce-composante#,
numpièce-composite# )
Méthode 2:
Transformer chaque sous classe en une table.
Tous les attributs de la super classe deviennent des attributs de chaque sous
classe.
Méthode 3:
Transformer la super classe en une table
Transformer chaque sous classe en une table.
La clé primaire de la superclasse devient clé primaire de chaque sous classe
Sonda Chtourou Sellami COO 2019 - 2020 150
Règle 7: Généralisation
Exemple
Personne
Code-Personne
Nom
Prenom
Adresse
Professeur Etudiant
Salaire Noma
Note-Moyenne
Méthode 2:
Etudiant (code-Personne, Nom, Prenom, Adresse, Noma, Note-Moyenne)
Professeur (code-Personne, Nom, Prenom, Adresse, Salaire)
Méthode 3:
Personne (code-Personne,Nom,Prenom,Adresse)
Professeur (code-Personne#, Salaire)
Etudiant (code-Personne#, Noma, Note-Moyenne)
Occupation
Date
Heure
Durée
Cours
Code-Cours Salle
Nom-Cours est occupée par occupe Code-Salle
Description 0..n 1..n Localisation
Nombre-ECT
Auditoire SalleInfo
Nombre-Places Nombre-Ordinateurs
Représentation :
L’ état d’un objet est déterminé par les valeurs de ses attributs.
Il est possible de nommer un état afin d’indiquer clairement dans quel état se
trouve un objet.
Remarques:
Généralement, l’objet qui commence l’interaction est placé le premier à
gauche.
Les acteurs peuvent être représentés par des rectangles (stéréotypés)
La ligne de vie (life line) est représentée par une ligne verticale en traits
pointillés placée sous le symbole de l’objet concerné.
Cette ligne de vie précise l’existence d’un objet pendant une période de temps.
En général, la ligne de vie d’un objet est représentée sur toute la hauteur du
diagramme.
Sonda Chtourou Sellami COO 2019 - 2020 176
Objets - Période d’activité
Le diagramme de séquences permet de représenter les périodes d’activation
des objets.
Une période d’activité correspond au temps pendant lequel un objet effectue
une action.
Les périodes d’activité se représentent par des bandes rectangulaires placées
sur les lignes de vie.
A B
Message d’activation
période d’activité
A active B, la période d’activité
de A recouvre celle de B
Les messages sont ordonnés selon leurs positions sur les lignes de vie.
Exemple:
objet A invoque une méthode d’un objet B, A reste bloqué tant que B n’a pas
terminé.
Il est représenté par une flèche avec un triangle plein à son extrémité.
d’activation.
Évènement de A
réception est connu Évènement d’envoi
est connu
Message
trouvé
Message perdu
A B
t
{t’-t<7s}
t’
Définis par:
Un opérateur d’interaction
L’opérateur conditionne la signification du fragment combiné (exp ref,
opt, alt, loop, critical, parallel..)
Condition de garde
Présentée entre [ ]
Une ou plusieurs opérandes d’interaction
Conditionnée par la condition de garde (la condition doit être vraie)
A B C
opt [condition]
message1()
message2()
188
A B C
Séparation des
opérandes
alt H()
[Condition1]
E()
[Condition2]
G()
Cadre d’interaction
[else] F()
A B
loop (0,n)
message()
loop [condition]
message()
A B C
par T()
M()
N()
E()
H()
R()
A B C
critical message1()
message2()
message3()
A B
break [condition]
E()
A B C
sd : operation1
message1()
message2()
A B C
ref