01 / 118Introduction à la Programmation par Objets avec Smalltalk
1 / 17
Télécharger la présentation
Introduction à la Programmation par Objets avec Smalltalk
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Objet • Objet = représentation informatique d'une entité du monde • Pas de fossé entre réalité et programme • Programme à base d'objet = simulation de la réalité • Exemples : • Une lampe • Un feu tricolore • Une voiture • Un nombre • Un caractère • Un tableau d'entiers • Une couleur
remplacer couleur par : vert allumer Messages avec 0, 1 ou plusieurs arguments
déclaration de variables temporaires envois de messages affectation commentaires Variables et références d'objets • Variables stockent des référencent d'objets • Les références sont analogues aux pointeurs du langage C • Affectation = obtention d'une référence sur le même objet • Exemple : | x y | "affection à x de la référence d'un objet lampe" x allumer. "la lampe s'allume" y := x. y eteindre. "la lampe s'éteint"
|x y| • Toute variable nouvellement déclarée est • initialisée avec la référence de l'objet nil. • nil ne sais répondre à quasiment aucun • message = erreur si utilisation nil
Un objet possède une mémoire • Qu'est-ce que la mémoire d'un objet ? • Une suite de variables appelées champs • Qu'est ce qui est mémorisé ? • des données = références vers d'autres objets • Qui a accès à la mémoire d'un objet ? • L'objet lui-même uniquement • Les données sont privées (Encapsulation) • Quand a lieu l'accès à la mémoire ? • Lors des traitements des messages
Traitements effectués par un objet • Traitements en réponse à un message uniquement • Méthodes : Analogie avec les fonctions • Types de traitements possibles : • Modifier le contenu de la mémoire • Lire le contenu de la mémoire • Créer de nouveaux objets • Envoyer des messages à d'autres objets • Messages envoyés lors des traitements • arguments des messages • valeurs temporaires • extraits de la mémoire de l'objet (champs)
éteindre lampe courante • déterminer lampe suivante • mémoriser nouvelle lampe courante • allumer nouvelle lampe courante allumer lampe suivante Exemple de traitements
Pseudo-Variable. Référence l'objet qui exécute le traitement Traitements en réponse au messageallumerLampeSuivante "1. éteindre la lampe courante" lampeCourante eteindre. "2. déterminer la lampe suivante (message envoyé à self)" "3. mémoriser la nouvelle lampe courante (affectation)" lampeCourante := self trouverLampeSuivante. "allumer la nouvelle lampe courante" lampeCourante allumer.
Récapitulatif sur la notion objet • Un objet possède une référence • Stockée dans les variables et les champs • Un objet possède des champs • Mémoire privée (encapsulation) • Seul l'objet peut accéder à sa propre mémoire • Les champs contiennent des références d'autres objets • Un objet sait répondre à un ensemble de messages • Réponse à message = exécution d'une méthode • Retour du résultat de l'exécution de la méthode
Objets de la même famille • Même famille = des points commun • Savent répondre au même ensemble de messages • Mêmes traitements en réponse aux mêmes message • Même structure de leur mémoires respectives • Risque de duplication des descriptions • Nécessité de factoriser pour éviter la duplication de code • Factorisation à l'aide du concept de Classe
Classe • Fabrique d'objets • Responsable de la création des objets • Les objets créés par une classe = instance de cette classe • Moule d'objets • Description de la structure mémoire de ses instances • Liste des champs (généralement nommés) • Analogie avec les structures du langage C • Description des traitements réalisés par ses instances • Méthodes : Analogie avec fonctions du langage C • Description des messages valides pour ses instances • Signatures des méthodes (nom, types…)
couleur: uneCouleur eteindre allumer estAllumee := true • couleur • estAllumee Classe Lampe Exemple de classe Déclarations des champs Définitions des méthodes | r v | r := Lampe new. r couleur: (Color red). r allumer. v := Lampe new. v couleur: (Color green). v allumer. instance de
couleur: uneCouleur canal: unCanal eteindre eteindre allumer estAllumee := true allumer "démarrer ampli" volume := … • couleur • estAllumee Classe Lampe • canal • frequence • volume Classe Radio Polymorphisme • Une lampe et une radio • savent répondre aux 2 messages : • allumer • éteindre • Mais traitements (et structures) différents • lampe et radio sont instances de 2 classes différentes
Historique • Naissance au prestigieux Xerox PARC • Un langage rôdé • première version en 1972 • bases définitives en 1980 • Premier langage à objets moderne • Utilisation industrielle • Outils de développement en équipe • (depuis les années 80) • Première version open-source en 1997
Un langage simple à apprendre - 1 • Syntaxe simple • proche du langage naturel • mots et caractères spéciaux = 1 transparent • permet de focaliser sur les concepts et la conception • Typage dynamique • pas de type à saisir • contrôle de type à l'exécution • Tous les sources sont disponibles • y compris les bibliothèques de base
Un langage simple à apprendre - 2 • Très peu de concepts • Objet, Classe, Message, Variable • Toute méthode retourne une valeur • Règles de visibilité fixes • Classes et Méthodes accessibles par tout le monde • Champs accessibles uniquement par leur propriétaire • Uniformité (sans exception) • Tout est objet • nombres, outils de dév., le compilateur, … • 1 action = 1 message • y compris la création d'objet
Un langage très puissant - 1 • Bibliothèque riche copiée • collections, streams, … • Langage ouvert (capacités réflexives) • Nombreux éléments/concepts du langage accessibles • Langage : Classe, méthode, … • Exécution : Pile d'exécution, Contrôle de type, … • Outils : Compilateur, Débugger, … • Extensible • Code éléments du langage disponible • Possibilité de le modifier/étendre
Un langage très puissant – 2Quelques outils usuels de Smalltalk • Navigation/Codage • Browsers: System, Hierarchy, Class, Category, Refactoring, … • method Implementors, Method Finder • message Senders • Débogue • Debugger • Inspector • Test Runner (SUnit) • Workspace • Gestion de code • Project • Change Set, Change Sorter • Gestion de version automatique • fileIn/fileOut, FileList • …
Syntaxe Smalltalk • Mots réservés • nil objet indéfini (valeur par défaut des champs et variables) • true, false objets booléens • self (l'objet lui-même) super (l'objet dans le contexte de la superclasse) • thisContext partie de la pile d'exécution représentant la méthode courante • Caractères réservés • := (ou) affectation • ^ (ou ) = return • | varTemp1 varTemp2 varTemp3 | • $caractère • # littéral • . termine toute expression • ; cascade de messages • ( ) précédence • [ ] bloc de code • " commentaire" • ' chaîne de caractère '
Modèle d'exécution Smalltalk • 4 fichiers fondamentaux • Machine virtuelle (.exe) • Image mémoire (.image) • changements effectués (.change) • code source des bibliothèques de base (.source) • Gestion automatique de la mémoire • Garbage collector • Tout se passe à l'exécution • Développement incrémental • Sauvegarde automatique des changements (.change) • Perte de code quasi-impossible
4 fichiers fondamentaux • Machine virtuelle (.exe) • Change suivante les plateformes (Mac, Linux, Windows, Palm) • Les autres fichiers sont portables • Fichier image mémoire (.image) • Lecture automatique + enregistrement à la demande • "Photographie" de la mémoire à l'instant de la sauvegarde • Possibilité d'avoir plusieurs fichiers images • Fichier avec le code source des changements effectués (.change) • 1 fichier .change par fichier image (même nom) • Enregistrement automatique • Sauvegarde de toutes les opérations réalisées !! • Lecture à la demande • Récupération manuelle en cas d'arrêt intempestif • Fichier sources standards • Lecture seule
Browser - 2 • Découpage logique • Catégories de classes • Catégories de méthodes • Compilation • Transparente à la volée • Incrémentale • versions des méthodes • Utilisation du menu "accept"
Exemple de création d'une classe - 2 Object subclass: #BankAccount instanceVariableNames: 'number balance' classVariableNames: 'CreatedAccounts' poolDictionaries: '' category: 'Examples'
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.