CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.

Slides:



Advertisements
Présentations similaires
Cours n° 1 Introduction à la programmation
Advertisements

Premier programme en C :
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Algorithmique Résume.
C.
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Introduction : Compilation et Traduction
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Les bases de l’Algorithmique
Principes de programmation (suite)
La programmation Orienté Objet
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Initiation à la programmation et algorithmique
Introduction à l’algorithmique
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Démarche de résolution de problèmes
Chapitre 7: Les polynômes
Principes de programmation (suite)
Algorithmique et Programmation
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Programmation multimédia 3
Introduction à la programmation (Java)
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Standard Template Library
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Sensibilisation a la modelisation
JavaScript Nécessaire Web.
Cours Architecture des Systèmes Informatiques
Cours 1 1 Java. Cours 1 2 Plan général 1.Introduction 2.Les types primitifs, évaluation d’expressions 3.Instructions for, if…. 4.Introduction de l’objet,
Algorithmes et Programmation
Un survol du language C.
 Syntaxe du langage PHP
Module I3 algorithmique et programmation
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Réaliser par: Sadok Amel Cheboui hassiba
Le langage Racket (Lisp)
Introduction au langage C Fonctions et Procédures
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Cours LCS N°4 Présenté par Mr: LALLALI
Chapitre III Introduction aux objets et aux classes.
La programmation par objets Principes et concepts Etude de Smalltalk.
Le diagramme de composants
Hiver 2004SEG2501 Chapître 41 Chapître 4 SDL – structure d’un système et son comportement.
La programmation par objets
Introduction à la Programmation Orientée Objet
Scripts et fonctions Instructions de contrôle
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Initiation aux bases de données et à la programmation événementielle
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Introduction au langage C
LES CLASSES ET LES OBJETS
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk

2 Un exemple Un example en SmallTalk pour additioner les elements d’un tableau. Afin de bien comprendre le code, son equivalent est donne en Pascal (voir les notes additionelles)

3 Generalites I SmallTalk est le langage de programmation orientee objet le plus pur. Toutes les entites du langage sont des objets. Meme, par exemple, l’entier 2. Les objets ont une memoire locale, la possibilite d’effectuer des operations, la possibilite de communiquer avec d’autres objets en echangeant des messages, et la possibilite d’heriter d’autres objets. A l’encontre de C++ et Java, SmallTalk n’est pas un langage hybride: il ne ressemble pas a un langage imperatif.

4 Generalites II SmallTalk est un langage orthogonal: il a 5 concepts de base: objet, message, classe, instance et methode. SmallTalk n’est pas qu’un langage: c’est aussi un environement, avec un editeur de programme, un compilateur, les elements habituels d’un systeme d’exploitation et une machine virtuelle. Le tout dans un meme systeme. L’interface avec ce systeme est un interface graphique. L’environement de SmallTalk est ecrit entierement en SmallTalk et est modifiable par l’usager.

5 Objets Un objet a une memoire privee et un ensemble d’operations publiques. Examples d’objets: nombres, chaines de caracteres, dictionnaires, rectangles, fichiers, editeurs de textes, etc… [Tous des composantes du systeme SmallTalk]. Par example, un rectangle est un objet avec deux donnees privees: les points aux coins opposes. Example d’operations du rectangle: on peut demander a un rectangle de trouver la location de son centre, ou de se deplacer.

6 Messages Un message demande a un objet d’effectuer une operation: Le message dit quelle operation Le receveur dit comment l’effectuer. L’ensemble des motifs de messages d’un objet constitue son interface avec le reste du systeme. Il est utile de definir un ensemble d’operations exhaustifs avec chaque objet qui serait re-utilisable dans d’autres programmes. Ainsi, on peut construire un librairie d’objets et d’operations associees a ces objets.

7 Classes Une classe est un ensemble d’objets d’un certain type. Chaque objet represente une instance de cette classe. Chaque objet doit etre une instance de classe. En fait, chaque classe est elle-meme une instance de classe, qu’on appelle une superclasse.

8 Quelques Remarques sur les Objets, Messages et Classes Les messages sont publics. Les variables d’instances d’un objet sont sa memoire privee. Elles represente l’etat (state) d’une instance. La valeur d’une variable d’instance est aussi un objet qui ne peut etre accede par un autre objet que par une operation. Par example, un rectangle ne peut pas voir les coordinees de ses Points (qui sont representes par des variables d’instances). Il doit demander a un point de retourner ses coordinees.

