OOAD - Principes orientés objet

Principes des systèmes orientés objet

Le cadre conceptuel des systèmes orientés objet est basé sur le modèle objet. Il existe deux catégories d'éléments dans un système orienté objet -

Major Elements- Par majeur, on entend que si un modèle ne possède aucun de ces éléments, il cesse d'être orienté objet. Les quatre éléments principaux sont -

  • Abstraction
  • Encapsulation
  • Modularity
  • Hierarchy

Minor Elements- Par mineur, on entend que ces éléments sont une partie utile, mais pas indispensable du modèle objet. Les trois éléments mineurs sont -

  • Typing
  • Concurrency
  • Persistence

Abstraction

L'abstraction signifie se concentrer sur les caractéristiques essentielles d'un élément ou d'un objet dans la POO, en ignorant ses propriétés étrangères ou accidentelles. Les caractéristiques essentielles sont relatives au contexte dans lequel l'objet est utilisé.

Grady Booch a défini l'abstraction comme suit -

"Une abstraction désigne les caractéristiques essentielles d'un objet qui le distinguent de tous les autres types d'objets et fournissent ainsi des limites conceptuelles clairement définies, par rapport à la perspective du spectateur."

Example - Lorsqu'un étudiant de classe est conçu, les attributs numéro_enrôlement, nom, cours et adresse sont inclus, tandis que des caractéristiques telles que pulse_rate et size_of_shoe sont éliminées, car elles ne sont pas pertinentes dans la perspective de l'établissement d'enseignement.

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. La classe a des méthodes qui fournissent des interfaces utilisateur par lesquelles les services fournis par la classe peuvent être utilisés.

Modularité

La modularité est le processus de décomposition d'un problème (programme) en un ensemble de modules afin de réduire la complexité globale du problème. Booch a défini la modularité comme -

«La modularité est la propriété d'un système qui a été décomposé en un ensemble de modules cohésifs et faiblement couplés.»

La modularité est intrinsèquement liée à l'encapsulation. La modularité peut être visualisée comme un moyen de mapper des abstractions encapsulées dans des modules physiques réels ayant une cohésion élevée au sein des modules et leur interaction ou couplage inter-module est faible.

Hiérarchie

Dans les mots de Grady Booch, «la hiérarchie est le classement ou l'ordre de l'abstraction». Grâce à la hiérarchie, un système peut être constitué de sous-systèmes interdépendants, qui peuvent avoir leurs propres sous-systèmes et ainsi de suite jusqu'à ce que les composants de niveau le plus petit soient atteints. Il utilise le principe de «diviser pour conquérir». La hiérarchie permet la réutilisation du code.

Les deux types de hiérarchies dans OOA sont -

  • “IS–A” hierarchy- Il définit la relation hiérarchique dans l'héritage, par laquelle à partir d'une super-classe, un certain nombre de sous-classes peuvent être dérivées qui peuvent à nouveau avoir des sous-classes et ainsi de suite. Par exemple, si nous dérivons une rose de classe à partir d'une fleur de classe, nous pouvons dire qu'une rose «est une» fleur.

  • “PART–OF” hierarchy- Il définit la relation hiérarchique dans l'agrégation par laquelle une classe peut être composée d'autres classes. Par exemple, une fleur est composée de sépales, de pétales, d'étamines et de carpelles. On peut dire qu'un pétale est une «partie de» fleur.

Dactylographie

Selon les théories du type de données abstrait, un type est une caractérisation d'un ensemble d'éléments. En POO, une classe est visualisée comme un type ayant des propriétés distinctes de tous les autres types. Le typage est l'application de la notion selon laquelle un objet est une instance d'une classe ou d'un type unique. Il impose également que les objets de types différents ne soient généralement pas interchangés; et ne peuvent être interchangés que de manière très restreinte si cela est absolument nécessaire.

Les deux types de frappe sont -

  • Strong Typing - Ici, l'opération sur un objet est vérifiée au moment de la compilation, comme dans le langage de programmation Eiffel.

  • Weak Typing- Ici, les messages peuvent être envoyés à n'importe quelle classe. L'opération n'est vérifiée qu'au moment de l'exécution, comme dans le langage de programmation Smalltalk.

Concurrence

La concurrence dans les systèmes d'exploitation permet d'exécuter plusieurs tâches ou processus simultanément. Lorsqu'un seul processus existe dans un système, on dit qu'il n'y a qu'un seul thread de contrôle. Cependant, la plupart des systèmes ont plusieurs threads, certains actifs, certains en attente de CPU, certains suspendus et certains arrêtés. Les systèmes avec plusieurs processeurs autorisent intrinsèquement des threads de contrôle simultanés; mais les systèmes fonctionnant sur un seul processeur utilisent des algorithmes appropriés pour donner un temps processeur équitable aux threads afin de permettre la concurrence.

Dans un environnement orienté objet, il existe des objets actifs et inactifs. Les objets actifs ont des threads de contrôle indépendants qui peuvent s'exécuter simultanément avec les threads d'autres objets. Les objets actifs se synchronisent entre eux ainsi qu'avec des objets purement séquentiels.

Persistance

Un objet occupe un espace mémoire et existe pendant une période de temps donnée. Dans la programmation traditionnelle, la durée de vie d'un objet était généralement la durée de vie de l'exécution du programme qui l'a créé. Dans les fichiers ou les bases de données, la durée de vie de l'objet est plus longue que la durée du processus de création de l'objet. Cette propriété par laquelle un objet continue d'exister même après que son créateur cesse d'exister est appelée persistance.