OOAD - Modèle objet
Le modèle objet visualise les éléments d'une application logicielle en termes d'objets. Dans ce chapitre, nous examinerons les concepts de base et les terminologies des systèmes orientés objet.
Objets et classes
Les concepts d'objets et de classes sont intrinsèquement liés les uns aux autres et forment le fondement du paradigme orienté objet.
Objet
Un objet est un élément du monde réel dans un environnement orienté objet qui peut avoir une existence physique ou conceptuelle. Chaque objet a -
Identité qui le distingue des autres objets du système.
État qui détermine les propriétés caractéristiques d'un objet ainsi que les valeurs des propriétés que contient l'objet.
Comportement qui représente les activités visibles de l'extérieur effectuées par un objet en termes de changements dans son état.
Les objets peuvent être modélisés en fonction des besoins de l'application. Un objet peut avoir une existence physique, comme un client, une voiture, etc. ou une existence conceptuelle immatérielle, comme un projet, un processus, etc.
Classe
Une classe représente une collection d'objets ayant les mêmes propriétés caractéristiques qui présentent un comportement commun. Il donne le plan ou la description des objets qui peuvent être créés à partir de celui-ci. La création d'un objet en tant que membre d'une classe est appelée instanciation. Ainsi, object est une instance d'une classe.
Les constituants d'une classe sont -
Un ensemble d'attributs pour les objets qui doivent être instanciés à partir de la classe. En général, les différents objets d'une classe ont des différences dans les valeurs des attributs. Les attributs sont souvent appelés données de classe.
Un ensemble d'opérations qui décrivent le comportement des objets de la classe. Les opérations sont également appelées fonctions ou méthodes.
Example
Considérons une classe simple, Circle, qui représente le cercle de la figure géométrique dans un espace bidimensionnel. Les attributs de cette classe peuvent être identifiés comme suit -
- x – coord, pour désigner la coordonnée x du centre
- coordonnée y, pour désigner la coordonnée y du centre
- a, pour désigner le rayon du cercle
Certaines de ses opérations peuvent être définies comme suit -
- findArea (), méthode pour calculer la surface
- findCircumference (), méthode pour calculer la circonférence
- scale (), méthode pour augmenter ou diminuer le rayon
Lors de l'instanciation, des valeurs sont attribuées pour au moins certains des attributs. Si nous créons un objet my_circle, nous pouvons attribuer des valeurs telles que x-coord: 2, y-coord: 3 et a: 4 pour décrire son état. Or, si l'opération scale () est effectuée sur mon_cercle avec un facteur d'échelle de 2, la valeur de la variable a deviendra 8. Cette opération amène un changement d'état de mon_cercle, c'est-à-dire que l'objet a présenté un certain comportement.
Encapsulation et masquage des données
Encapsulation
L'encapsulation est le processus de liaison des attributs et des méthodes ensemble au sein d'une classe. Grâce à l'encapsulation, les détails internes d'une classe peuvent être cachés de l'extérieur. Il permet d'accéder aux éléments de la classe de l'extérieur uniquement via l'interface fournie par la classe.
Masquage des données
En règle générale, une classe est conçue de telle sorte que ses données (attributs) ne sont accessibles que par ses méthodes de classe et sont isolées d'un accès extérieur direct. Ce processus d'isolation des données d'un objet est appelé masquage de données ou masquage d'informations.
Example
Dans la classe Circle, le masquage des données peut être incorporé en rendant les attributs invisibles de l'extérieur de la classe et en ajoutant deux méthodes supplémentaires à la classe pour accéder aux données de classe, à savoir -
- setValues (), méthode pour affecter des valeurs à x-coord, y-coord et a
- getValues (), méthode pour récupérer les valeurs de x-coord, y-coord et a
Ici, les données privées de l'objet my_circle ne sont pas accessibles directement par une méthode qui n'est pas encapsulée dans la classe Circle. Il doit plutôt être accédé via les méthodes setValues () et getValues ().
Message passant
Toute application nécessite un certain nombre d'objets interagissant de manière harmonieuse. Les objets d'un système peuvent communiquer entre eux en utilisant la transmission de messages. Supposons qu'un système ait deux objets: obj1 et obj2. L'objet obj1 envoie un message à l'objet obj2, si obj1 veut que obj2 exécute l'une de ses méthodes.
Les caractéristiques de la transmission de messages sont -
- Le message passant entre deux objets est généralement unidirectionnel.
- La transmission de messages permet toutes les interactions entre les objets.
- Le passage de messages implique essentiellement l'appel de méthodes de classe.
- Les objets de différents processus peuvent être impliqués dans la transmission des messages.
Héritage
L'héritage est le mécanisme qui permet de créer de nouvelles classes à partir de classes existantes en étendant et en affinant ses capacités. Les classes existantes sont appelées les classes de base / classes parentes / super-classes, et les nouvelles classes sont appelées les classes dérivées / classes enfants / sous-classes. La sous-classe peut hériter ou dériver les attributs et méthodes de la ou des super-classes à condition que la super-classe le permette. En outre, la sous-classe peut ajouter ses propres attributs et méthodes et peut modifier n'importe laquelle des méthodes de super-classe. L'héritage définit une relation «est - une».
Example
A partir d'une classe de mammifères, un certain nombre de classes peuvent être dérivées telles que l'homme, le chat, le chien, la vache, etc. Les humains, les chats, les chiens et les vaches ont tous les caractéristiques distinctes des mammifères. De plus, chacun a ses propres caractéristiques. On peut dire qu'une vache «est - un» mammifère.
Types d'héritage
Single Inheritance - Une sous-classe dérive d'une seule super-classe.
Multiple Inheritance - Une sous-classe dérive de plusieurs super-classes.
Multilevel Inheritance - Une sous-classe dérive d'une super-classe qui à son tour est dérivée d'une autre classe et ainsi de suite.
Hierarchical Inheritance - Une classe a un certain nombre de sous-classes dont chacune peut avoir des sous-classes ultérieures, se poursuivant sur un certain nombre de niveaux, de manière à former une structure arborescente.
Hybrid Inheritance - Une combinaison d'héritage multiple et multi-niveaux pour former une structure en treillis.
La figure suivante présente des exemples de différents types d'héritage.
![](https://assets.edu.lat/object_oriented_analysis_design/images/inheritance.jpg)
Polymorphisme
Le polymorphisme est à l'origine un mot grec qui signifie la capacité de prendre plusieurs formes. Dans le paradigme orienté objet, le polymorphisme implique l'utilisation d'opérations de différentes manières, selon l'instance sur laquelle elles opèrent. Le polymorphisme permet aux objets avec différentes structures internes d'avoir une interface externe commune. Le polymorphisme est particulièrement efficace lors de la mise en œuvre de l'héritage.
Example
Considérons deux classes, Circle et Square, chacune avec une méthode findArea (). Bien que le nom et le but des méthodes dans les classes soient les mêmes, l'implémentation interne, c'est-à-dire la procédure de calcul de l'aire, est différente pour chaque classe. Lorsqu'un objet de la classe Circle invoque sa méthode findArea (), l'opération trouve la zone du cercle sans aucun conflit avec la méthode findArea () de la classe Square.
Généralisation et spécialisation
La généralisation et la spécialisation représentent une hiérarchie de relations entre les classes, où les sous-classes héritent des super-classes.
Généralisation
Dans le processus de généralisation, les caractéristiques communes des classes sont combinées pour former une classe à un niveau supérieur de hiérarchie, c'est-à-dire que les sous-classes sont combinées pour former une super-classe généralisée. Il représente une relation «est - une - sorte - de». Par exemple, «la voiture est une sorte de véhicule terrestre» ou «le navire est une sorte de véhicule nautique».
Spécialisation
La spécialisation est le processus inverse de généralisation. Ici, les caractéristiques distinctives des groupes d'objets sont utilisées pour former des classes spécialisées à partir de classes existantes. On peut dire que les sous-classes sont les versions spécialisées de la super-classe.
La figure suivante montre un exemple de généralisation et de spécialisation.
![](https://assets.edu.lat/object_oriented_analysis_design/images/specialization.jpg)
Liens et association
Lien
Un lien représente une connexion à travers laquelle un objet collabore avec d'autres objets. Rumbaugh l'a défini comme «une connexion physique ou conceptuelle entre des objets». Grâce à un lien, un objet peut invoquer les méthodes ou naviguer dans un autre objet. Un lien décrit la relation entre deux objets ou plus.
Association
L'association est un groupe de liens ayant une structure et un comportement communs. L'association décrit la relation entre les objets d'une ou de plusieurs classes. Un lien peut être défini comme une instance d'une association.
Degré d'une association
Le degré d'une association indique le nombre de classes impliquées dans une connexion. Le degré peut être unaire, binaire ou ternaire.
UNE unary relationship connecte des objets de la même classe.
UNE binary relationship relie des objets de deux classes.
UNE ternary relationship connecte des objets de trois classes ou plus.
Rapports de cardinalité des associations
La cardinalité d'une association binaire indique le nombre d'instances participant à une association. Il existe trois types de rapports de cardinalité, à savoir -
One–to–One - Un seul objet de classe A est associé à un seul objet de classe B.
One–to–Many - Un seul objet de classe A est associé à de nombreux objets de classe B.
Many–to–Many - Un objet de classe A peut être associé à de nombreux objets de classe B et inversement un objet de classe B peut être associé à de nombreux objets de classe A.
Agrégation ou composition
L'agrégation ou la composition est une relation entre les classes par laquelle une classe peut être constituée de toute combinaison d'objets d'autres classes. Il permet aux objets d'être placés directement dans le corps d'autres classes. L'agrégation est appelée relation «partie-de» ou «a-une», avec la capacité de naviguer du tout à ses parties. Un objet agrégé est un objet composé d'un ou plusieurs autres objets.
Example
Dans la relation, «une voiture a - un moteur», la voiture est tout l'objet ou l'ensemble et le moteur est une «partie» de la voiture. L'agrégation peut désigner -
Physical containment - Exemple, un ordinateur est composé d'un moniteur, d'un processeur, d'une souris, d'un clavier, etc.
Conceptual containment - Exemple, l'actionnaire a – une part.
Avantages du modèle objet
Maintenant que nous avons passé en revue les concepts de base relatifs à l'orientation des objets, il serait intéressant de noter les avantages que ce modèle a à offrir.
Les avantages de l'utilisation du modèle objet sont:
Cela permet un développement plus rapide des logiciels.
Il est facile à entretenir. Supposons qu'un module développe une erreur, puis un programmeur peut réparer ce module particulier, tandis que les autres parties du logiciel sont toujours opérationnelles.
Il prend en charge des mises à niveau relativement simples.
Il permet la réutilisation d'objets, de conceptions et de fonctions.
Il réduit les risques de développement, notamment lors de l'intégration de systèmes complexes.