modifié le

Concepts de la POO

1. Historique

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

2. Modulariser

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

3. Approche objet

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

4. Encapsulation

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

5. Abstraction des données

Interface & implémentation

Un objet possède une interface et une implémentation. L’interface est la partie publique de l’objet. C’est ce qui est visible de l’extérieur de l’objet. Cela correspond aux services offerts par l’objet au monde extérieur, généralement un ensemble de méthodes. L’implémentation est la partie privée, elle n’est pas visible de l’extérieur de l’objet. Elle contient généralement les attributs de l’objet, ainsi que des méthodes à usage interne. Les utilisateurs de l’objet ne peuvent (ne doivent) accéder qu’à son interface.

Boîte noire

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Il doit toujours être possible de modifier l’implémentation d’une classe de manière transparente pour ses utilisateurs.

En regroupant code et données, et en donnant la possibilité d’interdir un accès direct aux structures de données, la POO favorise la conception de composants logiciels réutilisables et évolutifs.

Cas de C++, Java, C#

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Cas de PHP

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Cas de python

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

6. Héritage

L’héritage est un mécanisme de transmission des caractéristiques d’une classe (attributs et méthodes) vers une sous-classe. C’est une relation inter-classes qui exprime la relation "est une sorte de" (a kind of).

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

poo heritage

L’héritage permet de concevoir des classes générales, puis progressivement de créer de nouvelles classes plus spécialisées, en procédant par ajouts ou différences.

Vocabulaire

Si A, B et C sont 3 classes, si C hérite de B et B hérite de A, alors :

  • A et B sont des super-classes de C,

  • B est une super-classe directe_ de C,

  • B et C sont des sous-classes de A.

Héritage simple

L’héritage est simple lorsqu’une classe a au plus une classe de base directe. On obtient alors un arbre d’héritage :

poo hsimple
Héritage multiple

L’héritage est multiple lorsqu’une classe peut avoir plusieurs classes de base directes. On obtient alors un graphe d’héritage :

poo hmultiple
Classe abstraite

Une classe destinée uniquement à servir de classe de base pour concevoir de nouvelles classes est appelée une classe abstraite. C’est en général une classe dont l’implémentation est insuffisante pour représenter complètement un objet réel. Une classe abstraite ne peut pas être instanciée. Dans l’exemple ci-dessus, Forme est une classe abstraite, car elle ne contient pas assez d’information pour y implémenter une méthode tracer().

Polymorphisme

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.