Comprendre le concept de la Programmation Orientée Objet

Le concept de POO est bien plus simple qu’il n’y parait car il rapproche les notions de programmations de la vie réelle.
Ici, un objet est la représentation en programmation  de ce qui est ou pourrait être un objet de la vie réelle, des fois ça va simplement représenter un objet physique, des fois un objet théorique, des fois simplement servir d’outil pour le traitement de données ou de relations.

Qu’est-ce qu’un objet ?

Un objet est une donnée issue d’une classe, la classe définie sa structure/son modèle. Cet objet possède un ensemble de propriétés, qu’on peut aussi appeler attributs, ils lui permettent de spécifier des informations qui lui sont propres dans le cadre définie par la classe.
C’est très similaire aux entrées de table en base de données.

Mais un objet possède aussi un ensemble fonctionnel, des fonctions, qu’on appelle aussi méthodes, elles lui permettent d’agir dans son propre contexte.
Une méthode peut ainsi effectuer une opération sur les propriétés de cet objet et elle peut être la seule à implémenter un algorithme permettant le traitement de cet objet.

Rien de mieux pour comprendre tout ça que quelques exemples.

Mieux comprendre le concept de Programmation Orientée Objet

Nous allons voir ensemble plusieurs exemples pour vous permettre de mieux comprendre cette approche de la programmation.

Une Personne

Michel est un objet de classe Person et possède les propriétés firstname, lastname, gender et birthdate.
L’ensemble des propriétés de Michel, son prénom, son nom, son sexe et sa date de naissance lui sont propres, cet objet ne représente donc qu’une seule personne.
La classe Person permet de calculer l’âge de Michel, car on a une propriété date de naissance mais pas âge. La méthode getAge() de Person permettra donc de déduire l’âge de Michel à partir de sa date de naissance.

Un Fichier

La classe File représente un fichier qu’on peut avoir sur son disque dur, elle possède les propriétés path, size, type et createDate.
Le fichier est donc bien sur le disque dur mais l’objet File que nous allons créer va le représenter en programmation et va nous permettre de le manipuler. On pourra ainsi avoir une méthode copy() pour copier ce fichier, une méthode move() pour le déplacer, une méthode getContents() pour en récupérer le contenu, etc.

Une connexion à la base de données

La classe DatabaseConnection gère la connexion à la base de données et permet de communiquer avec elle via ses méthodes. On instancie notre objet avec ses paramètres de connexion et il se connecte tout seul dès que besoin, effectue la requête demandée et vous renvoie le résultat.

Une collection

La classe Collection est une classe permettant la manipulation d’une collection de données, ici des chaînes de caractères. Ses méthodes permettent d’ajouter ou de supprimer des éléments de la collection.

L’héritage

L’héritage est un concept merveilleux qui a été inventé pour la programmation orientée objet. Une classe peut hériter d’une autre, elle implémente donc naturellement, les mêmes attributs et méthodes que la classe mère, elle peut aussi écrire ses propres fonctions mais le meilleur est qu’elle peut ré-écrire les méthodes de la classe mère.

Un objet de la classe fille aura la particularité d’être un objet de cette classe fille mais aussi de la classe mère, elle est entièrement compatible par nature et reconnue comme un objet de cette classe tout autant que de la classe fille. On peut évidemment hériter une classe qui hérite elle-même d’une autre classe, sans vraiment de limite.

En programmation, on peut ainsi déclarer une variable comme étant d’une certaine classe A mais en vrai, elle pourra contenir un objet d’une classe B héritant de la classe A, on ne pourra alors appeler que les méthodes connues de A mais la machine exécutera celles de B.

On appelle cela le polymorphisme.

La visibilité

La visibilité limite l’accès à un attribut ou une méthode au contexte qu’on désire. Quand je parle d’accès, pour un attribut, c’est lire, définir et surcharger cet attribut, pour une méthode, c’est l’appeler et la surcharger.

La visibilité a communément 3 valeurs possibles :

  • public : Bien souvent la valeur par défaut, n’importe quelles sources peuvent accéder aux méthodes et attributs publiques d’un objet.
  • protected : Seule la classe elle-même et une classe héritant de celle-ci peuvent accéder aux propriétés et méthodes publiques. C’est généralement apprécier pour un usage interne mais elle permet l’héritage et le polymorphisme.
  • private : Là l’accès est carrément limité à la classe elle-même, généralement bien pour un usage interne uniquement.

Pour conclure…

La programmation objet existe depuis bien longtemps et elle a imprégné de nombreux langages de programmation. Son utilité va bien plus loin que cet aperçu, elle permet de mettre en place des bonnes pratiques, de conserver l’intégrité des données et d’appliquer de nombreux patron de conception.

Florent

Je suis un développeur web à mon compte et je m'intéresse à beaucoup de choses en informatique...

Aucun commentaire

Commenter