Les langages orientés objets assimilent trois concepts fondamentaux :

  1. l'encapsulation,
  2. l'héritage,
  3. et le polymorrphisme.

EncapsulationL'encapsulation consiste en la capacité que possède un objet, de masquer certains de ses éléments tout en fournissant un accès à d'autres éléments constituant l'interface utilisateur.

L'encapsulation permet donc de cacher des propriétés et des méthodes internes à l'utilisateur, et autorise ce dernier à accéder aux membres prévus de l'objet par le programme.

Les méthodes et les propriétés d'un objet peuvent être divisées en membres visibles nécessaires au paramètrage et aux opérations de l'objet exploité par l'utilisateur, et en membres invisibles participant à l'implémentation de l'objet.

L'utilisation des modificateurs d'accès permet d'appliquer les principes d'encapsulation, en définissant des niveaux de visibilité (privé, public, protégé) des membres d'une classe.

AbstractionL'abstraction permet d'accroître la concentration des programmeurs sur la modélisation d'un problème par du code plutôt que sur la manière dont les résultats seront obtenus.

Un nom clair, exprimé en langage naturel, pour une classe permettra de connaître avec certitude quelles fonctionnalités accomplissent cette classe.

Ainsi, l'utilisation d'une classe sera d'autant plus intuitive si son nom est explicite, tout comme ceux de ses interfaces et de ses membres.

HéritageL'héritage consiste en la création d'une classe à partir d'une classe existante, permettant de construire une hiérarchie de classes.

La nouvelle classe hérite automatiquement de l'ensemble des membres de la classe de base et par conséquent, de toutes les fonctionnalités de cette dernière.

PolymorphismeLe polymorphisme caractérise la possibilité de définir plusieurs méthodes avec un nom identique, mais des paramètres dont le types références et l'ordre sont différents. La méthode attendue est, alors, choisie en fonction des arguments fournis lors de son appel.

Le polymorsphisme permet d'appeler précisément la méthode de la classe instanciant l'objet en cours, dans une hiérarchie de classes. Ainsi, un objet issu d'une classe dérivée pourra appeler la méthode de cette dernière, tout en laissant de côté les autres méthodes de même nom dans la hiérarchie de classes du programme.

Le polymorphisme constitue, également, un moyen d'extension d'un programme sans nécessiter la modification du code existant.