Retour

Les principes de la programmation orientée objet

🎲 Quiz GRATUIT

📝 Mini-cours GRATUIT

L’objet et la classe

Le monde objet est particulièrement adapté à la représentation directe du monde réel ! Une voiture est un objet, un client peut être représenté sous forme d’objet, … etc.

Les objets de même nature ont en général la même structure et le même comportement (les mêmes fonctionnalités). Ce sont leurs caractéristiques.

La classe permet de classifier les caractéristiques communes des objets.

Une classe est un type abstrait de données qui regroupe les attributs (caractéristiques) et les méthodes (comportements) communs d’un ensemble d’objets. C’est une sorte de moule, de modèle d’objets. La classe va donc contenir des attributs et des méthodes.

L’objet est une instance, un exemplaire, de la classe.

Encapsulation

La programmation orientée objet (POO) repose sur plusieurs principes clés, dont celui de l’encapsulation.

Certains attributs et méthodes ne sont pas exposés à l’extérieur de l’objet. Ils sont encapsulés et appelés attributs et méthodes privés de l’objet.

UML introduit deux possibilités d’encapsulation :

  • L’attribut ou la méthode privée : la propriété n’est pas exposée en dehors de la classe, y compris au sein de ses sous-classes.
  • L’attribut ou la méthode protégée : la propriété n’est exposée qu’aux instances de la classe et de ses sous-classes.

Représentation de la protection

Héritage

L’héritage permet de définir une nouvelle classe à partir d’une classe existante via un mécanisme de transmission des propriétés et des méthodes d’une classe vers une autre classe.

Toute classe dérivée (sous-classe ou classe fille) hérite de toutes les méthodes de sa classe de base. Ainsi tout objet, instance de la classe dérivée, peut appeler toutes les méthodes de la classe de base.

Pour accéder aux données membres définies dans la classe de base il faudra leur donner la visibilité « protégé ». Un membre protégé est accessible à partir de la classe dans laquelle il est déclaré et à partir de toute classe dérivée de cette classe.

En UML le modificateur d’accès protégé s’écrit #.

En C# le modificateur d’accès protégé s’écrit protected.

Public / Privé

Les spécificateurs d'accès déterminent qui peut utiliser les définitions suivantes :

  • Tout membre public (+) (attribut ou méthode) est utilisable dans tous les contextes, c'est-à-dire par les créateurs (concepteurs) de classe et par les programmeurs clients ou utilisateurs de classe. Les définitions précédées de + sont donc disponibles pour tout le monde.

  • Tout membre privé (-) (attribut ou méthode) d'une classe n'est utilisable qu'à l'intérieur de la définition d'une méthode de la classe, c'est-à-dire utilisable que par les créateurs (concepteurs) de classe. La visibilité privée peut être représentée comme un mur de briques entre le créateur de la classe et le programmeur client.

  • Tout membre protégé (#) (attribut ou méthode) d'une classe n'est utilisable qu'à l'intérieur de la définition d'une méthode de la classe ou de ses sous-classes.

Les méthodes

La définition d’une méthode consiste à donner sa signature ainsi que son algorithme puis de l’implémenter.

C’est le concepteur de classe qui en a la charge.

Signature d’une méthode :
nomClasse :: nomMéthode(Paramètre1, … etc)

Dans l’en-tête de la méthode, le ‘::’ entre le nom de la classe et le nom de la méthode est appelé opérateur de résolution de portée.

Le constructeur est une méthode particulière, qui porte le même nom que la classe, qui n’a pas de type de retour, et qui permet d’instancier l’objet, et plus précisément de valoriser (donner une valeur) toutes ses propriétés. Il donne à l’objet son état initial.

Les classes abstraites

La première particularité d'une classe abstraite est qu'elle ne peut être instanciée (elle ne peut pas créer un objet).

Exemple : Un cheval hérite de la classe des équidés. Dans le monde réel, un cheval existe (concret), un équidé n’existe pas (abstrait). Il n’existe donc pas d’objet « Equidé ».

De cette affirmation, on en déduit logiquement qu'une classe abstraite est déclarée afin d'être dérivée par des classes concrètes.

Une classe abstraite se comporte comme une classe concrète typique. Elle peut déclarer des attributs et des méthodes traditionnels qui seront accessibles dans les classes dérivées (en fonction bien sûr de la visibilité choisie (public, private et protected) pour chacun des attributs et méthodes).

Nomad+, Le pass illimité vers la réussite 🔥

NOMAD EDUCATION

L’app unique pour réussir !