Classes de référence du Smalltalk Squeak

From OFSET Wiki

Jump to: navigation, search

Traduction de Squeak Smalltalk: Classes Reference

Contents

[edit] Classes et méthodes fondamentales

[edit] Classe Object (opérations qui concernent tous les objets)

[edit] Création d’instances (méthode de classe)

Message Description Note
new Renvoie une nouvelle instance du receveur (qui est une classe). C’est la façon courante de créer un nouvel objet. new est habituellement redéfini dans les sous-classes pour obtenir un comportement spécifique. 1,2
basicNew Cette primitve est appelée pour implementer new. 3
new: unEntier Renvoie une nouvelle instance du receveur (qui est une classe), de taille unEntier. Autorisé seulement si l’indication de la taille a un sens. 4

Notes :

  • [1] - Le corps d’une méthode new est généralement ^super new. N’oubliez pas de le taper côté classe, et d’inclure le signe ^. Attention à utiliser super, et non self !
  • [2] - Vous ne devez pas implémenter new si cela n’a pas de sens. Consultez par exemple Boolean class>>new ou MappedCollection class>>new
  • [3] - basicNew est là pour vous permettre de continuer à produire des instances même si une superclasse a redéfini new. Vous ne devez donc jamais redéfinir basicNew tant que vous n’êtes pas devenu un gourou Squeak.
  • [4] - Si vous avez besoin d’un paramètre autre que la taille, choisissez un nom plus évocateur que new: vous trouverez un exemple dans le protocole de création d’instances pour les classes Pen et Rectangle.

[edit] Comparer des objets

Message Description Note
== unObjet Le receveur et l’argument sont-ils le même objet ? (la réponse est true ou false) 1
~~ unObjet Le receveur et l’argument sont-ils des objets différents ? 1
= unObjet Le receveur et l’argument sont il égaux ? Le sens exact de l’égalité dépend de la classe du receveur. 2
~= unObjet Le receveur et l’argument sont il différents ? 2
hash Renvoie unPetitEntier dont la valeur est liée à la valeur du receveur. 2

Notes :

  • [1] - Normalement, aucune autre classe ne devrait redéfinir == et ~~ .
  • [2] - Comme certaines classes (Set et Dictionary en particulier) utilisent le fait que hash renvoie la même valeur pour des objets égaux, vous devriez redéfinir hash chaque fois que vous redéfinissez =. (a=b) implique forcément (a hash = b hash). La réciproque n'est en général pas vraie.

[edit] Tester des objets

Message Description Note
isNil Le récepteur a-t-il une valeur nulle ? (répond true ou false) 1
notNil Le récepteur a-t-il une valeur non-nulle ? 1
ifNil: unBloc Évalue unBloc; si le receveur a une valeur nulle, et si oui renvoie la valeur de unBloc. Dans le cas contraire, renvoie le receveur. 2
ifNotNil: unBloc Évalue unBloc; si le receveur a une valeur non-nulle, et renvoie la valeur de unBloc. Dans le cas contraire, renvoie le receveur, c'est-à-dire nil. 2
ifNotNilDo: unBloc Si le receveur à une valeur non-nulle, évalue unBloc avec le receveur pour argument. Renvoie le receveur. 3

Notes :

  • [1] - unObjet isNil est préférable à unObjet == nil ; de même pour unObjet notNil et unObjet ~~ nil.
  • [2] - unObjet ifNil: [...] est préférable à unObjet isNil ifTrue: [...]
  • [3] - ifNotNilDo: unBloc est utile lorsque le receveur est une expression complexe, par exemple :

self filsGauche filsDroit ifNotNilDo: [:noeud | noeud equilibrer]

[edit] Copier des objets

Message Description Note
copy Renvoie une instance identique au receveur. Il est courant pour une sous-classes de redéfinir cette méthode mais non de redéfinir shallowCopy.
shallowCopy Renvoie une copie du receveur qui partage les variables d’instance du receveur.
deepCopy Renvoie une copie du receveur avec une copie de chacune de ses variables d’instance.
veryDeepCopy Effectue une copie complète de l’arbre à l’aide d’un dictionnaire. Un objet présent deux fois dans l’arbre n’est copié qu’une seule fois et partagé par ses deux référents.

[edit] Envoyer des messages aux objets

Message Description Note
perform: unSymbole Envoie un sélecteur unaire, unSymbole, au receveur. Signale une erreur si le nombre d'arguments attendus par le sélecteur n'est pas zéro.
perform: unSymbole with: unObjet Envoie le sélecteur unSymbole au receveur avec l'argument unObjet. Échoue si le nombre d'arguments attendus par le sélecteur n'est pas un. 1
perform: unSymbole withArguments: tableauArguments Envoie le sélecteur unSymbole au receveur avec les arguments dans tableauArguments. Échoue si le nombre d'arguments attendus par le sélecteur ne correspond pas à la taille de tableauArguments.

Note :

  • [1] - Avec Squeak, un objet reconnait aussi #perform:with:with: et #perform:with:with:with, qui sont des spécialisations de #perform:withArguments: pour des tableaux de deux ou trois éléments.

[edit] Indexer des objets

Message Description Note
at: indice Renvoie la valeur du indice-ième élément du receveur. Signale une erreur si l'indice n'est pas un entier ou est en dehors des limites.
at: indice put: unObjet Enregistre unObjet dans le receveur à la position indice. Signale une erreur si indice n'est pas un entier ou est en dehors des limite. Renvoie unObjet.
at: indice modify: unBloc Remplace le indice-ième élément du receveur par ce même élément transformé par unBloc.
size Renvoie le nombre d'éléments indexables dans le receveur. Cette valeur est identique à l'indice du plus grand élément présent.

[edit] Afficher et enregistrer des objets

Message Description Note
printString Renvoie une chaîne (String) dont les caractères décrivent le receveur.
printOn: unFlot Rajoute à unFlot (de type Stream) une chaîne dont les caractères décrivent le receveur.
storeString Renvoie une chaîne à partir de laquelle le receveur peut être reconstruit.
storeOn: unFlot Rajoute à unFlot une chaîne à partir de laquelle le receveur peut être reconstruit.

[edit] Interroger des objets

Message Description Note
class Renvoie la classe du receveur (un objet).
isKindOf: uneClasse Le receveur est-il une instance de uneClasse ou l'une de ses sous-classes ?
isMemberOf: uneClasse Le receveur est-il une instance de uneClasse ? (Équivaut à receveur class == uneClasse)
respondsTo: unSelecteur Peut-on trouver une méthode pour unSelecteur, soit dans la classe du receveur, soit dans l'une de ses super-classes ?
canUnderstand: unSelecteur Le receveur, qui doit être une classe, dispose-t-il d'une méthode pour unSelecteur ? La méthode peut appartenir au receveur lui-même ou à l'une de ses super-classes.

[edit] Messages divers auxquels répondent les objets

