Analyse et conception orientées objets

Support de cours analyse et conception orientées objets, tutoriel & guide de travaux pratiques UML en pdf.

Aspects de la modélisation

On définit en principe trois aspects dans une modélisation orientée objets :
• Statique : c’est un aspect orienté vers les objets dans le système, et leurs relations mutuel-les. Cet aspect peut être décrit à l’aide d’un diagramme d’objets, où les noeuds sont les objets, et les liaisons entre noeuds les relations entre les objets.
• Fonctionnel : il s’agit de la description de l’évolution des données au travers du pro-gramme. Un modèle fonctionnel est défini généralement par un diagramme de flux de données.
• Dynamique : C’est la description des aspects du système qui se modifient au cours du temps. Le modèle dynamique contient des diagrammes d’état, dans lequel les noeuds sont des états, et les liaisons des transitions d’un état vers un autre. Les transitions sont induites par des évènements.
Ces divers aspects peuvent se traduire en vues différentes; un même aspect peut aussi donner naissance à des vues différentes dans certains cas.

Quelques règles de base

Quelle que soit la méthode utilisée lors de la définition du modèle, il y a certaines règles de base communes à tout design qu’il est nécessaire de respecter. La première est la définition des relations entre les objets. Ces relations peuvent être de plusieurs types, à la base :
• La contenance, un objet contient un autre objet. Par exemple, une fenêtre affichant un message informatif dans un système à multifenêtrage (Open Look, MOTIF, Mac, Windows) contient des boutons Help, Ok, Cancel, etc… Ce type de relation est également appelé relation de type « has a ». La relation inverse est souvent notée ”is part of”. Ce type de relation est aussi appelé aggrégation.
• L’héritage d’implémentation. On exprime par là que l’objet descendant (qui hérite le comportement) est implémenté sous forme de l’objet ancêtre. Il ne s’agit que d’une relation d’implémentation. Ainsi, une liste de personnes peut être implémentée à l’aide d’un tableau de dimension variable, d’une liste, voire même à l’aide d’ensembles. Il s’agit d’un détail d’implémentation. Le fait que ma liste soit implémentée d’une manière ou d’une autre n’a pas d’incidences sur le contenu informatif et fonctionnel de ma liste. Par contre, le choix peut s’avérer important dans l’optique de la réutilisation de code, ou de facilité de l’implémentation de certaines fonctionnalités (p. ex. accès direct aux personnes par hachage, par recherche binaire, etc…) Ce type de relation est souvent appelé relation de type “is implemented in terms of”. De nombreux auteurs déconseillent l’utilisation de ce type de relation, préférant lui substituer la contenance; il est toutefois possible que certains détails d’implémentation du langage utilisé imposent l’utilisation de l’héritage d’implémentation dans un problème donné (utilisation de membres protégés en C++, par exemple). Certains langages ne permettent pas de définir une telle forme d’héritage (par exemple Java).
• L’héritage de définition. Cette relation exprime que l’objet descendant EST un objet ancêtre, avec une certaine spécialisation. Ainsi, pour reprendre ma liste de personnes, je peux définir, à partir de l’objet “Personne”, les spécialisations suivantes : “Personne amie”, “Relation d’affaires”, etc.. La personne amie aura une adresse, comme la personne de base, mais peut-être la complétera-t-on par une date de naissance/anniversaire, le nom des enfants, etc… La relation d’affaires aura pour attribut complémentaire sa raison sociale. Mais les deux objets sont également des personnes, et tout ce qui est valable pour une personne est également valable pour ces deux spécialisations. On appelle fréquemment ce type de relation une relation de type “is a” ou ”is kind of”.
• La connaissance mutuelle ou non. Cette relation implique que deux objets se connaissnet, ou encore que l’un connaît l’autre; ceci peut se traduire par une référence ou un pointeur sur l’autre objet.
L’héritage et l’aggrégation sont le plus souvent combinés; ainsi, la figure5.1, page55 montre qu’une molécule d’eau est une spécialisation (héritage) d’une molécule générique, et se compose de trois atomes, deux d’hydrogène et un d’oxygène. Le code implémentant ce modèle en C++ est donné ci-après :
// Generated by Together #ifndef MOLECULE_H #define MOLECULE_H class Molecule

………

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *