• [^] # Re: semble sympa.

    Posté par . En réponse à la dépêche Sortie d'Amber 0.11.0. Évalué à 5.

    model: aModel
     model := aModel
    

    La première ligne permet de définir la méthode. Le nom de la méthode est model:. Cette méthode possède un paramètre dont le nom est aModel. On ne connaît pas le type du paramètre ni le type de retour de la méthode. La deuxième ligne affecte la valeur de l'argument aModel à la variable d'instance model. Cette méthode est donc tout simplement un setter.

    onClassMoved: anAnnouncement
    

    définition d'une nouvelle méthode dont le nom est onClassMoved: et qui prend un paramètre nommé anAnnouncement.

     | class oldPackage |
    

    déclaration de 2 nouvelles variables temporaires. En Smalltalk on doit déclarer toutes les variables que l'on utilise.

     class := anAnnouncement theClass.
    

    assignation à la variable temporaire class de la valeur résultante de l'envoie du message theClass (sans argument) à l'objet anAnnouncement.

     oldPackage := anAnnouncement oldPackage.
    

    même chose.

     (oldPackage = self model selectedPackage or: [
     class package = self model selectedPackage ])
    

    expression qui retourne un booléen. L'expression est un OR entre 2 égalités.

     ifFalse: [ ^ self ].
    

    ifFalse: est un message envoyé au booléen (de la ligne précédente) qui prend un block en paramètre. Le block n'est évalué que si le booléen vaut false. L'accent circonflexe ^ signifie "return". Ici, on retourne l'objet courant (self = this en Java). C'est donc pareil que return this en Java. En Smalltalk, toutes les méthodes retournent un objet, et self est retourné par défaut. Donc, si la condition est fausse, on quitte la méthode.

     oldPackage = self model selectedPackage ifTrue: [ 
     self 
     selectedItem: nil;
     selectItem: nil ].
    

    La première ligne définie une condition. Si la condition est vraie, on envoie 2 messages à self (= this). Le premier message est selectedItem: avec un argument à nil (= null). Le deuxième message est selectItem: avec un argument à nil. Il faut noter l'utilisation du ; qui permet d'envoyer plusieurs messages à un même objet.

     self setItemsForSelectedPackage.
     self refresh
    

    Ici on envoie 2 messages à self, aucun ne prenant d'argument. On aurait pu utiliser un ; ici aussi.