• Facile

Ce cours est visible gratuitement en ligne.

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Mis à jour le 14/08/2017

La POO, kézako ?

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Commençons par le commencement : la POO, c'est quoi ?
Derrière ce sigle qui signifie Programmation Orientée Objet se cache en fait une manière de programmer, qui va se baser sur... des objets ! :D

Bon, reformulons la question :

En informatique, qu'est-ce qu'un objet ?

C'est un concept qu'on se représente très bien dès qu'on l'utilise, mais qui est difficile à expliquer clairement avec des mots. Pour cette raison, nous allons partir d'un exemple...

Qu'est-ce qu'un objet ?

Petite mise en situation

Prenons l'exemple d'un vendeur d'ordinateurs qui souhaiterait obtenir (en JS, même si ce n'est pas le langage le plus adapté) la liste des ordinateurs qu'il vend, ainsi que leurs caractéristiques. Le problème se pose de savoir comment enregistrer toutes ces données...

C'est là qu'interviennent les objets : ils vont en fait nous permettre de regrouper dans une même "structure" toutes les données communes à un même ordinateur.
Encore mieux : on va même pouvoir définir et appliquer des fonctions directement à cette structure, pour en récupérer certaines données (les caractéristiques de l'ordinateur notamment), pour les modifier, pour les comparer, etc.

Un objet, c'est quoi ?

D'abord, une classe...

En POO, on va définir des classes d'objets, qui regroupent :

  • des variables, appelées attributs, qui caractériseront l'objet : ce sont les bases de notre "structure". Un attribut peut très bien être un objet : on dira alors que c'est un sous-objet de notre classe.

  • des fonctions, appelées méthodes, qui permettront (entre autre) d'agir sur cet objet.

Dans notre cas, on va définir notre classe "ordinateur" par les attributs :

  • cpu : la fréquence du processeur

  • disqueDur : la capacité du disque dur

  • ram : la quantité de mémoire vive

  • carteGraphique : le nom de la carte graphique

On pourra définir les méthodes suivantes :

  • description() qui retourne (sous forme de phrase) les caractéristiques de l'ordinateur. Du style : "Cet ordinateur est équipé d'un processeur cadencé à xx GHz, d'un disque dur d'une capacité de ... blabla..."

  • caracteristiques() : renvoie une liste en HTML des composants avec leur(s) caractéristique(s)

  • plusDeRamQue(x) : renvoie true si l'ordi possède plus de x Mo de Ram, sinon false

  • etc. selon les besoins / votre imagination ;) .

Ensuite, des instances...

Bref : on a notre classe d'objet. C'est en quelque sorte un modèle, grâce auquel on va construire tous nos objets "ordinateur" : ces derniers sont appelés des instances (comprenez : des "exemplaires", des "répliques") de cette classe d'objets. Les instances s'enregistrent dans des variables.
Par exemple, on pourra créer l'instance "ordiDeJean", dont les attributs auront des valeurs qui correspondent à l'ordinateur de Jean.

Des exemples de classes d'objets

Voici quelques autres objets que l'on peut créer, qui auront des utilisations différentes...

On peut imaginer, comme l'a fait M@teo21 dans son cours sur le C/C++, un objet "personnage" représentant un personnage dans un jeu de rôle. Parmi les attributs, on trouvera la vie, la mana, la force, etc. et parmi les méthodes, on aura attaquer, boire une potion, changer d'arme, etc.

Pour changer de domaine, on peut imaginer des objets mathématiques, tels que les fractions : on pourra les additionner, les soustraire, les multiplier, les diviser entres elles, simplifier une fraction, etc. L'intérêt, c'est de manipuler des nombres (y compris les résultats) sous forme de fraction.

Bref, suivant nos besoins, on va pouvoir créer toutes sortes d'objets. Vous verrez, c'est pratique :) .

Deux points de vue...

L'un des (nombreux ?) avantages de la POO, c'est qu'elle sépare le travail en deux : d'un côté, le concepteur de la classe d'objet, et de l'autre, l'utilisateur.

  • Le concepteur va définir entièrement la classe d'objet en question (il va définir un certain nombre d'attributs et programmer des méthodes associées à cette classe).
    Une fois la classe créée, il pourra l'améliorer (en rajoutant des méthodes ou en optimisant le code existant).

  • L'utilisateur va pouvoir utiliser cette classe d'objet dans ses programmes, en créant des instances de l'objet, et en utilisant les méthodes fournies par le concepteur.
    Il n'a pas à se soucier de tout le code de la classe (c'est justement le boulot du concepteur) : c'est ça qui est génial :) .

