Category: classes

  • 🤖 Bases de la Programmation : Les Classes

    Les Classes sont aux fonctions ce que les objets sont aux variables simples : une classe est un groupement de fonctions appelées “méthodes” et de variables appelées “propriétés”. C’est un mélange entre une fonction ( avec des arguments ) et un objet (fonctionnement en clef valeur accessible par des . )

    Lorsque que vous utilisez l’api Harmony vous ne faites qu’utiliser des classes.

    Déclarer une classe

    Hors des script harmony nous avons droit d’utiliser le mots clef class

    class my_class(){
    
    }

    mais dans harmony le mots clef class est interdit et nous sommes contraints d’utiliser le mots clef function à la base. Le resultat est le même mais cela peut vraiment prêter à confusion au début.

    Avec l’exemple suivant , pouvez vous comprendre à quoi sert une classe ?

    function Animal(_type,_sound ){
      this._type= _type
      this._sound = _sound 
      this.make_sound= function(){
        MessageBox.information(this._sound )
      }
      this.talk= function(){
        MessageBox.information("Hello ! i'm a "+this._type)
      }
    }
    
    var medor = new Animal("dog","ouaf")
    medor.talk()
    // affiche hello ! i'm a dog 
    medor.make_sound()
    // affiche ouaf
    
    var mimi = new Animal("chat","miaou")
    mimi .talk()
    // affiche hello ! i'm a cat
    mimi .make_sound()
    // affiche miaou
    
    
    

    On voit deux nouveaux mots clefs “this” à l’intérieur de la déclaration et “new”

    new permet d’instancier une classe. Instancier une classe revient à créer une copie de la classe en suivant son plan et à reset tout ses propriétés.

    Une instance est comme objet sauf qu’elle est unique, elle va pouvoir avoir ses propres valeurs de propriétés et évoluer le long du code. C’est typiquement comme cela que l’on code le comportement d’un enemie dans un jeux.

    function Enemy(_name,_hitpoints,_damage) {
        this._name = _name
        this._hp = _hitpoints
        this._damage = _damage
        this.attack = function(_player){
          _player.hitpoints -= this._damage
        }
    }

    L’état d’une instance peu changer au cour du temps si les méthodes de la classes le permettent

    function Human() {
        this._stomac =[]
        this.eat= function(_something){
          this._stomac.push(_something)
        }
    }
    
    var BlancheNeige = new Human()
    MessageBox.information(BlancheNeige._stomac)
    // affiche []
    
    BlancheNeige.eat("apple")
    MessageBox.information(BlancheNeige._stomac)
    // affiche ["apple"]

    Dans harmony

    lorsque l’on utilise “node” on fait appel à une instance de la classe Node qui propose tout un tas de méthodes pour manipuler les nodes

    MessageBox est AUSSI une classe

    enfait TOUT dans la doc toonboom est une classe.

    ToonBoom utilise les classes pour ranger ses functions par thème sous forme de méthodes.