FAQ dev IDE Squeak

From OFSET Wiki

Jump to: navigation, search

:: Espaces Squeak ::

accueil | programmer | outils et frameworks | applications Smalltalk | présenter Smalltalk | communauté | foire aux questions


Foire aux questions sur l'environnement et le mode de développement Squeak/Smalltalk. Cette FAQ est construite pas à pas en fonction des échanges sur La liste francophone Squeak-fr et la liste beginners. Vous êtes bien sûr invité et encouragé à participer à son élaboration.

[edit] Comment placer un point d'arrêt pour déboguer ?

Tout objet comprend le message #halt qui stoppe le processus en cours et lance un débogueur. On peut alors inspecter interactivement l'état du processus stoppé.

On peut aussi utiliser le message #error: avec une chaîne de caractères en argument. Ceci permet d'indiquer explicitement le pourquoi de l'arrêt car la fenêtre du débogueur a ainsi pour titre, le message passé en argument. C'est très utile pour placer des points d'arrêts qu'on ne traite pas immédiatement.

On a aussi le message #haltOnce, pour les processus récursifs. Pour l'utiliser, il faut au préalable l'autoriser avec #setHaltOnce. Regardez la catégorie debugging-haltOnce de la classe Object.

[edit] Comment programmer un constructeur ?

Il n'y a pas vraiment de constructeur en Smalltalk. Pour créer un objet, on envoi le message #new à sa classe.

Si on veut passer des argument particuliers pour directement initialiser l'objet créé, alors on ajoute une méthode de classe. On peut en programmer autant qu'on veut mais attention à ne pas en abuser, le code devient ainsi facilement moins maintenable.

Vous trouverez des exemples de telles méthodes dans la classe Date : #today, #tomorrow, #yesterday, #newDay:year:, #newDay:month:year:, #year:day:, #year:month:day:

[edit] Comment générer les accesseurs d'une classe ?

Une première solution consiste à cliquer avec le bouton droit sur une classe, puis choisir more ... dans le menu qui apparait, et enfin cliquer sur create inst var accessors. Ceci crée les accesseurs qui n'existent pas pour les variables d'instances de la classe. Attention, les modificateurs sont également créés. Une deuxième solution permet de générer de manière automatique des accesseurs. Il faut pour cela activer dans les préférences (section general), l'option autoAccessors. Si un envoi de messages n'est pas compris par un objet, on regarde s'il ne s'agit pas d'une variable d'instance. Dans ce cas la, on renvoit la valeur de la variable d'instances.

Personal tools