Programmation orientée objet avec Smalltalk
classes, instances, messages et héritage
Harald Wertz
iSTE
Mode d'emploi9
Avant-propos13
Première partie. Les bases de la programmation Smalltalk17
Chapitre 1. Un bref tour de Squeak19
1.1. Un premier contact22
1.2. Les points importants30
1.3. Exercices31
Chapitre 2. Un premier programme33
2.1. La définition de nouvelles classes33
2.2. La définition de nouvelles méthodes39
2.3. Test du programme47
2.4. Ajout de méthodes aux sous-classes de la classe Animal52
2.5. Modification du comportement des « Perroquets »55
2.6. Exercices62
2.7. self et super62
2.8. Exercices70
Chapitre 3. Architecture et héritage75
3.1. Architecture logicielle Smalltalk75
3.2. Héritage statique et dynamique78
Chapitre 4. Quelques éléments de la syntaxe et grammaire Squeak83
4.1. Les pseudo-variables83
4.1.1. La pseudo-variable nil83
4.1.2. Les pseudo-variables true et false84
4.1.3. Les pseudo-variables self et super88
4.1.4. Les pseudo-variable thisContext88
4.2. Commentaires et identifieurs89
4.2.1. Les commentaires89
4.2.2. Les identifieurs90
4.3. Les littéraux91
4.3.1. Les nombres91
4.3.2. Les caractères95
4.3.3. Les chaînes de caractères97
4.3.4. Les symboles101
4.3.5. Les tableaux104
4.3.5.1. Les tableaux de constantes105
4.3.5.2. Les tableaux calculés106
4.3.5.3. Digression : l'inspecteur et l'explorateur108
4.3.5.4. Retour vers les tableaux111
4.3.5.5. Les itérateurs114
4.3.6. Exercices116
4.4. Les variables120
4.4.1. Les variables temporaires121
4.4.2. Les paramètres de méthodes123
4.4.3. Les paramètres de blocs124
4.4.4. Les variables d'instance nommées127
4.4.5. Les variables d'instance indexées128
4.4.6. Les variables globales131
4.4.7. Les variables de classe133
4.4.8. Les variables de pool136
4.4.9. Exercices142
4.5. Les messages145
4.5.1. Les messages unaires145
4.5.2. Les messages binaires146
4.5.3. Les messages à mots-clés148
4.5.4. La composition de messages151
4.5.5. Les séquences d'expressions154
4.5.6. Les cascades de messages155
4.5.7. Les primitives156
4.6. Structures de contrôle161
4.6.1. Structures de contrôle conditionnelles161
4.6.2. Structures de contrôle récursives164
4.6.3. Structures de contrôle itératives169
4.6.3.1. Structures conditionnelles sur des blocs169
4.6.3.2. Structures énumératives sur des entiers175
4.6.3.3. Structures énumératives sur des collections177
4.7. Le traitement des exceptions189
4.7.1. Messages de traitement des exceptions de la classe Object189
4.7.2. Messages de traitement des exceptions pour des blocs197
4.7.3. Messages compris par les exceptions200
4.7.4. Exceptions multiples201
4.7.5. Définir ses propres exceptions204
4.8. Exercices206
Deuxième partie. La programmation Squeak213
Chapitre 5. Des dessins comme en Logo215
5.1. La classe Pen216
5.2. Quelques fractals : des dessins récursifs224
5.3. Exercices232
5.4. Une restructuration de nos programmes Logo233
5.5. Une interface utilisateur pour les dessins Logo236
5.6. Les systèmes de Lindenmayer247
5.6.1. Un premier interprète de système de Lingenmayer249
5.6.2. Activations multiples d'un même L-système257
5.6.3. Calcul de la taille du pas et de la position initiale259
5.6.4. Systèmes de Lindenmayer avec crochets266
5.6.5. Lire un L-système d'un fichier270
5.6.6. Exercices276
Chapitre 6. Les dépendances281
6.1. Les bases du mécanisme de dépendances282
6.1.1. Ajout et élimination de dépendances282
6.1.2. Les méthodes de gestion des dépendances283
6.1.3. Un premier test de l'utilisation des dépedances285
6.1.4. Un deuxième test de l'utilisation des dépendances288
6.2. Programmation d'une calculatrice301
6.2.1. Les touches301
6.2.2. La calculatrice303
6.2.2.1. Développement du modèle de la calculatrice303
6.2.2.2. Test du modèle de la calculatrice305
6.2.3. Développement d'une interface utilisateur graphique308
6.2.4. Construction de l'interface entre vues et modèles321
6.2.5. Une calculatrice infixe325
6.3. Exercices331
6.4. Une calculatrice KCalc332
6.4.1. Description de KCalc332
6.4.2. Implémentation de KCalc334
6.5. Exercices346
6.6. Remarques finales347
Troisième partie. Annexes349
Annexe A. Solutions aux exercices351
Annexe B. Liste des raccourcis clavier507
Annexe C. Précis de la syntaxe de Smalltalk511
Annexe D. Liste des primitives de Squeak513
Bibliographie519
Index525