Dans un premier temps, nous allons adopter le second point de vue, pour découvrir les nombreux objets qui existent déjà en JS (ce qui n'est pas une mince affaire, croyez-moi ^^ ).
Puis ensuite seulement nous allons nous attaquer à la création de nos propres objets, ce qui est un réel jeu de construction...

Comment ça s'utilise ?

Assez parlé, voyons plutôt comment s'utilisent des objets. Ca vous aidera à comprendre ce que c'est, et à quoi ça sert.
Mais en fait, vous connaissez déjà une classe d'objet : les tableaux, dont le nom est Array !
Son utilisation diffère un peu des objets "classiques", mais on y retrouve néanmoins les éléments typiques des objets.

Créer une instance

Pour créer une instance, on utilise simplement le mot-clé new.

var monTableau = new Array();

Dans cet exemple, nous avons donc créé une instance "monTableau" de la classe Array.

Dans les parenthèses, on spécifie des paramètres propres à cette instance de l'objet. Par exemple, pour l'objet "ordinateur", ça peut donner quelque chose comme ceci :

var ordiDeJean = new Ordinateur("2 GHz", "120 Go", "512 Mo", "FX 2100");
Les attributs

Pour accéder à un attribut (une variable) d'un objet (d'une instance), on utilise le nom de l'objet, suivi d'un point, puis du nom de l'attribut, comme ceci :
objet.attribut

Un exemple avec l'attribut length de l'objet "Array" :

monTableau.length

Que faire avec les attributs ? Et bien ce sont des variables qui "appartiennent" à l'objet, on peut donc les lire et/ou les modifier (bien que dans certains cas, comme ici, ça ne serve pas à grand chose de les modifier).

Ainsi, si Jean rajoute de la RAM à son ordinateur, on va pouvoir modifier l'attribut correspondant :

ordiDeJean.ram = "1024 Mo";
Les méthodes

Pour exécuter une méthode d'un objet (d'une instance), on utilise la même syntaxe que pour accéder à un attribut, sans oublier les parenthèses (puisqu'une méthode est une fonction).
Un exemple avec la méthode sort() de l'objet Array :

monTableau.sort();

Avec notre classe "ordinateur", on va pouvoir créer une méthode qui retournera une description sous forme de caractère. On l'utilisera ainsi :

var message = ordiDeJean.description();
alert(message);
Destruction d'un objet

Bref, revenons à nos objets. Dans cet exemple, notre tableau se retrouve "perdu" dans la mémoire de l'ordinateur :

var toto = new Array();
toto = null;

Tout ça pour vous dire que JS possède un système nommé ramasse-miettes, ou encore garbage collector pour les anglophones, qui se charge de détruire automatiquement tout ce qui se retrouve ainsi "perdu".
Ainsi, lorsqu'il n'y aura plus aucun "lien" vers un objet, ce dernier sera détruit.

Si on veut détruire un tableau, il nous suffit donc de modifier la valeur de la variable qui contient l'adresse du tableau. C'est ce qu'on a fait dans l'exemple ci-dessus : le tableau se retrouve "perdu" en mémoire, et le ramasse-miettes le détruira :pirate: .

On récapitule le vocabulaire...

Avant de terminer ce chapitre, récapitulons le vocabulaire utilisé à propos de la POO, pour qu'il soit clair pour vous.

  • Classe : c'est un modèle, une définition d'une "structure", qui va posséder des attributs et des méthodes.
    Exemple : une voiture, qui possède une couleur, une marque, un nom, etc.

  • Instance : c'est un exemplaire d'une classe.
    Exemple : la voiture de mon oncle, qui a la couleur "rouge", de marque "Pijo" et de nom "Pijo 404".

  • Objet : selon le sens, il s'agit d'une classe ou d'une instance.

  • Attribut : c'est une variable qui "appartient" à un objet.
    Exemple : l'attribut "couleur" pour la voiture.

  • Méthode : c'est une fonction propre à une classe. Elle va pouvoir agir sur l'instance à laquelle on l'applique.
    Exemple : repeindre la voiture.

C'en est terminé pour cette approche, plutôt théorique des objets.
Nous allons maintenant découvrir les objets qui proviennent de la page HTML : de quoi s'occuper pendant quelques chapitres :p .

Exemple de certificat de réussite
Exemple de certificat de réussite