====== Javascript : quelques précisions ====== ===== Ressources ===== * https://developer.mozilla.org/fr/docs/Web/JavaScript ===== Présentation ===== La programmation orientée objet permet d'encapsuler dans des objets : * des variables que l'on appelle **attributs**, * des fonctions que l'on appelle **méthodes**. Cela permet de contrôler et de gérer de manière spécifique et centralisée les informations (données) et les fonctionnalités (actions) liées : * à un **objet métier**, * ou un **objet technique**. De cette manière ce ne sont pas des **fonctionnalités externes** (fonctions du programme) qui vont manipuler l’objet mais l'objet lui-même qui contient **ses propres fonctionnalités** (méthodes de l'objet) pour les gérer. Pour cela : * on crée un modèle d'objet avec ses attributs et ses méthodes : on créer une **classe d'objet**, * on **instancie** la classe pour générer autant d'objet que l'on a besoin dans le programme. ===== Création simple d'un objet (pas encore une classe d'objet) ===== La création d'un objet peut être intéressante pour gérer un seul objet qui a uniquement avec des attributs(données sans méthodes particulières supplémentaires. * On utilise les accolades pour créer un objet : Var moyenneClasse = { }; * on ajoute des attributs qui peuvent avoir ou nom une valeur par défaut , être un tableau, etc. var moyenneClasse = { nomClasse : "BTSSIO", moyennes : [], derniereRecuperation : Date.now() }; * il est possible, après la création d'un objet et **à la volée** : * d'ajouter, modifier ou supprimer attribut ou une méthode //ajout d'un atttibut moyenneClasse.annee = 2017; ===== Utiliser un objet ===== * l'afficher dans la console Javascript console.log(moyenneClasse); * l'affichage d'un attribut peut se faire de 2 manières car javascript s’appuie sur les tableaux pour gérer les objets : // utilisation de la notation pointée console.log(moyenneClasse.nomClasse); // utilisation de la notation tableau associatif console.log(moyenneClasse["nomClasse"]); ===== Création d'une classe d'objet (modèle d'objet) ===== La création d'une classe d'objet permet d'avoir un modèle qui encapsule : * des **attributs**, * des **méthodes** (fonctionnalités) pour manipuler l'objet lui même. Une classe d'objet n'est **pas manipulable directement**. Il faudra **instancier** cette classe pour avoir un objet manipulable dans le programme. On pourra ensuite instancier autant d'objet que l'on a besoin sur le même modèle. * pour **créer** une classe d'objet : * la classe est référencée par une **variable**, * par convention la première lettre du nom de la classe est en **majuscule**, * utilisation du mot clé **function** pour permette de mettre le code des méthodes * remplacer le : par **=** et , par **;** * ajouter **this** devant les attributs pour préciser qu'il s'agit des attribut de l'objet lui même. var MoyenneClasse = function() { // les attributs this.nomClasse = "BTSSIO"; this.moyennes = []; // contiendra autant d'objets que de moyennes this.derniereRecuperation = Date.now(); // une méthode gérée par l'objet pour afficher des informations this.afficherConsole = function() { console.log("Nom classe : " + this.nomClasse); console.log("Moyennes : " + JSON.stringify(this.moyennes)); }; }; ===== Instancier un objet à partir de sa classe ===== * on instancie un objet et on met la référence à cet objet dans une variable: var moyenneClasse = new MoyenneClasse(); // afficher les informations de l'objet moyenneClasse.afficherConsole(); ===== Ajout dynamique d'une méthode ===== MoyenneClasse.resetDerniereRecuperation = function() { this.derniereRecuperation = Date.now(); }; ===== Retour projet 2017 ===== * [[hackathlon:2017|PROJET 2017]]