L3 MIASHS, Programmation Web 2, année 2022

La programmation orientée objet (POO)

Le gros du contenu de ce cours est extrait d’ici pour la partie JavaScript.

Objectif de la POO

Les objets sont des manières d’interagir avec des concepts plus ou moins abstrait en programmation. En Python, il peut s’agir de structure de données (dict, list) de classes dédiées pour représenter un élément du code.

Leur structure permet de factoriser du code en suivant des patrons de conceptions génériques. Ces patrons sont indispensables pour tout projet à visé industriel ou professionnel afin d’éviter d’écrire du code qui part dans tous les sens.

Les grands principes de la programmation orientée objet sont hors du cadre de ce cours mais constitue un pré-requis indispensable au métier de développeur.

La notation point

En JavaScript et en Python les objets différent un peu mais dans un premier temps ça ne fait pas beaucoup de différence. Dans chacun de ces deux langages, tout type de donnée manipulée (même les types de bases) sont des objets. Ce sont des entités qui:

La syntaxe de manipulation d’un objet va vous êtes très familière puisque vous l’utilisez depuis vos premiers pas en programmation: on utilise le point pour accéder à un sous-champs de l’objet qui peut être au choix une méthode ou une propriété.

Exemples en Python et en JavaScript

s = "Choucroute" # chaine de caractère
print(s.isalpha()) # méthode qui teste s'il n'y a que des alphabet
s = "Choucroute"
console.log(s.length) // propriété qui retourne la longueu

Définition de nouveaux objets

On va se concentrer uniquement sur JavaScript. En Python, définir des objets nécessitent de définir une nouvelle classe.

let Objet = new Object(); // Créer un objet vide
Objet.propA = "Choucroute"; // fixe une propriété
Objet.propB = "Garnie"; // une autre propriété
Objet.print = function(){ // définit une méthode
  console.log("Objet", this.propA, this.propB); // this réfère à l'objet Objet
}
Objet.print(); // appel la méthode print.
Objet.propA = "Chouquette";
Objet.propB = "à la vanille";
Objet.print();

Compiled the: dim. 07 janv. 2024 23:19:09 CET