> LeekScript
Bienvenue dans la documentation sur la programmation orientée objet (POO) qui consiste à créer des classes et des objets pour organiser son code. Cette fonctionnalité a été ajoutée à partir du LeekScript 2.
Les objets sont des valeurs regroupant plusieurs valeurs chacune associée à un nom. On appelle ces valeurs des proprietés ou champs.
Pour créer un objet, on utilise la syntaxe suivante :
Dans cet exemple, l'objet objet possède deux proprietés, nom et age.
Pour créer un objet vide :
Le point . permet d'accéder à une proprieté d'un objet :
Une syntaxe alternative existe : objet["prop"], permettant d'utiliser une valeur de chaîne de caractères pour accéder à une proprieté :
Une fois accédée, une propriété peut être modifiée comme une variable normale :
Les opérateurs == et === comparent uniquement si l'objet est le même. Ils renvoient false même si les deux objets ont les mêmes proprietés :
NB : === est déprécié à partir du LeekScript 4 car == est stricte (par exemple on a plus null == 0).
Une classe est un modèle pour créer des objets.
On défini une classe Arme avec les 4 champs nommés de cette façon :
Le new est en fait optionnel, une classe est similaire à une fonction et peut être appelée directement pour créer un objet :
On peut récupérer la classe d'un objet en utilisant .class :
Le mot-clé instanceof permet de vérifier si un objet est une instance d'une classe :
Un constructeur est une fonction définie dans une classe permettant de créer un objet à partir d'une liste de paramètres. On définit un constructeur comme ceci :
Utilisation d'un constructeur :
Une méthode est une fonction définie dans une classe et utilisable sur un objet de cette classe. On définit une méthode de cette façon :
On utilise une méthode avec la syntaxe :
La syntaxe objet["member"] fonctionne aussi :
Il n'est pas conseillé de l'utiliser, le risque de se tromper est assez fort.
Il est possible de surcharger les méthodes en changeant simplement le nombre de paramètres
On peut ensuite utiliser la méthode avec un ou 2 paramètres au choix :
La notion d'héritage permet de créer une hiérarchie de classes. On utilise cette syntaxe avec le mot-clé extends. On cherche a déclarer une classe "de base" depuis laquelle d'autres classes pourront être construites. Les classes qui héritent recoivent tous les membres (variables) et méthodes (fonctions) de la classe de base, et peuvent les redéfinir, ou en ajouter de nouvelles.
Dans cet exemple, la classe parente Item a deux classes filles Arme et Puce. Item a 4 membres (id, nom, cout et degats) qui seront présents dans les deux classes filles. Mais Puce possède un 5ème champ, cooldown spécifique aux puces.
Si on instancie ces trois objets et qu'on les affiche, on pourra voir les différent membres de chaque classe :
Notre classe Chip a ajouté un membre cooldown, qui n'apparait donc que dans son instance et pas les autres !
Une classe héritée aura le même type que la classe de base. Par exemple si un objet est une instance de la classe Arme, cet objet est également une instance de la classe Item :
Les classes héritées récupèrent aussi les méthodes et de la classe parente. Pour appeler un constructeur parent :
Pour appeler une méthode parente :
Si on redéfinit une méthode sans appeler la méthode parente avec super, on efface completement l'implémentation de base.
Un petit exemple pour résumer tout ca vite fait :
Il est possible de définir des niveaux d'accès pour chaque membre d'une classe. Il y a 3 niveaux d'accès possibles : public (celui par défaut), protected et private.
public (par défaut) : le membre est accessible directement et par tout le monde.protected : les membres sont accessibles seulement dans la classe et les classes enfant.private : les membres sont accessibles uniquement dans la classe.Un membre (champ ou méthode) statique est un membre qui appartient à une classe au lieu d'appartenir à un objet de la classe.
Les champs statiques sont initialisés une seule fois (au premier tour), comme les globales.
Définition d'un champ statique :
Méthode statique :
Si une classe contient une fonction string(), celle-ci est appelée automatiquement quand l'objet a besoin d'être converti en chaîne de caractères :
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.