OOP

De wiki-prog
Aller à : navigation, rechercher

Programmation Orientée Objet : OOP

Object Oriented Programming

La programmation orientée objet (OOP) est une approche transversale de la programmation. Bien que souvent perçue comme une extension de la programmation impérative, il ne s'agit pas d'un paradigme en soi, mais plus d'un modèle de conception. Il est possible de faire de l'objet de manière tant impérative que fonctionnelle.

L'approche objet étend la logique d'encapsulation de l'approche types abstraits et l'enrichie d'une notion de factorisation du code au travers de mécannismes de spécialisation (héritage.) Elle est souvent associé à la modélisation par motif (design patterns) ou à la programmation aspectuelle.

Même s'il est possible de faire de l'OOP sans dans presque n'importe quel langage, en général, on s'appuie sur un support existant. Les principaux langages fournissant une approche objet sont:

  • Simula 67
  • Smalltalks
  • C++
  • Objective C
  • Java/C#
  • Objective Caml
  • D
  • Rubby
  • ...

Notion d'Objets

Au cœur de l'OOP se trouve la notion d'objet: un objet est une entité qui combine données et code permettant de manipuler ces données. Dans la vision OOP pure, l'objet reçoit des messages (les méthodes) qui peuvent être soit des accès à son état interne, soit des modifications de son état interne. La représentation de l'état interne de l'objet (les attributs ou propriétés) se doit d'être privé et caché des autres objets du programme et seules les méthodes permettent d'y accéder.

Dans cette vision, l'objet est l'extension naturelle des types abstraits de Djikstra: l'implantation reste cachée, et les données ne sont vues qu'au travers des opérations fournies pour les manipuler.

Notion de classes

Pour simplifier la création et la manipulation des objets, on définit une notion de classe (qui étend, d'une certaine manière, la notion de type) d'objets. Une classe définit la partie générique d'un objet (tout ce qui sera commun à certain ensemble d'objet) notamment la représentation de l'état interne et le code des méthodes.