La POO

La programmation, c'est essentiellement ce qu'on a vu jusqu'à présent. Cependant, un besoin s'impose, celui d'organiser son code pour des projets volumineux tout en conservant une clarté dans la lecture et dans les différentes définitions et algorithmes. C'est pour cela que l'on a créé la POO (Programmation Orientée Objet).

Les classes

Voici un exemple de définition d'une classe en JavaScript :

// constructor est la méthode en JavaScript qui est executée
// lors de l'initialisation d'une instance. On appelle cela la méthode d'initialisation.
// Elle porte un nom différent selon les langages mais s'appelle souvent "init".

// carname est un attribut.
// constructor et present sont des méthodes.
class Car {
  constructor(brand) {
    this.carname = brand;
  }
  present() {
    return 'I have a ' + this.carname;
  }
}

// myCar est une instance de la classe "Car". C'est un objet.
var myCar = new Car('Peugeot 307');

Les prototypes

Les prototypes ne sont pas exactement comme les classes, qui rappelons le, définissent le comportement des objets. Les prototypes décrivent plutôt les classes dans une certaine mesure. Ils contrôlent les types de valeurs pour les différentes entrées et sorties pour chaque méthode et attributs d'une classe. Ils sont utilisés par les debuggers et compilateurs pour la gestion d'erreurs. Ainsi, ces informations suffisent pour remarquer les incohérences de manipulation d'objets.

On peut manipuler la structure même des classes dynamiquement en JavaScript via cette notion de prototypes mais ce n'est absolument pas une pratique standard de programmation :

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}

Person.prototype.name = function() {
  return this.firstName + " " + this.lastName;
};
// Prototype d'une fonction
double someFunction( double, int );

// Prototype d'une classe
class MyClass {
public:
    // Méthode publique pour afficher un message avec une chaîne en entrée
    void displayMessage(const std::string& message);
    
private:
    // Attribut privé pour stocker un entier
    int myNumber;
};

Les instances

Les instances de classe sont des objets que l'on a initialisé à l'aide d'une classe. Par exemple lorsque j'ai fait :

// myCar est une instance de la classe "Car". C'est un objet.
var myCar = new Car('Peugeot 307');

J'avais créé une variable myCar qui est une instance de la classe Car. On peut donc se servir de ses méthodes et ses attributs, tels que définit dans la classe.

var message = myCar.present();
console.log(message);
// On aura alors imprimé dans la sortie standard : "I have a Peugeot 307".

Dernière mise à jour

Cet article vous a-t-il été utile ?