Message Description Note
yourself Retourne l'objet lui-même. 1
asString Retourne le receveur auquel on a appliqué la méthode printString.
doesNotUnderstand: unSymbole Rapporte que le receveur ne comprend pas de message ayant pour sélecteur unSymbole.
error: uneChaine Signale une erreur (de type Error).
halt Arrête l'exécution. 2

Notes :

  • [1] - Le message yourself (littéralement: toi-même) est essentiellement utilisé comme dernier message dans une cascade, lorsque l'avant-dernier message renvoie un objet autre que le receveur. Par exemple, #(1 2 3 5) at: 4 put: 4 revoie 4, l'objet qui a été rangé, alors que #(1 2 3 5) at: 4 put: 4; yourself renvoie #(1 2 3 4), le receveur.
  • [2] - self halt est la méthode usuelle pour forcer l'ouverture du débogueur. L'exécution peut ensuite reprendre.

[edit] Classe Boolean

Cette classe abstraite représente les valeurs logique et fournit des opérateur booléens ainsi que des structures de contrôle conditionnelles. Elle a deux sous-classes, True et False, chacune d'entre elles disposant d'instances singletons représentées par les mots-clefs true (vrai) et false (faux) respectivement.

[edit] Opérateurs booléens évaluant et non-évaluant

Message Description Note
& unBooleen Conjonction logique évaluante (ET). Évalue l'argument unBooleen, puis renvoie true si l'argument et le receveur sont simultanément vrais.
unBooleen Disjonction logique évaluante (OU). Évalue l'argument unBooleen, puis renvoie true si l'argument ou le receveur (ou les deux) sont vrais.
eqv: unBooleen Renvoie true si le receveur est équivalent à unBooleen.
not Négation logique. Renvoie true si le receveur est false, renvoie false si le receveur est true.
xor: unBooleen OU exclusif évaluant. Évalue l'argument unBooleen, puis renvoie true si l'argument ou le receveur (mais pas les deux simultanément) sont vrais. Il revient au même de dire que cette méthode renvoie true si le receveur n'est pas équivalent à unBooleen.
and: blocAlternatif Conjonction logique non évaluante. Si le receveur est true, renvoie la valeur de blocAlternatif; sinon, renvoie false sans évaluer le blocAlternatif.
or: blocAlternatif Disjonction logique non évaluante. Si le receveur est false, renvoie la valeur de blocAlternatif; sinon, renvoie true sans évaluer le blocAlternatif.

[edit] Classe Magnitude

Cette classe abstraite regroupe, entre autres classes, les nombres (Numbers), les caractères (Characters), les dates et l'heure (Date et Time). Elle sert à toutes les classes dont les instances peuvent être ordonnées linéairement.

Message Description Note
< uneMagnitude Le receveur est-il strictement plus petit que l'argument ?
> uneMagnitude Le receveur est-il strictement plus grand que l'argument ?
<= uneMagnitude Le receveur est-il plus petit ou égal à l'argument ?
>= uneMagnitude Le receveur est-il plus grand ou égal à l'argument ?
between: min and: max Le receveur est-il entre min et max, c'est-à-dire est-il plus grand ou égal à l'argument min et plus petit ou égal à l'argument max ?
min: uneMagnitude Renvoie du receveur ou de l'argument celui ayant la plus petite magnitude.
max: uneMagnitude Renvoie du receveur ou de l'argument celui ayant la plus grande magnitude.
min: magnitude1 max: magnitude2 Prend du receveur ou de l'argument magnitude1 celui ayant la plus petite magnitude, puis renvoie de cette magnitude ou de l'argument magnitude2 celui ayant la plus grande magnitude.

[edit] Classe Character

Squeak utilise son propre jeu de 256 caractères, qui peut différer de celui de la plateforme hôte. Les instances de la classe Character contiennent un code de caractère codé en 8 bits.

  • Les caractères entre 0 et 127 sont ceux correspondant à la norme ASCII, à part quelques exceptions: la flèche d'affectation remplace le tiret bas (underscore), et les caractères pour enter, insert (insertion), page up (page haut), page down (page bas), home (début) et les quatre flèches de direction remplacent certains caractères ASCII. Ces caractères sont accessibles sous Squeak en utilisant des méthodes de la classe Character.
  • Les caractères entre 128 et 255 ne sont pas tous affectés. Divers symboles tels les puces, marques déposées (TM), copyrights (c), cents, euros et yen, diphtongues et un certain nombre de caractères accentués ainsi que l'espace insécable (caractère nbsp) correspondent au codage sous Macintosh, mais ils ne sont pas tous présents.
  • Le jeu de caractères complet peut être visualisé en effectuant un printIt sur Character allCharacters.

[edit] Méthodes pour créer des instances (côté classe)

La plupart du temps, les caractères littéraux $a, $b, etc. sont utilisés de préférence aux méthodes de classe. Les exceptions notables sont dues aux caractères non imprimables listés ci-dessous. Un programme ne devrait jamais avoir à dépendre des détails d'encodage des caractères.

Message Description Note
value: n n doit être un entier compris entre 0 et 255. Renvoie le caractère dont le code est n. 1
digitValue: x Renvoie le caractère correspondant au chiffre x. Par exemple, renvoie $9 pour x=9, $0 pour x=0, $A pour x=10, $Z pour x=35.
arrowDown(flèche bas) arrowLeft(flèche gauche) arrowRight(flèche droite) arrowUp(flèche haut) backspace(effacement arrière) cr(retour chariot) delete(effacement) end(fin) enter(entrée) escape(échapement) euro(euro) home(début) insert(insertion) lf(nouvelle ligne) linefeed(nouvelle ligne) nbsp(espace insécable) newPage(nouvelle page) pageDown(page bas) pageUp(page haut) space(espace) tab(tabulation) Renvoie le caractère approprié.

Note :

  • [1] - L'invariant (Character value: n) asciiValue = n est vrai pour tout entier dans l'intervalle [0..255].

[edit] Méthodes pour accéder aux caractères

Message Description Note
asciiValue Renvoie la valeur d'encodage du receveur. Ce n'est pas réellement un code ASCII, contrairement à ce que pourrait laisser penser le nom de cette méthode ! 1
digitValue Renvoie 0-9 si le receveur est $0-$9; 10-35 si celui-ci est $A-$Z; un nombre négatif dans le cas contraire. Cela sert pour l'analyse syntaxique des chiffres de base 2 à 36.

Note :

  • [1] - Les instances de la classe Character ont une propriété d'unicité: les instances égales (au sens de "=") sont identiques (au sens de "=="). C'est-à-dire a asciiValue == b asciiValue si et seulement si a == b.

[edit] Méthodes pour tester les caractères

