1 / 35

Programmation par Objets 1 Contenu

Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed http://www.lirmm.fr/~huchard/Enseignement/FLIN504/. Programmation par Objets 1 Contenu. Approfondissement Classes/instances, attributs, opérations Héritage, polymorphisme Introduction

zack
Download Presentation

Programmation par Objets 1 Contenu

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. Programmation par Objets 1Module IN504Animé par :Marianne HuchardMarie-Laure MugnierKhalil Ben Mohamedhttp://www.lirmm.fr/~huchard/Enseignement/FLIN504/

  2. Programmation par Objets 1Contenu Approfondissement Classes/instances, attributs, opérations Héritage, polymorphisme Introduction Exceptions Interfaces-langage Etude de certaines parties de l’API standard Généricité paramétrique Evénements Interfaces graphiques Sérialisation

  3. Introduction - Les principes • Une vision centrée sur une représentation des concepts • du domaine métier (entreprise, client) • du problème (livraison, facture) • de la solution informatique (liste, pile, menu, bouton) • Le concept encapsule données et fonctions

  4. Introduction - Bref historique 1965-1980 Programme = animation d’un modèle réduit, reproduction des entités du monde réel Simula, Smalltalk, Flavors 1980-1990 Montée de l’engouement dans les services R&D et chez les gros industriels, développement des méthodes C++, CLOS, Eiffel, Ada9X, Object-Cobol, Smalltalk, OMT 1990-2010 Diffusion généralisée Java, Python, C#, UML

  5. Introduction - Les domaines Domaines pénétrés • Systèmes d’information • Bases de données (objet-relationnel) • Intelligence Artificielle • Programmation • standard, distribuée, concurrente, interface graphiques, scientifique, etc.

  6. Introduction - Les principes L’équation de la programmation par objets Objets Messages Héritage Programme = objets + envoi de messages

  7. Introduction - Les bénéfices • Réutilisabilité • briques bien délimitées, généralisation encouragée • Extensibilité • par spécialisation • Stabilité • les concepts d’un domaine sont plus stables que les fonctions • Passage à l’échelle • structuration modulaire

  8. Introduction - A propos de Java Sun, fin 1995 • Une allure C++ … • syntaxe, constructeurs, classes paramétrée (Java 1.5) • Mais un langage simplifié • pas d’héritage multiple, de surcharge d’opérateurs, de classes paramétrées (avant Java 1.5) • Et s’inspirant des stratégies Smalltalk • semi-compilé/semi-interprété, machine virtuelle • API riche • Allocation/récupération dynamique, ramasse-miettes

  9. Édition de liens Fichier exécutable exécution Pascal, ADA, C, C++, ... Langages compilés Autres fichiers compilés (bibliothèques …) Fichier source Fichier code machine compilation code machine lié à l’architecture de la machine

  10. Lisp, Prolog, shell Unix, Javascript, php, ... Langages interprétés Autres fichiers sources chargés à la demande Fichier source Exécution par un interpréteur Interprétation : traduction du code source en code machine « à la volée »

  11. .java .class Fichier code machine Fichier source compilation Et Java? exécution Interprétation du pseudo-code pseudo-code Byte-code par une "machine virtuelle" Pseudo-code : code pour une machine abstraite possède des fonctionnalités communes à toutes les architectures

  12. Pré-compilation en un code universel (pseudo-codeoubyte-code)doncindépendant de toute architecture • Puisinterprétation par une machine virtuelle (propre à chaque architecture de machine) Vieille idée : voir le 1er Pascal + portabilité du code compilé - exécution moins rapide (toutefois il existe des compilateurs en code natif)

  13. A propos de java Sun, fin 1995 C++ nettoyé semi-interprété pour des applications distribuées (sur Internet notamment)

  14. Le succès de Java a d'abord été lié au web Serveur Client Intro.html? 1 Navigateur Serveur web 2 Intro.html 3 Visualisation du document

  15. Applet programme invoqué dans un document HTML et exécuté par un navigateur <OBJECTclassid="http://www.ici.fr/monApp.class"> </OBJECT> (depuis HTML 4, <OBJECT> remplace <APPLET>)

  16. Trois sortes de programmes Java • Applet :programme invoqué dans un • document HTML et exécuté par un navigateur • Application : programme "classique" • Servlet • programme invoqué par un serveur web et exécuté sur la machine du serveur

  17. Java en tant que langage de programmation par objets Exemple d'application : Shogun

  18. barre de menu bouton zones de texte panneau (sur lequel est affiché le jeu) Uneapplication = un ensemble d'objets qui ont chacun leur rôle à jouer et qui interagissent Composants graphiques fenêtre Objets « métier »…

  19. jeu gère une partie ensemble de pièces 1 pièces ensemble de pièces 2 pièces Objets « métier » : échiquier gère la "grille" elle même une pièce gère sa position sur l'échiquierelle sait se déplacer et s'afficher

  20. Objets « métier » --> Représentés par des classes 1 Jeu Echiquier Pièce -joueur:int-lig:int-col:int-depl:int +Piece(int j, int l, int c)-tirage():int+quelDeplacement():int+deplacer(nouvL:int,nouvC:int) +afficher(…)+toString():String 2 EnsemblePieces - couleur 8

  21. jeu : "echiquier, affiche-toi" "ens. pièces 1, affiche-toi" "ens. pièces 2, affiche-toi" ens. pièces 1 : à chaque pièce : "pièce, affiche-toi" ens. pièces 2 : à chaque pièce : "pièce, affiche-toi" Les objets collaborent entre eux, chacun étant responsable des actions qu'il effectue Ex : afficher le jeu panneau jeu : "jeu, affiche-toi"

  22. :Jeu : Echiquier (i,j) c'est quelle case? c'est (l,c) e1:EnsemblePièces as-tu une pièce en (l,c)? pièce, es-tu en (l,c)? Ex: gérer le début de mouvement du joueur 1 Clic! sur panneau de jeu en (i,j) jeu est averti :Pièce

  23. Les objets sont des instances de classes Une classe est un "modèle" qui définit -la structure d’un objet(ses attributs)- et son comportement(ses méthodes) La structure des objets est (+ ou -) encapsulée,ainsi que certaines de leurs méthodes

  24. Une classe ordinaire Partie privée "encapsulée" attributs + des méthodes de « cuisine interne » Partie publique méthodes de « services offerts » private: accessible seulement dans le corps des méthodes de la classe public: accessible par toute méthode de toute classe

  25. // fichier Piece.java public class Piece { // attributs private int joueur; private int lig; private int col; private int depl; // méthodes … } 0 1 2 1 6 3 4 2 Deux instancesde Piece La classe Piece (simplifiée)

  26. // méthodesprivateinttirage() {…} public Piece(int j, int l, int c) {…} public int quelDeplacement() {…} public void deplacer(int nouvL,int nouvC) {…} public void afficher(…) {…} public String toString() {…} }// fin classe Pas besoin de connaître le corpsdes méthodes pour communiqueravec une instance de Piece

  27. Ex: l'objet jeu demande à la pièce p de se déplacer en case (4,3) p.deplacer(4,3) jeu n'a pas besoin de savoir comment p procède D'ailleurs, jeu n'a pas le droit de modifier directement p : p.lig = 4; p.col = 3; car col et lig sont encapsulés C'est p qui modifie son propre état

  28. On dit que les objets communiquent par envoi de message : p.deplacer(4,3) jeu envoie à p le message "deplacer(4,3)" jeu est l’expéditeur du message p est le receveur du message

  29. public Piece(int j, int l, int c) {joueur = j; lig = l; col = c; depl = tirage();} Constructeur : méthode qui sert à initialiser automatiquement un objet lors de sa création Intérêt : éviter les oublis d'initialisation Mais comment crée-t-on un objet?

  30. Commençons par savoir nommer les objets Il existe des variables appelées références, qui servent à désigner des objets Piece p1; // déclaration d'une référence Piece p1 = null; // déclaration + initialisation

  31. @ 0 2 3 4 Création d'un objet new Piece(0,2,3) 1. Crée une instancede la classe Pieceréservation d'une place en mémoire 2. Appelle un constructeur sur cet objetInitialisation de l'objet 3. Retourne l'adresse @ de l'objet … … reste à récupérer cette adresse

  32. @ 0 2 3 2 Piece p; p = new Piece (0,2,3); @ p

  33. Objets et références ne sont pas liés "à vie" Un objet peut avoir plusieurs noms, aucun nom, ou changer de nom Piece p1 = new Piece (0,2,3); Piece p2 = p1; p1 = new Piece(0,1,1); p2 = null;

  34. Structure d'une application Java • un ensemble de classes, dont l’une comporte une méthode main public class Hello { public static void main (String args[]) { System.out.println("Bonjour, monde!"); } }

  35. public class MonAppliTest { public static void main (String args[]) { Piece p = new Piece(0,1,1); String etat = p.toString(); System.out.println("état de p :" + etat); int d = p.quelDeplacement(); p.deplace(1+d,1); etat = p.toString(); System.out.println("état de p :"+ etat); } }

More Related