• Aucun résultat trouvé

Analyse et conception UML – Cours et formation gratuit

N/A
N/A
Protected

Academic year: 2022

Partager "Analyse et conception UML – Cours et formation gratuit"

Copied!
21
0
0

Texte intégral

(1)

Analyse et conception

Cours de 1

e

année ingénieur fabien.romeo@fromeo.fr

http://www.fromeo.fr

(2)

Diagramme de classes :

Interface

(3)

fabien.romeo@fromeo.fr 3

Encapsulation

• [Parnas72] information hiding

– The secrets of a module: Design decisions that can be changed without affecting any other module

– The assembly of a system made of modules is usually best done if the interfaces are simple and well-understood by all involved

Partie publique

Partie secrète

(4)

Interface (définitions)

• imagée : c’est la partie émergée de l’iceberg.

• d’un objet (exécution) : un ensemble de messages compris par un objet.

• d’une classe (conception) : l’interface d’une classe fournit sa vue externe : on augmente l’abstraction en cachant la structure et les secrets du comportement de la classe.

• UML : an interface is a kind of classifier that represents a declaration of a set of coherent public features and

obligations. An interface specifies a contract; any

instance of a classifier that realizes the interface must fulfill that contract.

(5)

fabien.romeo@fromeo.fr 5

Notion d’interface

• Les interfaces déclarent des opérations (et des propriétés*) publiques offertes par une classe

• Déclaration => elles ne sont pas instanciables !

• ≈ classes abstraites pour lesquelles toutes les opérations sont abstraites

• Une classe qui réalise une interface doit présenter les méthodes publiques qui se conforment à la spécification de l’interface

• Une classe peut posséder plusieurs interfaces (regroupement de services liés)

* A property declared on an Interface does not necessarily imply that there will be such a property on a classifier realizing that Interface (e.g., it may be realized by equivalent get and set operations). [UML2007]

(6)

Interface fournie

• Expose un ensemble de services mis à disposition des clients d’une classe

• Permet d’établir un faible couplage entre le client et la classe qui implémente réellement les services fournis

• Composition propre des classes du système

• Favorise la substituabilité des classes pour

l’implémentation des différents services (maintenance, test, adaptabilité, …)

Lollipop notation realization

(7)

fabien.romeo@fromeo.fr 7

Interface requise

• Duale à la notion d’interface fournie

• Déclaration explicite des dépendances fonctionnelles requises par une classe pour fonctionner

• Permet de contenir la cohésion d’une classe pour en favoriser la réutilisation

Socket notation usage

(8)

Assemblage par interface

Connector notation

Explicit notation

(9)

fabien.romeo@fromeo.fr 9

Simulateur de canards : héritage

(10)

Simulateur de canards :

une interface

(11)

fabien.romeo@fromeo.fr 11

Simulateur de canards :

deux interfaces

(12)

Substitution de classes

réalisant une interface

(13)

fabien.romeo@fromeo.fr 13

Héritage d’interfaces

• Différent du lien « realize »

• Même notion que l’héritage de classes

(14)

Principe de conception OO

• [GoF95] Programming to an Interface, not an Implementation

• Deux avantages

– les classes clientes n’ont pas besoin de connaître le type spécifique des objets qu’elles manipulent du moment qu’ils se conforment aux interface requises

– les classes clientes ne reposent pas sur les classes implémentant ces objets mais

seulement sur la définition de leurs interfaces

(15)

fabien.romeo@fromeo.fr 15

Interface « volant »,

des objets non identifiés ?

• Le simulateur de vol est lié à l’interface « volant » afin de pouvoir modifier/ajouter/supprimer facilement les objets que le simulateur peut faire voler.

• Cependant il lui faut instancier des classes d’objets

volants (i.e. faire des new() ) : on perd alors l’intérêt de l’interface puisque la création des objets volants se fait à l’intérieur du simulateur.

?

new F18() ?

new CanardColvert() ? new CanardMandarin() ?

(16)

Notion de fabrique

• On délègue la gestion de la création d’objets à une fabrique.

• Une fabrique est une classe qui permet d’encapsuler la création d’objets.

if(type.equals("F18")) { return new F18();

}

if(type.equals("CanardColvert")) { return new CanardColvert();

}

(17)

fabien.romeo@fromeo.fr 17

Design Pattern Fabrique

• Le pattern fabrique fournit un framework pour la création d’objets abstraits (interface)

• La création des objets concrets est déléguée à

des fabriques concrètes

(18)

Interfaces dans les design patterns

Composite Observer

Par exemple…

(19)

fabien.romeo@fromeo.fr 19

Simulateur de canards : héritage

(20)

Simulateur de canards :

une interface

(21)

fabien.romeo@fromeo.fr 21

Simulateur de canards :

deux interfaces

Références

Documents relatifs

Afin de pouvoir séparer les sources extérieures et intérieures, on défini le bruit généré par le transistor en termes de source de bruit

Une variable de type C peut faire référence à un objet de la classe C. hauteur

Il s’agit ici de décrire les séquences d’interaction entre l’acteur et le logiciel pour réaliser le cas d’utilisation. Passer une

(In the current implementation, that index cannot be a pseudo-index.) In case of runtime errors, that function will be called with the error message and its return value will be

– Description des activités d’un cas d’utilisation ou d’une opération – Diagramme de type : état-action. – Exécution d’activités différentes selon le résultat

– Diagramme d'état généralisant pour chaque classe ayant Diagramme d'état généralisant pour chaque classe ayant un comportement réactif aux événements les scénarios et

Le modèle des classes d’UML saisit la structure statique d'un système en montrant les objets dans le système, les relations entre les objets, les attributs et

Bien au contraire, l'utilité d'UML étant de vous permettre de réfléchir à votre application avant de vous lancer dans sa réalisation, il faut prendre (et non "perdre")