Aller au contenu | Aller au menu | Aller à la recherche

Site membre du réseau Izardev et LCNET

Programmation orientée objet en Javascript

La programmation orientée objet est possible sans utilisation de framework particulier, on peut très bien créer des classes et les instancier directement et nativement.

Création d'une Classe Javascript

Pour faire un exemple parlant nous allons créer la même Classe dans un langage très connu de tous : PHP

Exemple PHP :

Il s'agira d'une classe tout simple qui bonjour aux utilisateurs, en PHP cela donnerait :

<?php
class Exemple
{
 var $utilisateur;
 /**
  * Constructeur : initialise l'attribut utilisateur
  */
 function Exemple()
 {
  $this->utilisateur = "Stéphane";
 }
 function DitBonjour()
 {
  echo "Bonjour ".$this->utilisateur;
 }
}
?>

Le mot clé Class existe en PHP donc pas de soucis particulier; pour instancier et utiliser cette classe, on fera simplement :

$oExemple = new Exemple();
$oExemple->DitBonjour(); //affiche "Bonjour Stéphane"

En Javascript :

C'est différent car le mot clé class n'existe pas, on peut obtenir la même chose de la manière suivante :

function Exemple()
 {
  var utilisateur;
  
  this.DitBonjour = function()
  {
   document.write( "Bonjour "+ this.utilisateur);
  }
 /* initialisation de l'attribut à la fin
  * (Constructeur)
  */
 this.utilisateur = "Stéphane";
 }
 

Notez qu'il n'y a pas de Méthode constructeur explicite : la Méthode Exemple, qui est notre classe, construit ses propres instances grâce au mot clé new, comme dans les autres langages orientés objet. Le code se lisant de haut en bas, on initialise l'attribut à la fin de la Méthode exemple; cela n'a aucune importance ici, mais cela peut en avoir si vous utilisez des méthodes de la classe Exemple pour l'initialiser vos objets. Il est important que les méthodes aient été déclarées au moment ou elles sont appelées.

Exemple est donc à la fois une méthode, et une classe, on peut l'instancier si l'on souhaite, voici l'utilisation :

var oExemple = new Exemple();
oExemple.DitBonjour(); // affichera "Bonjour Stéphane"

On peut donc développer tout à fait "normalement" et facilement Objet en javascript.

Partagez cet article !

  • Delicious
  • Stumbleupon
  • Digg
  • Facebook
  • Google
  • Linkedin
  • Yahoo Buzz
  • Twitter
Vous avez apprécié cet article ?

Commentaires S'abonner au flux RSS des commentaires

  1. minski | back to the future |
    marrant ce code, c'est exactement du code flash d'il y a 10 ans (actionscript 1)...
  2. Olivier | Je voudrais créer une classe Infobulle. |
    Bonsoir...

    Je voudrais créer une classe Infobulle.

    Comment faire en sorte que toutes ses instances soient des éléments Html ?
    Comment faire en sorte que toutes ses instances soient des éléments Html ayant un tagName déterminé ?

    Merci de votre aide !
  3. Merci Aurélien pour l'exemple et Romain pour la correction. Il existe néanmoins une manière plus propre de coder ces classes en Javascript natif en utilisant l'attribut prototype. Cela dit, je me tourne de plus en plus vers des frameworks, par flemme d'une part, mais aussi par souci de lisibilité : http://...ototype-JS
  4. Hello,

    Un autre petit bout de code pour donner un exemple concret de constructeur :

    function Human(username)
    {
    var username;

    this.sayHello = function(){
    alert( "Hello, I am "+ this.username);
    }

    this.username = username;
    }

    var e = new Human("Charles");
    e.sayHello();
  5. Tout d'abord merci pour cette astuce qui permet de structurer un peu les choses.

    Cela dit, les technos objets nous ont changé la vie grâce à des mécanismes beaucoup plus puissants que de la simple encapsulation : héritage, polymorphisme, design patterns, etc.

    Dommage, que Javascript ne permettent pas tout cela...
  6. | class javascript erreur |
    je confirme
  7. DE BRITO Romain | class Javascript Erreur |
    Salut,

    Juste pour info il me semble que dans la déclaration de te class en Javascript il faut mettre les paranthèse sinon t'a une erreur :

    function Exemple() /* correction */
    {
    var utilisateur;

    this.DitBonjour = function()
    {
    document.write( "Bonjour "+ this.utilisateur);
    }
    /* initialisation de l'attribut à la fin
    * (Constructeur)
    */
    this.utilisateur = "Stéphane";
    }

Ajouter un commentaire

Les commentaires sont tous validés par un modérateur, votre commentaire n'apparaît pas directement sur le site.
Aucun support n'est assuré ici, vous pouvez néanmoins laisser vos remarques et critiques sur l'article, les points de vue pertinents sont toujours les bienvenus.