🤖 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.