1 / 118

Introduction à la Programmation par Objets avec Smalltalk

Introduction à la Programmation par Objets avec Smalltalk. Noury Bouraqadi http://csl.ensm-douai.fr/noury Option ISIC – 1ère année Ecole des Mines de Douai. Concepts fondamentaux. Objet Encapsulation Messages Polymorphisme Identité / égalité Classes Instances

cahil
Download Presentation

Introduction à la Programmation par Objets avec Smalltalk

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction à laProgrammation par Objetsavec Smalltalk Noury Bouraqadi http://csl.ensm-douai.fr/noury Option ISIC – 1ère année Ecole des Mines de Douai

  2. Concepts fondamentaux • Objet • Encapsulation • Messages • Polymorphisme • Identité / égalité • Classes • Instances • Création et initialisation d'objets • Champs • Méthodes • Héritage • Sous-classe / Super-classe • Redéfinition • Liaison dynamique • Exceptions

  3. Concepts fondamentauxavec le langageSmalltalk

  4. 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

  5. L'ensemble des message acceptés par un objet est fini Utiliser un objet = lui envoyer un message 1) Message 2) Traitement 3) Résultat

  6. allumer l'heure? éteindre Exemple de messages

  7. remplacer couleur par : vert allumer Messages avec 0, 1 ou plusieurs arguments

  8. 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"

  9. |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

  10. "affectation à x de la référence d'un objet lampe" nil

  11. allumer x allumer nil

  12. y := x

  13. éteindre y éteindre

  14. éteindre y éteindre

  15. 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

  16. remplacer couleur par : vert Accès à la mémoire d'un objet

  17. remplacer couleur par : vert Accès à la mémoire d'un objet

  18. remplacer couleur par : vert OK Accès à la mémoire d'un objet

  19. couleur ? vert Accès à la mémoire d'un objet

  20. 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)

  21. allumer lampe suivante Exemple de traitements

  22. éteindre lampe courante • déterminer lampe suivante • mémoriser nouvelle lampe courante • allumer nouvelle lampe courante allumer lampe suivante Exemple de traitements

  23. 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.

  24. allumer lampe suivante éteindre lampeCourante eteindre

  25. allumer lampe suivante éteindre lampeCourante eteindre

  26. allumer lampe suivante self trouverLampeSuivante trouver lampe suivante

  27. allumer lampe suivante lampeCourante := self trouverLampeSuivante

  28. allumer lampe suivante allumer lampeCourante allumer

  29. allumer lampe suivante allumer lampeCourante allumer

  30. 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

  31. 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

  32. 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…)

  33. 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

  34. 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

  35. Premiers pas en SmalltalkIllustration avec Squeak (Un Smalltalk libre) "Smalltalk is dangerous. It is a drug. My advice to you would be don't try it. It could ruin your life." Andy Bower

  36. 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

  37. 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

  38. 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

  39. 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

  40. 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 • …

  41. 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 '

  42. 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

  43. 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

  44. Squeak 3.6 au premier démarrage

  45. Accès aux outils

  46. Menu "World"

  47. Browser - 1

  48. 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"

  49. 2 1 3 Exemple de création d'une classe - 1

  50. Exemple de création d'une classe - 2 Object subclass: #BankAccount instanceVariableNames: 'number balance' classVariableNames: 'CreatedAccounts' poolDictionaries: '' category: 'Examples'

More Related