9 Methodes Les methodes decrivent comment effectuer des operations. Par example, afin de trouver son centre, un rectangle pourrait: 1.Demander a ses Points de produire leurs coordonnees. 2.Initier les calculs du centre (en demandant aux entiers de les effectuer) 3.Demander a la classe des Points de produire un nouveau Point a partir des coordinees justes calculees  Les methodes sont en correspondence directe avec les messages. Les methodes “built-in” ne peuvent pas etre changees.

10 Expressions Constantes Literales: nombres: 1951, caracteres: $a, $Z, chaines: ‘ami’, symboles: #bill, tableaux de literals: #( ) ou #($a $e $i $o $u $y) Variables: les variables n’ont pas de types. Elles representent des objets et permettent d’acceder a ces objets. Affectations: quantity <- 17 centre <- aPoint x:xCoord y: yCoord Pseudo-Variables: Elles referent aux objets. Elles ne peuvent pas etre le resultat d’une affectation. Certaines ne changent jamais: nil, true, false; alors que d’autres referrent a l’objet lui-meme (dans ses propres methodes) et a sa superclasse: self, super.

11 Messages Les messages peuvent etre des messages unitaires, binaires ou a mots-cles. Un message decrit une operation en specifiant: le receveur, le(s) selecteur(s), le(s) argument(s). La precedence des messages est: unitaire > binaire > mots-cles et de gauche a droite dans chaque groupe. Le receveur renvoie toujours un objet qui peut etre affecte a une variable.

12 Controle I: Blocs Un bloc est une sequence d’actions diferee (non evaluee). Voici sa syntaxe: [ action1. Action2. … actionN ] Un bloc est un objet (comme toutes les entites de SmallTalk) et peut donc etre affecte a une variable. Il n’est execute que sur demande, en envoyant le message “value”. Les blocs sont toujours executes dans le contexte de leur definition, meme lorsqu’ils sont envoyes comme parametres a un autre objet. Dans ce sens ils sont proche des parametres pass-by-name de l’Algol 60.

13 Controle II: Conditions Execution conditionnelle: N odd ifTrue: [parity <- 1] ifFalse: [parity <- 0] ou parity <- N odd ifTrue: [1] ifFalse: [0] ou parity <- N odd ifFalse: [0] ifTrue: [1]  Operation conditionelle a une branche: cond ifTrue: bloc ce qui est equivalent a: cond ifTrue: bloc ifFalse: []

14 Controle III: Iterations Repetition Comptee: 4 timesRepeat: [indx <- indx +1] Boucle Conditionnelle: [indx <= high] whileTrue: [array1 at: indx put 0. indx <- indx +1]  Arguments en blocs (iterateurs):  sum <- 0. #( ) do: [:prime | sum <- sum + (prime * prime)]  #( ) collect: [:prime | prime * prime]

15 Descriptions de Classes La description du protocole liste tous les messages. La description de l’implementation liste toutes les methodes. Les deux declarations peuvent toujours etre editees en se servant du browser du systeme. Voir example de class FinancialHistory

16 Variables Les variables n’ont pas de type. Elles n’ont qu’un nom. Il y a plusieurs genres de variables: Les variables d’instances: sont les donnees privees d’un objet. Ce peuvent etres aussi des collections (i.e., des variables d’instance indexees). Les variables temporaires: apparaissent dans les methodes. Les variables de classe: sont partagees par tous les objets d’une classe Les variables globales: sont partagees par tous les objets Les variables regroupees (pool variables): sont partagees par les elements d’ un sous-ensemble de toutes les variables.

17 Sous-Classes Les classes de SmallTalk sont organisees dans une hierarchie stricte. Il y a de l’heritage d’une superclass a une sous- classe ainsi que de la derogation (overriding): Le nom d’une sous-classe doit etre nouveau Des variables peuvent etre ajoutees Des methodes peuvent etre ajoutees Des methodes peuvent deroger des methodes definient dans la superclasse.

18 Recherche de la methode appelee La hierarchie des classes est remontee jusqu’a ce que la methode correspondante soit trouvee ou que la classe objet soit atteinte. Si une methode correspondante n’est pas trouvee, le systeme retourne une erreur. Si une methode contient un message addresse a “self”, la recherche commence dans la classe de l’instance quelque soit la location de la methode. Si une methode contient un message addresse a “super”, la recherche commence dans ma superclasse de la class contenant la methode.