Message Description Note
isAlphanumeric Le receveur est-il une lettre ou un chiffre ?
isDigit Le receveur est-il un chiffre ?
isLetter Le receveur est-il une lettre ?
isLowerCase Le receveur est-il une lettre en minuscule ?
isSeparator Le receveur est-il l'un des caractères suivant: space(espace), cr(retour chariot), tab(tabulation), linefeed(nouvelle ligne) ou formfeed(nouvelle page).
isSpecial Le receveur est-il l'un des caractères spéciaux ?
isUppercase Le receveur est-il une lettre en majuscule ?
isVowel Le receveur est-il une voyelle, AEIOU, en majuscule ou en minuscule ?
tokenish Le receveur est-il un caractère de mot-clef (token) valide (lettre, chiffre, double point) ?

[edit] Méthodes de conversion de caractères

Message Description Note
asLowercase Si le receveur est une lettre en majuscule, renvoie la lettre en minuscule correspondante.
asUppercase Si le receveur est une lettre en minuscule, renvoie la lettre majuscule correspondante.

[edit] Classes et méthodes des nombres

[edit] Classe Number

Cette classe abstraite regroupe les entiers (Integer), les réels à virgule flottante (Float) et les fractions (Fraction). Number est une sous-classe de Magnitude.

[edit] Méthodes arithmétiques pour toutes les classes numériques

Message Description Note
+ unNombre Renvoie la somme du receveur et de unNombre.
- unNombre Renvoie la différence du receveur et de unNombre.
* unNombre Renvoie le produit du receveur et de unNombre.
/ unNombre Renvoie le résultat de la division du receveur par unNombre, en essayant de conserver autant de précision que possible. Si le résultat n'est pas exact, la réponse sera une fraction (Fraction) ou un réel à virgule flottante (Float) selon le cas. Signale une erreur de division par zéro (ZeroDivide) si l'argument unNombre est zéro.
// unNombre Renvoie le résultat de la division du receveur par unNombre, en tronquant par valeur inférieure. Signale une erreur de division par zéro (ZeroDivide) si l'argument unNombre est zéro.
\\ unNombre Renvoie le reste obtenu en divisant le receveur par unNombre, en tronquant par valeur inférieure. C'est le classique opérateur modulo. Signale une erreur de division par zéro (ZeroDivide) si l'argument unNombre est zéro.
quo: unNombre Renvoie le résultat de la division du receveur par unNombre, en tronquant vers zéro. Signale une erreur de division par zéro (ZeroDivide) si l'argument unNombre est zéro.
rem: unNombre Renvoie le reste obtenu en divisant le receveur par unNombre, en tronquant vers zéro. Signale une erreur de division par zéro (ZeroDivide) si l'argument unNombre est zéro.
abs Renvoie la valeur absolue du receveur.
negated Renvoie l'opposé (négation) du receveur.
reciprocal Renvoie l'inverse (1 divisé par le receveur). Signale une erreur de division par zéro (ZeroDivide) si l'argument unNombre est zéro.

[edit] Méthodes implémentant les fonction mathématiques sur les nombres

