Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Dans le chapitre précédent j'ai évoqué les modèles prédéfinis d'objets et leurs méthodes :
Date, String, Math, Array, Set, Map, RegExp, etc.
Dans ce chapitre je vous montre comment créer vos propres modèles d'objets puis des instances de ces modèles.
La POO en JavaScript présentait plusieurs particularités qui la distinguait des langages classiques comme Java ou C++.
Mais progressivement JS se rapproche des autres langages en matière de POO.
Ainsi le concept de classe a été introduit par la version majeure de 2015.
Donc il existe différentes solutions pour créer vos propres objets sous JavaScript.
Un constructeur est simplement une fonction définissant un modèle d'objet avec des propriétés et des méthodes.
C'est le cas le plus simple.
La fonction f1() est appelée par un élement BUTTON.
Le modèle d'objet créé se nomme "voiture" et comprend quatre propriétés.
Je crée ensuite deux instances du modèle "voiture" : auto_jean & auto_paul.
Notez la syntaxe pour créer des objets (instances) du modèle "voiture : let nomObjet = new NomModèle(propriétés)
On peut donc dire qu'un objet est une séquence de paires propriété:valeur.
Notez l'emploi de la notation pointée : objet.propriété pour afficher la valeur d'une propriété.
Dans l'avant dernière instruction du script j'utilise la notation template strings pour éviter une concaténation fastidieuse de
l'instruction précédente.
À la question quel est le type de donnée ; la réponse est "object".
Rappel : une méthode est en fait une fonction spécifique au modèle d'objet.
Un bouton de commande appelle la fonction f1().
Le script :
Le modèle d'objet créé se nomme voiture et comprend 4 propriétés et une méthode.
La méthode se nomme presenter() qui affiche ici toutes les propriétés de l'objet concerné.
Pour décrire une méthode il faut employer les mots réservés function et return.
Pour appeler une méthode il faut employer la syntaxe : objet.methode() ;
n'oubliez pas les parenthèses, une méthode c'est une fonction !
Je procède ensuite à un changement de propriétés pour l'instance "mavoiture".
Notez la syntaxe pour modifier la valeur d'une propriété : objet.propriété ="nouvelle valeur".
On dit que l'on utilise la notation pointée.
Je peux accéder directement aux propriétés de l'objet pour les modifier. On dit que ces propriétés sont publiques.
Plus loin dans ce chapitre je vous montre comment rendre les propriétés privées.
À la question quel est le type de donnée ; la réponse est "object" et non pas "voiture" ...
En POO classique, une modèle d'objet est appelé classe.
La classe définit donc les propriétés et les méthodes applicables aux instances de cette classe.
Pour se rapprocher de la syntaxe POO des autres langages, la version ECMAScript de 2015 introduit les mots clé "class", & "extends" (pour l'héritage).
Dans l'exemple qui suit je définit une classe ; puis je crée une deuxième classe héritant de la première ;
je crée ensuite des instances de la classe mère et des instances la classe fille.
J'évoque aussi dans ce paragraphe la notation pointée optionnelle.
Le script :
Je définis donc la classe "Auto" ; il est d'usage que la première lettre de la classe soit une majuscule.
La méthode constructor() initialise les propriétés.
Notez que la classe "Auto" ne comprend que des propriétés.
À partir de la classe "Auto" je définis la classe "Tacot" par héritage avec l'instruction class Tacot extends Auto.
On retrouve la méthode constructor() pour initialiser les propriétés (au nombre de 6).
La méthode super() initialise les propriétés de la classe parente.
Je définis ensuite deux nouvelles propriétés (annee & etat) et une méthode nommée "presenter()".
Ayant défini la classe "Auto" et la classe "Tacot" je peux créer des instances de ces différentes classes.
Pour prévenir de tentatives d'injections (de HTML ou JS), les propriétés d'un objet doivent être privées c'est à dire qu'elles ne sont pas accessibles directement ; Pour modifier ces propriétés il faut passer par une méthode, qui elle est publique. C'est le principe de l'encapsulation.
JS n’a pas de modificateurs d’accès natifs (private, public, protected) comme d’autres langages. Cependant, il existe plusieurs méthodes pour produire l’encapsulation.