_____________________________________________________________________
CLASSES, INSTANCES, MESSAGES &
HÉRITAGE: UNE INTRODUCTION à LA
PROGRAMMATION OBJET
______________________________________________
HARALD WERTZ
DRAFT
CLASSES, INSTANCES, MESSAGES & HÉRITAGE:
UNE INTRODUCTION à LA PROGRAMMATION OBJET
HARALD WERTZ
Département Informatique
Université Paris 8
93526 Saint-Denis (France)
hw@ai.univ-paris8.fr
13 septembre 2006
Table des matières
Figures et Tableaux
Figures et Tableaux
Mode d’Emploi
Remerciements
0 Préambule
Tout est objet
Langages à objets
Les Bases de la Programmation SMALLTALK
1 Un bref tour de SQUEAK
1.1 Un premier contact
1.2 Les points importants
1.3 Exercices
2 Un premier programme
2.1 La définition de nouvelles classes
2.2 La définition de nouvelles méthodes
2.3 Test du programme
2.4 Ajout de méthodes aux sous-classes de la classe Animal
2.5 Modification du comportement des Perroquets
2.6 Exercices
2.7 self et super
2.8 Exercices
3 Architecture et Héritage
3.1 Architecture logicielle SMALLTALK
3.2 Héritage statique et dynamique
4 Quelques éléments de la syntaxe et grammaire SQUEAK
4.1 Les pseudo-variables
4.1.1 la pseudo-variable nil
4.1.2 les pseudo-variables true et false
4.1.3 les pseudo-variables self et super
4.1.4 la pseudo-variable thisContext
4.2 Commentaires et identifieurs
4.2.1 les commentaires
4.2.2 les identifieurs
4.3 Les litteraux
4.3.1 les nombres
4.3.2 les caractères
4.3.3 les chaînes de caractères
4.3.4 les symboles
4.3.5 les tableaux
4.3.6 Exercices
4.4 Les variables
4.4.1 les Variables temporaires
4.4.2 les paramètres de méthodes
4.4.3 les paramètres de blocs
4.4.4 les variables d’instance nommées
4.4.5 les variables d’instance indexées
4.4.6 les variables globales
4.4.7 les variables de classe
4.4.8 les variables de pool
4.4.9 Exercices
4.5 Les messages
4.5.1 les messages unaires
4.5.2 les messages binaires
4.5.3 les messages à mots clef
4.5.4 la composition de messages
4.5.5 les séquences d’expressions
4.5.6 les cascades de messages
4.5.7 les primitives
4.6 Structures de contrôle
4.6.1 structures de contrôle conditionnelles
4.6.2 structures de contrôle récursive
4.6.3 structures de contrôle itérative
4.7 Le traîtement des exceptions
4.7.1 messages de traitement d’exceptions de la classe Object
4.7.2 messages de traitement d’exception pour des blocs
4.7.3 les messages compris par les exceptions
4.7.4 exceptions multiples
4.7.5 définir ses propres exceptions
4.8 Exercices
La Programmation SQUEAK
5 Des dessins comme en Logo
5.1 La classe Pen
5.2 Quelques fractals: des dessins récursifs
5.3 Exercices
5.4 Une restructuration de nos programmes Logo
5.5 Une interface utilisateur pour les dessins Logo
5.6 Les Systèmes de Lindenmayer
5.6.1 Un premier interprète de systèmes de Lindenmayer
5.6.2 Activations multiples d’un même L-système
5.6.3 Calcul de la taille du pas et de la position initiale
5.6.4 Systèmes de Lindenmayer avec crochets
5.6.5 Lire un L-système d’un fichier
5.6.6 Exercices
6 Les dépendances
6.1 Les bases du mécanisme de dépendances
6.1.1 Ajout et élimination de dépendances
6.1.2 Les méthodes de gestion des dépendances
6.1.3 Un premier test de l’utilisation des dépendances
6.1.4 Un deuxième test de l’utilisation des dépendances
6.2 Programmation d’une calculatrice
6.2.1 Les touches
6.2.2 La calculatrice
6.2.3 Développement d’une interface utilisateur graphique
6.2.4 Construction de l’interface entre vues et modèles
6.2.5 Une calculatrice infixe
6.3 Exercices
6.4 Une calculatrice KCalc
6.4.1 Description de KCalc
6.4.2 Implémentation de KCalc
6.5 Exercices
Appendices
A Solutions aux Exercices
A.1 exercices de la section 1.3, page 49
A.2 exercices de la section 2.6, page 118
A.3 exercices de la section 2.8, page 135
A.4 exercices de la section 4.3.6, page 234
A.5 exercices de la section 4.4.9, page 276
A.6 exercices de la section 4.8, page 292
A.7 exercices de la section 5.3, page 357
A.8 exercices de la section 5.6.6, page 446
A.9 exercices de la section 6.3, page 523
A.10 exercices de la section 6.5, page 544
B Liste des Raccourcis Claviers
B.1 raccourcis d’edition
B.2 raccourcis de recherche
B.3 raccourcis annuler/accepter
B.4 raccourcis pour browsers, inspecteurs et explorateurs
B.5 raccourcis pour des parenthèses, crochets, accolades
B.6 raccourcis de conversion
B.7 raccourcis de saisie de code
B.8 raccourcis de mise en forme de texte
C Précis de la syntaxe de SMALLTALK
C.1 Les caractères de base
C.2 Les constantes
C.3 Les expresions
D Liste des Primitives de SQUEAK
D.1 primitives arithmétiques et logiques
D.1.1 de la classe SmallInteger
D.1.2 de la classe Number
D.1.3 de la classe LargePositiveInteger
D.1.4 de la classe Float
D.2 primitives d’accès
D.3 primitives de création d’objets
D.4 primitives d’exécution
D.5 primitives pour la gestion de processus
D.6 primitives pour les entrées/sorties
D.7 primitives de remplacement
D.8 et les autres ..
E Le programme de dessins Logo
E.1 Les méthodes d’instance de la classe Number
E.1.1 Pour dessiner un arbre un peu aléatoire
E.1.2 pour dessiner une courbe de Koch
E.1.3 pour dessiner un triangle de Sierpinski
E.1.4 pour dessiner deux polygones en même temps
E.2 Les méthodes de la classe DessinsLogo
E.2.1 la définition de la classe
E.2.2 les méthodes pour le menu
E.2.3 les méthodes pour les images
E.2.4 les méthodes d’initialisation
F Le progamme pour interpréter des L-systèmes
F.1 Les méthodes de la classe Lsystem
F.1.1 la définition de la classe
F.1.2 les méthodes pour l’initialisation
F.1.3 les méthodes pour le menu
F.1.4 les méthodes pour les actions
F.1.5 les méthodes pour lecture/écriture
F.1.6 les méthodes privées
F.2 Les méthodes de la classe StochasticLsystem
F.2.1 la définition de la classe
F.2.2 la méthode d’initialisation
F.2.3 la méthode de lecture/écriture
F.2.4 les méthodes pour les actions
G Le progamme des calculatrices KCalc
G.1 Les méthodes de la classe Calculatrice
G.1.1 la définition de la classe
G.1.2 les méthodes de classe
G.1.3 les méthodes d’initialisation
G.1.4 les méthodes de lancement
G.1.5 les méthodes des fonctionalités
G.1.6 les méthodes de updating
G.1.7 les méthodes pour l’impression
G.2 Les méthodes de la classe CalculatriceInfixe
G.2.1 la définition de la classe
G.2.2 les méthodes d’initialisation
G.2.3 les méthodes des fonctionalités
G.3 Les méthodes de la classe CalculatricePostfixe
G.3.1 la définition de la classe
G.3.2 les méthodes d’initialisation
G.3.3 les méthodes des fonctionalités
G.4 Les méthodes de la classe CalculatricePrefixe
G.4.1 la définition de la classe
G.4.2 les méthodes d’initialisation
G.4.3 les méthodes des fonctionalités
G.5 Les méthodes de la classe Touche
G.5.1 la définition de la classe
G.5.2 les méthodes d’initialisation
G.5.3 les méthodes d’accès
G.5.4 les méthodes d’activation
G.5.5 les méthodes d’impression
G.6 Les méthodes de la classe CalcButton
G.6.1 la définition de la classe
G.6.2 les méthodes d’activation
G.6.3 les méthodes d’impression
G.6.4 les méthodes de mise à jour
G.7 Les méthodes de la classe CalcButtonEtiquetteVariable
G.7.1 la définition de la classe
G.7.2 la méthode de changement d’étiquette
G.7.3 les méthodes de mise à jour
G.8 Les méthodes de la classe PluggableButtonMorph
G.9 Les méthodes de la classe BlockContext
G.10 Les méthodes de la classe SequenceableCollection
G.11 Les méthodes de la classe Number
Bibliographie
Index