La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed

Présentations similaires


Présentation au sujet: "Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed"— Transcription de la présentation:

1 Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed

2 Programmation par Objets 1 Contenu Approfondissement Classes/instances, attributs, opérations Héritage, polymorphisme Exceptions Interfaces-langage Introduction Etude de certaines parties de lAPI 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 Programme = animation dun modèle réduit, reproduction des entités du monde réel Simula, Smalltalk, Flavors Montée de lengouement dans les services R&D et chez les gros industriels, développement des méthodes C++, CLOS, Eiffel, Ada9X, Object-Cobol, Smalltalk, OMT Diffusion généralisée Java, Python, C#, UML

5 Introduction - Les domaines Domaines pénétrés Systèmes dinformation 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 dun 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 dhéritage multiple, de surcharge dopérateurs, de classes paramétrées (avant Java 1.5) Et sinspirant des stratégies Smalltalk semi-compilé/semi-interprété, machine virtuelle API riche Allocation/récupération dynamique, ramasse-miettes

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

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

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

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

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

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

15 Applet programme invoqué dans un document HTML et exécuté par un navigateur (depuis HTML 4, remplace )

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 Une application = un ensemble d'objets qui ont chacun leur rôle à jouer et qui interagissent Composants graphiques fenêtre barre de menu bouton zones de texte panneau (sur lequel est affiché le jeu) Objets « métier »…

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

20 Objets « métier » --> Représentés par des classes EchiquierJeu Pièce EnsemblePieces - couleur 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

21 Les objets collaborent entre eux, chacun étant responsable des actions qu'il effectue Ex : afficher le jeu panneau jeu : "jeu, affiche-toi" 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"

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

23 Les objets sont des instances de classes Une classe est un "modèle" qui définit - la structure dun 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 Partie privée "encapsulée" attributs private : accessible seulement dans le corps des méthodes de la classe public : accessible par toute méthode de toute classe + des méthodes de « cuisine interne » Partie publique méthodes de « services offerts » Une classe ordinaire

25 La classe Piece (simplifiée) // fichier Piece.java public class Piece { // attributs private int joueur; private int lig; private int col; private int depl; // méthodes … } Deux instances de Piece

26 // méthodes private int tirage() {…} 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 corps des méthodes pour communiquer avec une instance de Piece

27 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 Ex: l'objet jeu demande à la pièce p de se déplacer en case (4,3) p.deplacer(4,3) C'est p qui modifie son propre état jeu n'a pas besoin de savoir comment p procède

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

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

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 @ new Piece(0,2,3) 3. Retourne de l'objet … … reste à récupérer cette adresse 1. Crée une instance de la classe Piece réservation d'une place en mémoire 2. Appelle un constructeur sur cet objet Initialisation de l'objet Création d'un objet

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

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 lune 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); }


Télécharger ppt "Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed"

Présentations similaires


Annonces Google