Tutoriel Programmation objet immersive en Pharo proposé par l'inria disponible à l'adresse https://mooc.pharo.org et sur la plateforme FUN-MOOC.
On utilise le System Browser
pour créer/éditer les objets que ce soit les packages, les classes ou les méthodes.
Pour ouvrir le System Browser:
Le System Browser affiche dans la colonne de gauche tous les packages présents dans l'image.
Pour créer un nouveau package:
L'option de filtre en bas de la colonne permet de restreindre l'affichage.
Le package est vide pour l'instant mais il le System Browser
présente un modèle de création de classe (patron) dans la partie basse de la fenêtre, dans l'onglet “New class”
Object subclass: #NameOfSubclass instanceVariableNames: '' classVariableNames: '' package: 'MyCounter'
Ici on va mettre à jour ce modèle pour créer une classe Counter
avec un attribut count
, on modifie le patron comme suit:
Object subclass: #Counter instanceVariableNames: 'count' classVariableNames: '' package: 'MyCounter'
On remarque que l'onglet New class
est préfixé par une astérisque pour indiquer que les modifications apportées au modèle n'ont pas encore été enregistrées.
Pour accepter les modifications et compiler le code sélectionner le texte et depuis le menu contextuel choisir l'option accepter ou utiliser le raccourcis clavier Ctrl+S.
La classe Counter
apparaît à présent. Le point d'exclamation permet d'attirer l'attention du programmeur sur certains points. Placer le curseur sur le point d'exclamation pour voir le message.
On va pouvoir ajouter une méthode. Par défaut l'option “Inst. side” est active. L'onglet Inst. side method
est présenté, il permet de créer une méthode d'instance. On va créer un accesseur (getter) nommé par exemple getCounter
permettant de récupérer la valeur de l'attribut count
.
getCounter "Return counter value" ^ count
NB: En bas de la fenêtre un bouton “Classify method” permet de spécifier un protocole supporté par la méthode: ici notre methode etant un accesseur, on lui associe le protocole accessing
.
De la même manière on va pouvoir définir un Setter ici nommé setCounter:
permettant de redéfinir la valeur de l'attribut count
.
setCounter: anInteger "replace the counter value" count := anInteger
On peut à présent tester notre classe en ouvrant un Playground et en affichant le résultat de l'expression suivante:
|c| c := Counter new. c setCounter: 33; getCounter.