Message Description Note
exp Renvoie l'exponentielle du receveur.
ln Renvoie le logarithme népérien du receveur.
log: unNombre Renvoie le logarithme en base unNombre du receveur.
floorLog: unNombre Renvoie la troncature par valeur inférieure du logarithme en base unNombre du receveur.
raisedTo: unNombre Renvoie le receveur élevé à la puissance unNombre.
raisedToInteger: unEntier Renvoie le receveur élevé à la puissance unEntier. Signale une erreur si unEntier n'est pas un entier.
sqrt Renvoie la racine carrée du receveur.
squared Renvoie le carré du receveur (c'est-à-dire le receveur multiplié par lui-même).

[edit] Méthodes pour tester des nombres

Message Description Note
even Le receveur est-il pair ?
odd Le receveur est-il impair ?
negative Le receveur est-il négatif (strictement inférieur à zéro) ?
positive Le receveur est-il positif (plus grand ou égal à zéro) ?
strictlyPositive Le receveur est-il strictement supérieur à zéro ?
sign Renvoie 1 si le receveur est strictement positif, 0 s'il est égal à zéro, et -1 s'il est strictement négatif.
isZero Le receveur est-il égal à zéro ?

[edit] Méthodes pour tronquer et arrondir les nombres

Message Description Note
ceiling Renvoie l'entier supérieur le plus proche du receveur.
floor Renvoie l'entier inférieur le plus proche du receveur.
truncated Renvoie la troncature à l'entier le plus proche du receveur (vers zéro).
truncateTo: unNombre Renvoie le multiple de unNombre qui est le plus proche du receveur (vers zéro).
rounded Renvoie l'entier le plus proche du receveur.
roundTo: unNombre Renvoie le multiple de unNombre qui est le plus proche du receveur.
roundUpTo: unNombre Renvoie le multiple de unNombre qui est le plus proche du receveur (par valeur supérieure).

[edit] Méthodes pour la trigonométrie sur les nombres

Message Description Note
sin Renvoie le sinus du receveur exprimé en radians.
cos Renvoie le cosinus du receveur exprimé en radians.
tan Renvoie la tangente du receveur exprimé en radians.
degreeSin Renvoie le sinus du receveur exprimé en degrés.
degreeCos Renvoie le cosinus du receveur exprimé en degrés.
arcSin Renvoie l'angle en radians dont le sinus est donné par le receveur.
arcCos Renvoie l'angle en radians dont le cosinus est donné par le receveur.
arcTan Renvoie l'angle en radians dont la tangente est donnée par le receveur.
arcTan: denominateur Renvoie l'angle en radians dont la tangente est donnée par le receveur divisé par denominateur.
degreesToRadians Renvoie le receveur en radians. Suppose que celui-ci est exprimé en degrés.
radiansToDegrees Renvoie le receveur en degrés. Suppose que celui-ci est exprimé en radians.

[edit] Classe Integer

[edit] Méthodes pour l'arithmétique sur les entiers

Message Description Note
isPowerOfTwo Le receveur est-il une puissance de deux ?
factorial Renvoie la factorielle du receveur.
gcd: unEntier Renvoie le PGCD (Plus Grand Commun Diviseur) du receveur et de l'argument unEntier
lcm: unEntier Renvoie le PPCM (Plus Petit Commun Multiple) du receveur et de l'argument unEntier
take: r Renvoie le nombre de combinaisons du receveur, lorsqu'on en prend r à la fois. Par exemple, 6 take: 3 vaut 6*5*4/(1*2*3). Renvoie zéro en dehors du triangle de Pascal.

[edit] Méthodes de manipulation de bits sur les entiers

Une panoplie d'opérateurs de manipulation de bits est disponible sur les entiers. Ils ne sont que rarement utilisés cependant, et ne sont par conséquent pas décrits ici. Il est possible de les examiner à l'aide d'un navigateur de classes.

[edit] Classes et méthodes des collections

[edit] La hiérarchie des collections

Classe Description
<code>Collection Classe abstraite pour toutes les collections.
   Bag(sac) Collection d'objets non-ordonnés et non-indexés.
   Set(ensemble) Collection d'objets uniques non-ordonnés, non-indexés.
      Dictionary(dictionnaire) Ensemble d'associations (les valeurs sont indexables par des clefs)
         IdentityDictionary Dictionnaire, mais les comparaisons sont faites en utilisant ==.
      IdentitySet Ensemble, mais les comparaisons sont faites en utilisant ==.
   SequenceableCollection Collection ordonnée, indexée par des entiers.
      OrderedCollection L'ordre des éléments est déterminé par la manière dont ils sont ajoutés/retirés de la collection.
         SortedCollection L'ordre des éléments est déterminé par la valeur d'un blocDeComparaison.
      LinkedList SequenceableCollection homogène de liens (Link) qui sont des conteneurs vers d'autres objets. Peut-être utilisé en tant que pile ou queue.
      Interval Suite homogène d'entiers en progression arithmétique.
      ArrayedCollection Collection ordonnée, indexée par un intervalle d'entiers.
         Array ArrayedCollection d'objets arbitraires.
         Array2D Collection homogène d'ArrayedCollection d'Arrays.
         ByteArray ArrayedCollection homogène d'octets (entre 0 et 255).
         FloatArray ArrayedCollection homogène de nombres à virgule flottante (Float)
         IntegerArray ArrayedCollection homogène d'entiers signés sur 32 bits.
            PointArray ArrayedCollectionhomogène de points (Point) dont les coordonnées sont des valeurs sur 32 bits.
         RunArray ArrayedCollection homogène d'entiers signés sur 32 bits (représentation RLE (Run Length Encoded) clairsemée).
         ShortIntegerArray ArrayedCollection homogène d'entiers signés sur 16 bits.
            ShortPointArray ArrayedCollectionhomogène de points (Point) dont les coordonnées sont des valeurs sur 16 bits.
         ShortRunArray ArrayedCollection homogène d'entiers signés sur 16 bits (représentation RLE (Run Length Encoded) clairsemée).
         String ArrayedCollectionhomogène de caractères, c'est-à-dire une chaîne de caractères.
            Symbol Chaîne de caractères ayant la propriété d'instance unique (il ne peut y avoir qu'une seule instance d'un symbole donné dans une image).
         Text ArrayedCollectionhomogène de caractères avec les attributs du texte associés.
         WordArray ArrayedCollectionhomogène d'entiers non-signés sur 32 bits.
      Heap Comme une SortedCollection, mais les informations sont stockées dans un tas (heap). Voir Heapsort.
      MappedCollection Moyen d'accéder à une collection indexable en utilisant une application allant d'une collection de clefs externes vers les clefs internes de la collection. La MappedCollection peut alors être utilisée directement, en indexant et modifiant la collection accédée à partir des clefs externes.

[edit] Classe Collection

[edit] Méthodes pour créer des collections (côté classe)

Message Description Notes
with: unObjet Renvoie une instance du receveur contenant unObjet.
with: premierObjet with: secondObjet Renvoie une instance du receveur contenant tous les arguments en tant qu'éléments (Squeak reconnait des créateurs d'instances de ce genre ayant jusqu'à six clauses with:).
withAll: uneCollection Renvoie une instance du receveur contenant tous les éléments de uneCollection.

[edit] Méthodes pour tester les collections

Message Description Notes
isEmpty Le receveur est-il vide (ne contient-il aucun élément) ?
occurencesOf: unObjet Renvoie le nombre d'éléments du receveur qui sont égaux à unObjet.
anySatisfy: unBloc Évalue unBloc sur tous les éléments du receveur. Si ce bloc renvoie true (vrai) pour au moins un des éléments, alors cette méthode renvoie true. Sinon, elle renvoie false (faux).
allSatisfy: unBloc Évalue unBloc sur tous les éléments du receveur. Si ce bloc renvoie true pour tous les éléments, alors cette méthode renvoie true. Sinon, elle renvoie false.
includes: unObjet unObjet est-il l'un des éléments du receveur ?
includesAllOf: uneCollection Tous les éléments de uneCollection sont-ils dans le receveur ?
includesAnyOf: uneCollection Un au moins des éléments de uneCollection est-il dans le receveur ?

[edit] Méthodes pour ajouter ou retirer des éléments d'une collection

Message Description Notes
anyOne Renvoie un des éléments du receveur (n'importe lequel). Signale une erreur si le receveur est vide.
add: nouvelObjet Place nouvelObjet comme nouvel élément du receveur. Renvoie nouvelObjet. Les tableaux (ArrayedCollection) ne peuvent pas répondre à ce message.
addAll: uneCollection Ajoute tous les éléments de uneCollection comme nouveaux éléments du receveur. Renvoie uneCollection.
remove: ancienObjet Retire un exemplaire de ancienObjet parmi les éléments du receveur. Si plusieur éléments du receveur sont égaux à ancienObjet, un seul sera retiré. Renvoie ancienObjet, à moins qu'aucun élément ne lui soit égal. Dans ce cas, signale une erreor.
remove: ancienObjet ifAbsent: unBlocException Retire un exemplaire de ancienObjet parmi les éléments du receveur. Si plusieur éléments du receveur sont égaux à ancienObjet, un seul sera retiré. Si aucun élément n'est égal à ancienObjet, renvoie le résultat de l'évaluation de unBlocException. Sinon, renvoie ancienObjet.
removeAll: uneCollection Retire un exemplaire de chaque élément de uneCollection parmi les éléments du receveur. En cas de succès pour chaque élément, renvoie uneCollection. Sinon, signale une erreur.
removeAllFoundIn: uneCollection Retire un exemplaire de chaque élément de uneCollection parmi les éléments du receveur, à condition qu'ils y soient présents. Aucune erreur n'est signalée dans le cas contraire. Renvoie uneCollection.
removeAllSuchThat: unBloc Évalue unBloc sur tous les éléments du receveur, et retire cet élément si le bloc renvoie true (vrai).
difference: secondeCollection Renvoie une nouvelle collection obtenue en prenant les éléments du receveur qui ne sont pas présents dans secondeCollection. Il s'agit de la différence symétrique ensembliste.

[edit] Méthodes pour énumérer les collections

Message Description Notes
do: unBloc Évalue unBloc pour chaque élément du receveur (avec celui-ci comme argument).
do: unBloc seperatedBy: blocSeparateur Évalue unBloc pour chaque élément du receveur (avec celui-ci comme argument). S'il y a plus d'un élément, évalue blocSeparateur (sans arguments) entre chaque paire d'éléments du receveur.
select: unBlocPredicat Évalue unBlocPredicat pour chaque élément du receveur (avec celui-ci comme argument). Tous les éléments pour lesquels le bloc renvoie true (vrai) seront regroupés dans une nouvelle collection de même type que le receveur. Renvoie la nouvelle collection.
reject: unBlocPredicat Évalue unBlocPredicat pour chaque élément du receveur (avec celui-ci comme argument). Tous les éléments pour lesquels le bloc renvoie false (faux) seront regroupés dans une nouvelle collection de même type que le receveur. Renvoie la nouvelle collection.
collect: unBlocApplication Applique unBlocApplication sur chaque élément du receveur. Les résultats sont regroupés dans une nouvelle collection de même type que le receveur. Renvoie la nouvelle collection.
detect: unBlocPredicat Évalue unBlocPrédicat sur chaque élément du receveur. Renvoie le premier élément pour lequel l'évaluation donne true. Signale une erreur si aucun n'est trouvé.
detect: unBlocPredicat ifNone: unBlocException Évalue unBlocPrédicat sur chaque élément du receveur. Renvoie le premier élément pour lequel l'évaluation donne true. Si aucun n'est trouvé, renvoie le résultat de l'évaluation de unBlocException.
inject: valeurInitiale into: blocBinaire Accumule une valeur courante associée à l'évaluation de blocBinaire. La valeur courante est tout d'abord initialisée à valeurInitiale. À chaque étape, la valeur courante et le prochain élément du receveur sont donnés en arguments à blocBinaire. Renvoie la dernière valeur courante. 1
collect: unBlocApplication thenSelect: unBlocPredicat Évalue unBlocApplication sur chaque élément du receveur. Les résultats qui satisfont à unBlocPredicat (c'est-à-dire pour lesquels unBlocPredicat renvoie true) sont regroupés dans une nouvelle collection de même type que le receveur. Renvoie la nouvelle collection.
select: unBlocPredicat thenCollect: unBlocApplication Évalue unBlocApplication sur tous les éléments du receveur qui satisfont à unBlocPredicat, et regroupe les résultats dans une nouvelle collection de même type que le receveur. Renvoie la nouvelle collection.
count: unBlocPredicat Renvoie le nombre d'éléments du receveur qui satisfont à unBlocPredicat.

Note :

  • [1] - Par exemple, pour calculer la somme des éléments d'une collection de nombres, utiliser uneCollection inject: 0 into: [:sousTotal :prochain | sousTotal + prochain].

[edit] Classe Bag

[edit] Méthodes pour accéder aux sacs (Bag)

Message Description Notes
add: nouvelObjet withOccurences: unEntier Ajoute nouvelObjet au receveur. Fait comme si l'opération était répétée unEntier fois. Renvoie nouvelObjet.

[edit] Classes Dictionary et IdentityDictionary

[edit] Méthodes pour accéder aux dictionnaires

Les dictionnaires sont des ensembles (Set) homogènes de paires clef/valeur. Ces paires sont appelées des associations (type Association); les clefs et les valeurs peuvent être d'un type quelconque. Une association est crée en envoyant le message binaire clef -> valeur (-> est défini dans Object). Une propriété des dictionnaires est qu'une clef ne peut s'y trouver qu'une fois. Les IdentityDictionnary partagent cette propriété, mais déterminent l'unicité d'une clef en utilisant l'opérateur == plutôt que =. Pour tout usage ordinaire, les deux types de dictionnaires sont indexés en utilisant ces clefs uniques pour obtenir les valeurs correspondantes.

Message Description Notes
at: uneClef Renvoie la valeur associée à uneClef. Signale une erreur si une telle association n'existe pas.
at: uneClef ifAbsent: unBloc Renvoie la valeur associée à uneClef. Si une telle association n'existe pas, renvoie le résultat de l'évaluation de unBloc.
associationAt: uneClef Renvoie l'association (Association) dont la clef est uneClef. Signale une erreur si celle-ci ne peut être trouvée.
associationAt: uneClef ifAbsent: unBloc Renvoie l'association (Association) dont la clef est uneClef. Renvoie le résultat de l'évaluation de unBloc si celle-ci ne peut être trouvée.
keyAtValue: uneValeur Renvoie la clef de la première association dont la valeur est uneValeur. Signale une erreur si une telle association n'existe pas.
keyAtValue: uneValure ifAbsent: unBloc Renvoie la clef de la première association dont la valeur est uneValeur. Renvoie le résultat de l'évaluation de unBloc si une telle association n'existe pas.
keys Renvoie un ensemble (Set) des clefs du receveur.
values Renvoie un tableau (Array) des valeurs du receveur.
includes: uneValeur uneValeur est-elle une des valeurs du receveur ?
includesKey: uneClef uneClef est-elle une des clefs du receveur ?
do: unBloc Évalue unBloc pour chaque valeur du receveur (avec cette valeur comme argument).
keysDo: unBloc Évalue unBloc pour chaque clef du receveur (avec cette clef comme argument).
valuesDo: unBloc Équivalent à do: unBloc.
keysAndValuesDo: unBlocBinaire Évalue unBlocBinaire pour chaque association (avec la clef et la valeur comme paire d'arguments).
associationsDo: unBloc Évalue unBloc pour chaque association (avec celle-ci comme argument unique).

[edit] Collections séquentielles

[edit] Méthodes pour accéder aux collections séquentielles

Message Description Notes
atAll: uneCollection Renvoie une collection contenant les éléments dont les indices sont spécifiés dans uneCollection (dont les éléments sont des entiers).
atAll: uneCollection put: unObjet Place unObjet à chaque indice spécifié par les entiers éléments de uneCollection.
atAllPut: unObjet Place unObjet à chaque élément existant du receveur.
first Renvoie le premier élément du receveur (Squeak reconnaît aussi second, third, fourth, fifth et sixth dont la signification est facile à deviner). Signale une erreur s'il n'y a pas suffisamment d'éléments dans le receveur.
middle Renvoie l'élément médian du receveur. Signale une erreur si le receveur est vide.
last Renvoie le dernier élément du receveur. Signale une erreur si le receveur est vide.
allButFirst Renvoie une collection identique au receveur, mais sans le premier élément. Signale une erreur si le receveur est vide.
allButLast Renvoie une collection identique au receveur, mais sans le dernier élément. Signale une erreur si le receveur est vide.
indexOf: unElement Renvoie l'indice de unElement dans le receveur. Si cet élément n'est pas présent, renvoie 0.
indexOf: unElement ifAbsent: blocException Renvoie l'indice de unElement dans le receveur. Si le receveur ne contient pas cet élément, renvoie le résultat de l'évaluation de blocException.
indexOfSubcollection: uneSousCollection startingAt: unIndice Recherche si la collection uneSousCollection est présente dans le receveur (dans le même ordre et consécutivement), en commençant la recherche à partir de l'indice unIndice. Le cas échéant, renvoie l'indice du premier élément trouvé. Sinon, renvoie 0.
indexOfSubcollection: uneSousCollection startingAt: unIndice ifAbsent: blocException Recherche si la collection uneSousCollection est présente dans le receveur (dans le même ordre et consécutivement), en commençant la recherche à partir de l'indice unIndice. Le cas échéant, renvoie l'indice du premier élément trouvé. Sinon, renvoie le résultat de l'évaluation de blocException.
replaceFrom: debut to: fin with: collectionRemplacement Remplace de manière destructive les éléments allant de debut à fin dans le receveur, par les éléments de collectionRemplacement. Renvoie le receveur lui-même. Utiliser de préférence #copyReplaceFrom:to:with: pour des insertions/suppressions qui pourraient altérer la taille du résultat.
replaceFrom: debut to: fin with: collectionRemplacement startingAt: debutRemplacement Remplace de manière destructive les éléments allant de debut à fin dans le receveur, par les éléments de collectionRemplacement en partant de l'indice debutRemplacement. Renvoie le receveur. Aucun test de dépassement n'est effectué.

[edit] Méthodes pour copier les collections séquentielles

Message Description Notes
, autreCollection Renvoie une nouvelle collection, résultat de la concaténation du receveur et de autreCollection.
copyFrom: debut to: fin Renvoie une copie de la sous-collection du receveur allant de l'indice debut à l'indice fin (de manière inclusive dans les deux cas).
copyReplaceAll: vieilleSousCollection with: nouvelleSousCollection Renvoie une copie du receveur dans laquelle toutes les occurences de vieilleSousCollection ont été remplacées par nouvelleSousCollection.
copyReplaceFrom: debut to: fin with: collectionRemplacement Renvoie une copie du receveur vérifiant les conditions suivantes: si stop < start alors il s'agit d'une insertion; stop devrait alors être exactement égal à start - 1. start = 1 signifie insérer avant le premier élément, start = size + 1 signifie rajouter après le dernier élément. Sinon, c'est un remplacement; start et stop doivent se trouver à l'intérieur des bornes du receveur.
copyWith: nouvelElement Renvoie une copie du receveur à laquelle nouvelElement a été rajouté (à la fin).
copyWithout: ancienElement Renvoie une copie du receveur de laquelle toutes les occurences de ancienElement ont été supprimées.
copyWithoutAll: uneCollection Renvoie une copie du receveur de laquelle toutes les occurences de tous les éléments de uneCollection ont été supprimées.
forceTo: longueur paddingWith: unElement Renvoie une copie du receveur ramenée à la longueur spécifiée. Si celle-ci est plus grand que la longueur initiale, remplir à la fin avec des occurences de unElement.
reversed Renvoie une copie du receveur dans laquelle tous les éléments sont rangés dans l'ordre inverse.
shuffled Renvoie une copie du receveur dans laquelle tous les éléments ont été permutés (shuffled) de manière aléatoire.
sortBy: unBlocBinaire Renvoie une copie triée du receveur. Le critère de tri est fourni par unBlocBinaire. Lorsque ce bloc renvoie true (vrai), le premier argument sera rangé en premier. 1

Note :

  • [1] - Par exemple, avec [:a :b | a > b], le tri se fait par ordre décroissant.

[edit] Méthodes pour énumérer les collections séquentielles

Message Description Notes
findFirst: unBloc Renvoie l'indice du premier élément du receveur pour lequel unBloc s'évalue à true (vrai).
findLast: unBloc Renvoie l'indice du dernier élément du receveur pour lequel unBloc s'évalue à true.
keysAndValuesDo: unBlocBinaire Évalue unBlocBinaire pour chaque couple (indice/élément) du receveur.
reverseDo: unBloc Évalue unBloc sur chaque élément du receveur, mais en allant du dernier au premier. Cela donne l'ordre inverse de l'énumération par #do: dans le cas des SequenceableCollections.
with: autreCollection do: blocBinaire Évalue blocBinaire pour tous les couples (élément du receveur/élément correspondant de autreCollection).
reverseWith: autreCollection do: unBlocBinaire Évalue blocBinaire pour tous les couples (élément du receveur/élément correspondant de autreCollection), mais dans l'ordre inverse.

[edit] Collections ordonnées

[edit] Méthodes pour accéder aux collections ordonnées

Message Description Notes
add: nouvelObjet before: ancienObjet Rajoute nouvelObjet dans le receveur, à la position précédant celle de ancienObjet. Renvoie nouvelObjet.
add: nouvelObjet after: ancienObjet Rajoute nouvelObjet dans le receveur, à la position suivant celle de ancienObjet. Renvoie nouvelObjet.
add: nouvelObjet afterIndex: unIndice Rajoute nouvelObjet dans le receveur, à la position suivant l'indice unIndice. Renvoie nouvelObjet.
addFirst: nouvelObjet Rajoute nouvelObjet au début du receveur. Renvoie nouvelObjet.
addAllFirst: uneCollectionOrdonnee Rajoute tous les éléments de uneCollectionOrdonnee au début du receveur (dans le même ordre). Renvoie uneCollectionOrdonnee.
addLast: nouvelObjet Rajoute nouvelObjet à la fin du receveur. Renvoie nouvelObjet.
addAllLast: uneCollectionOrdonnee Rajoute tous les éléments de uneCollectionOrdonnee à la fin du receveur (dans le même ordre). Renvoie uneCollectionOrdonnee.
removeAt: unIndice Retire l'élément du receveur placé à l'emplacement d'indice unIndice. Renvoie l'élément retiré.
removeFirst Renvoie le premier élément du receveur après l'avoir retiré de celui-ci. Si le receveur est vide, signale une erreur.
removeLast Renvoie le dernier élément du receveur après l'avoir retiré de celui-ci. Si le receveur est vide, signale une erreur.

[edit] Chaînes de caractères

Les chaînes de caractères (String) forment une classe intimidante, construite au fil du temps d'une manière ad hoc. Nous ne décrivons ici qu'une petite partie des méthodes disponibles (il y en a environ 300 !).

[edit] Méthodes pour accéder chaînes de caractères

Message Description Notes
findAnySubStr: delimiteurs startingAt: debut Renvoie l'indice du premier caractère dans le receveur, à partir de de but, qui commence une sous-chaîne correspondant à l'un des delimiteurs; delimiteurs est un tableau (Array) de chaînes de caractères (String) et/ou de caractères (Character). Si le receveur ne contient aucun des délimiteurs à partir de debut, renvoie la taille du receveur plus un: size + 1.
findBetweenSubStrs: delimiteurs Renvoie la collection des mots-clefs obtenue par analyse du receveur. Tout élément de delimiteurs (de type String ou Character) est considéré comme un séparateur de mot-clef.
findDelimiters: delimiteurs startingAt: debut Renvoie l'indice du premier caractère, en partant de debut, qui correspond à l'un des delimiteurs. Si aucun d'entre eux n'est trouvé, renvoie size + 1.
findString: sousChaine Renvoie le premier indice de sousChaine dans le receveur. Si celle-ci n'est pas trouvée, renvoie 0.
findString: sousChaine startingAt: debut Renvoie le premier indice de sousChaine dans le receveur, en partant de debut. Si celle-ci n'est pas trouvée, renvoie 0.
findTokens: delimiteurs Renvoie la collection de mots-clefs (tokens) résultant de l'analyse du receveur. Tout caractère dans l'argument delimiteurs est considéré comme un séparateur. Plusieurs séparateurs à la suite sont assimilés à un seul séparateur.
indexOf: unCaractere Renvoie l'indice de la première occurence de unCaractere dans le receveur. Renvoie 0 si aucune n'est trouvée.
indexOf: unCaractere startingAt: debut Renvoie l'indice de la première occurence de unCaracteredans le receveur, en partant de debut. Renvoie 0 si aucune n'est trouvée.
indexOf: unCaractere startingAt: debut ifAbsent: unBloc Renvoie l'indice de la première occurence de unCaracteredans le receveur, en partant de debut. Renvoie le résultat de l'évaluation de unBloc si aucune n'est trouvée.
indexOfAnyOf: unEnsembleDeCaracteres Renvoie l'indice de la première occurence d'un des caractères de unEnsembleDeCaracteres dans le receveur. Renvoie 0 si aucune n'est trouvée. 1

Note :

  • [1] - Tout comme pour #indexOf:, il y a des variations sur ce message: #indexOfAnyOf:ifAbsent:, #indexOfAnyOf:startingAt: et #indexOfAnyOf:startingAt:ifAbsent:.

[edit] Méthodes pour comparer des chaînes de caractères

Message Description Notes
= uneChaine Le receveur est-il égal à uneChaine ? La comparaison tient compte de la casse (majuscules et minuscules).
< uneChaine, <= uneChaine, > uneChaine, >= uneChaine Le receveur et uneChaine se comparent-ils comme indiqué suivant l'ordre lexicographique (ordre du dictionnaire). Attention, l'ordre est basé sur le jeux de caractères de Squeak, il est donc sensible à la casse.
sameAs: uneChaine Le receveur est-il égal à uneChaine, indépendemment de la casse ?
compare: uneChaine Renvoie un code spécifiant comment le receveur se compare à uneChaine. La réponse est 1 lorsque self < uneChaine, 2 si self = uneChaine et 3 si self > uneChaine. L'ordre tient compte de la casse, puisqu'il est basé sur le jeu de caractères de Squeak.
match: texte Le texte correspond-il au motif dans le receveur ? La correspondance ne tient pas compte de la casse. Lorsque le receveur contient un #, le texte peut contenir n'importe quel caractère. Si c'est un *, le texte peut contenir n'importe quelle séquence de caractères.
beginsWith: prefixe Le receveur commence-t-il par prefixe ?
ensWith: suffixe Le receveur se termine-t-il par suffixe ?
alike: uneChaine Renvoie un entier positif ou nul indiquant le degré de similarité entre le receveur et uneChaine. 0 correspond à "pas du tout similaire"; le meilleur score est uneChaine size * 2.

Méthodes pour convertir des chaînes de caractères

Message Description Notes
asLowercase Renvoie une nouvelle chaîne correspondant au receveur, mais où tous les caractères en majuscules ont été convertis en minuscules.
asUppercase Renvoie une nouvelle chaîne correspondant au receveur, mais où tous les caractères en minuscules ont été convertis en majuscules.
capitalized Renvoie une copie du receveur où le premier caractère est mis en majuscule (si c'est une lettre).
asDisplayText Renvoie une copie du receveur avec les polices par défaut et les informations de style.
asInteger Tente de convertir le receveur en entier (Integer). Renvoie l'entier le cas échéant, et nil si le receveur ne commence pas par un chiffre.
asNumber Tente de convertir le receveur en un nombre (Number). Signale une erreur si le receveur ne commence pas par un chiffre.
asDate Tente de convertir le receveur en une date, et renvoie le cas échéant une instance de la classe Date. De nombreux formats sont reconnus.

[edit] Classes et méthodes des flots de données

[edit] La hiérarchie des flots de données

Classe Description
Stream Classe abstraite pour toutes les flots (stream) de données. Ce sont des accesseurs pour des séquences d'objets.
   PositionableStream Accesseur pour une collection indexable par un entier.
      ReadStream Flot en lecture seule
      WriteStream Flot en écriture seule
         ReadWriteStream Flot sur lequel on peut lire/écrire.
            FileStream Accesseurs pour des collections dont les éléments se lisent par pages (parce qu'ils sont par exemple bien plus volumineux que la mémoire disponible).
               StandardFileStream Accesseurs pour des fichiers auquels on accède à partir d'un système de fichiers.
               CrLfFileStream Gère automatiquement les fins de lignes propres à la plateforme hôte.
   DummyStream Correspond au /dev/null des systèmes unix. Son but est d'absorber tous les messages qu'on lui envoie sans rien faire.

[edit] Classe Stream

Stream (flots de données) est une classe abstraite faisant office d'accesseur pour une séquence d'objets, appelés le contenu. On dit qu'on "avance" le long du flot lorsque celui-ci est configuré pour accéder à un des élément suivants du contenu.

[edit] Méthodes pour accéder aux flots

Message Description Notes
contents Renvoie tout le contenu du receveur.
next Renvoie le prochain objet accessible par le receveur.
next: unEntier Renvoie les unEntier prochains objets accessibles par le receveur.
next: n put: unObjet Fait en sorte que unObjet devienne les n prochains objets accessibles par le receveur. Renvoie unObjet.
nextMatchAll: uneCollection Les N prochains objets sont-ils ceux de uneCollection (dans le même ordre) ? Si oui, avance le flot de N positions. Sinon, ne change rien.
nextMatchFor: unObjet Le prochain objet accessible par le receveur est-il unObjet ? Si oui, avance le flot d'une position. Sinon, ne change rien.
nextPut: unObjet unObjet devient le premier objet accessible par le receveur. Renvoie unObjet.
nextPutAll: uneCollection Rajoute les éléments de uneCollection à la séquence d'objets accessibles par le receveur. Renvoie uneCollection.
upToEnd Renvoie une collection contenant les objets restants dans le flot.
flush S'assure que tout objet stocké dans une mémoire temporaire dans le receveur est envoyé à sa destination finale.

[edit] Méthodes pour tester les flots

Message Description Notes
atEnd Le receveur peut-il encore accéder à des objets ?

[edit] Méthodes pour énumérer les flots

Message Description Notes
do: unBloc Évalue unBloc pour tous les objets restants accessibles par le receveur.

[edit] Classe PositionableStream

Un flot positionnable est une classe abstraite pour accéder à une séquence d'objets énumérables par des indices, de façon à ce que le point d'accès puisse être repositionné. Les classes concrètes correspondantes, ReadStream, WriteStream et ReadWriteStream sont généralement utilisées pour instancier un PositionableStream sur une collection d'objets, selon le mode d'accès désiré. Les classes StandardFileStream et CrLfFileStream sont quand à elles utilisées pour instancier des flots positionnables sur des fichiers.

[edit] Méthodes pour accéder à des flots positionnables

Message Description Notes
contentsOfEntireFile Renvoie une collection contenant le restant des objets accessibles par le receveur.
last Renvoie le dernier élément du receveur.
nextDelimited: terminaison Renvoie le contenu du receveur, à partir de la position courante jusqu'au prochain caractère de terminaison. Cependant, les doubles terminaisons ne sont pas considérées comme telles et seront inclues en un seul exemplaire. 1
nextInto: tampon buffer étant un objet indexable de taille n, remplit buffer avec les n prochains objets du receveur.
nextLine Renvoie la prochaine ligne (qui peut être vide), ou nil si plus rien n'est disponible.
originalContents Renvoie le véritable contenu du receveur (contents renvoie juste une copie).
peek Renvoie le prochain objet qui serait accessible par le receveur, mais sans avancer celui-ci. Renvoie nil si le receveur est à la fin du flot.
peekFor: unObjet Renvoie false (faux) et n'avance pas au prochain élément si celui-ci est différent de unObjet, ou si le receveur est à la fin du flot. Renvoie true (vrai) et avance le flot d'une position si le prochain élément est égal à unObjet.
upTo: unObjet Renvoie une sous-collection partant de la position courante jusqu'à l'occurence de unObjet (exclue) dans le receveur. Si aucune occurence n'est trouvée, renvoie tout le restant du receveur.
upToAll: uneCollection Renvoie une sous-collection partant de la position courante jusqu'à l'occurence de uneCollection (exclue) dans le receveur. Si uneCollection n'est pas dans le flot, renvoie le restant du receveur.

Note :

  • [1] - Par exemple: "Ceci "" est un guillemet", où terminaison = $". Les deux guillemets "" seront lus comme un seul ", mais ne seront pas considérés comme une terminaison.

[edit] Messages pour tester des flots positionnables

Message Description Notes
isEmpty Le receveur est-il vide ?

[edit] Méthodes pour positionner les flots

Message Description Notes
match: uneSousCollection Positione le receveur après la prochaine occurence de uneSousCollection. Renvoie true (vrai) si une telle occurence est trouvée, false (faux) dans le cas contraire (le flot est alors épuisé). Tient compte de la casse, et n'utilise aucun caractère générique (wildcard).
padTo: nOctets put: unCaractere Remplit à l'aide de unCaractere jusqu'à la prochaine position multiple de nOctets.
padToNextLongPut: unCaractere Remplit à l'aide de unCaractere jusqu'à la prochaine position multiple de 4 (longueur d'un mot long).
position Renvoie la position courante du flot.
position: unEntier Positione la position courante à la unEntier-ième position, tant que celle-ci est à l'intérieur des bornes du contenu du receveur. Signale une erreur dans le cas contraire.
reset Replace la position courante du receveur au début de la séquence d'objets.
resetContents Place la position ainsi que la limite à zéro.
setToEnd Place la position courante à la fin de la séquence d'objets.
skip: unEntier Rajoute unEntier à la position courante. Une sous-classe peut être d'une plus grande aide en choisissant le minimum de la taille du receveur et de position + unEntier, ou le maximum de 1 et de position + unEntier pour le repositionnement.
skipTo: unObjet Positionne le receveur juste après la prochaine occurence de unObjet. Renvoie true dans ce cas. Si une telle occurence n'est pas trouvée, renvoie false et épuise tout le flot.

[edit] Classe WriteStream

[edit] Méthodes pour écrire des caractères

Message Description Notes
cr Rajoute un caractère de retour chariot (carriage return) au receveur
crtab Rajoute un caractère de retour chariot, suivit d'une unique tabulation, au receveur.
crtab: unEntier Rajoute un caractère de retour chariot, suivit de unEntier tabulations, au receveur.
space Rajoute un caractère d'espacement au receveur.
tab Rajoute une tabulation au receveur.

[edit] Exceptions compatibles ANSI

[edit] Évaluer des bloc avec des exceptions

[edit] Méthodes pour traiter les exceptions déclenchées dans un contexte de bloc (BlocContext)

Message Description Notes
ensure: unBlocDeFin Évalue unBlocDeFin après avoir évalué le receveur, quelle que soit la façon dont l'évaluation du receveur se termine.
ifCurtailed: unBlocDeFin (litérallement: si écourté) Évalue le receveur. En cas de fin anormale, évalue unBlocDeFin
on: exception do: blocTraitementException Évalue le receveur sous la garde de blocTraitementException.

[edit] Exemples

["code cible, qui peut échouer"]
    ensure:
        ["code qui sera systématiquement évalué
          après le code cible,
          quoiqu'il puisse advenir"]
["code cible, qui peut échouer"]
    ifCurtailed:
        ["code qui sera exécuté si
          et seulement si le code cible
          échoue de manière anormale"]
["code cible, qui peut échouer"]
    on: Exception
    do: [ :exception |
            "code qui sera exécuté si et seulement si 
             l'exception Exception est déclenchée"]

[edit] Classe Exception

Exception est une classe abstraite; aucune instance ne devrait être créée ou attrapée (par unBloc on: Exception do: [...]). Il y a deux sous-classes usuelles d'Exception, Error et Notification, desquelles toutes les sous-classes descendent en général. L'exécution après une erreur ne peut pas être reprise; une notification indique qu'un événement intéressant s'est produit; s'il n'est pas traité, il sera ignoré sans aucun effet.

Les exceptions ont un double but: pour définir les exceptions elles-mêmes, et pour filtrer lors du traitement des exceptions.

[edit] Méthodes pour décrire des exceptions

Message Description Notes
defaultAction L'action par défaut à prendre lorsque l'exception est signalée.
description Renvoie une description textuelle de l'exception.
isResumable Détermine si l'exécution peut reprendre après le déclenchement de l'exception.
messageText Renvoie un message textuel pour l'exception.
tag Renvoie un tag pour l'exception.

[edit] Méthodes pour signaler des exceptions

Message Description Notes
signal Déclenche l'exception correspondant au receveur.
signal: unTexte Déclenche une exception décrite par unTexte.

[edit] Méthodes pour traiter une exception signalée

Message Description Notes
isNested Détermine si le gestionnaire d'exception courant est inclus dans la portée d'un autre gestionnaire pour la même exception.
outer Évalue l'action du gestionnaire suivant pour le receveur, puis retourne.
pass Passe le contrôle au gestionnaire suivant pour le receveur.
resignalAs: exceptionAlternative Signale une exceptionAlternative à la place du receveur.
resume Reprend l'exécution après le mesage qui a signalé le receveur.
resume: valeurDeReprise Reprend l'exécution après le message qui a signalé le receveur. Celui-ci renvoie la valeur valeurDeReprise.
retry Interrompt l'exécution du gestionnaire d'exception, et ré-évalue le bloc qu'il protège.
retryUsing: blocAlternatif Interrompt l'exécution du gestionnaire d'exception, et évalue blocAlternatif à la place du bloc qu'il protège.
return Renvoie nil comme valeur du bloc protégé par le gestionnaire d'exception actif.
return: valeurDeRetour Renvoie valeurDeRetour comme valeur du bloc protégé par le gestionnaire d'exception actif.

[edit] Classe ExceptionSet

Un ensemble d'exceptions (ExceptionSet) est utilisé pour spécifier un ensemble d'exception à filtrer pour un gestionnaire d'exceptions.

[