Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed http://www.lirmm.fr/~huchard/Enseignement/FLIN504/

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

TOUQUET Arnaud ▪ GI05 BLONDEEL Igor ▪ GM05
Spécialisation/généralisation Héritage Polymorphisme
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
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.
Exposé de Système - Informatique et Réseau
(Classes prédéfinies – API Java)
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Programmation Orientée Objet (POO)
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
Principes de programmation (suite)
Etude des Technologies du Web services
Programmation orientée objet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
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.
Réalisée par :Samira RAHALI
Langage Oriente Objet Cours 4.
Mémoire de fin d’études présenté par Amine Brikci-Nigassa
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
L’orienté objet: hier, aujourd’hui et demain
POO : Objets et classes (Rappels)
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Structures de données IFT-10541
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.
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction au paradigme orienté-objet (suite)
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Formation JAVA. Par: SILMI.S
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
CSI1502 Principes fondamentaux en conception des logiciels
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
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.
Une introduction à Java
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Travaux Pratiques Représentation des connaissances
JavaScript Nécessaire Web.
4 Introduction des objets. Les chaînes et tableaux
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Les sockets.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
La programmation par objets Principes et concepts Etude de Smalltalk.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Initiation au JavaScript
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Héritage Conception par Objet et programmation Java
Introduction au HTML Qu’est ce que le HTML ?
Transcription de la présentation:

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 Exceptions Interfaces-langage Introduction Etude de certaines parties de l’API standard Généricité paramétrique Evénements Interfaces graphiques Sérialisation

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 Sun a voulu créer un langage simple, que les programmeurs assimilent rapidement. Syntaxe dominante : C++. Donc Java emprunte beaucoup à la syntaxe C++, mais avec des simplifications (suppression de mécanismes complexes, souvent mal compris, donc sources de bugs)

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

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. Sun a voulu créer un langage simple, que les programmeurs assimilent rapidement. Syntaxe dominante : C++. Donc Java emprunte beaucoup à la syntaxe C++, mais avec des simplifications (suppression de mécanismes complexes, souvent mal compris, donc sources de bugs)

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

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

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 Sun a voulu créer un langage simple, que les programmeurs assimilent rapidement. Syntaxe dominante : C++. Donc Java emprunte beaucoup à la syntaxe C++, mais avec des simplifications (suppression de mécanismes complexes, souvent mal compris, donc sources de bugs)

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

Langages interprétés Lisp, Prolog, shell Unix, Javascript, php, ... 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 »

Et Java? Fichier source .java Fichier code machine .class compilation 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

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) Vieille idée : voir le 1er Pascal + portabilité du code compilé - exécution moins rapide (toutefois il existe des compilateurs en code natif)

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

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

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

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 Applet : ce pour quoi Java a été conçu. Application : de plus en plus utilisé Servlet : plus récent

Java en tant que langage de programmation par objets Exemple d'application : Shogun Pour commencer à voir les concepts de base de la programmation par objets, et comment ils sont mis en œuvre en Java

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) On ne se demande pas "quelle est la tâche à accomplir", comment se divise-t-elle en sous-tâches? Mais : quelles sont les entités qui entrent en jeu, entité = objet, Quel est le rôle de chaque entité? De quoi chaque entité est-elle responsable? Objets « métier »…

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

1 Jeu Echiquier Pièce 2 EnsemblePieces 8 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

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"

Ex: gérer le début de mouvement du joueur 1 Clic! sur panneau de jeu en (i,j) jeu est averti :Jeu : Echiquier (i,j) c'est quelle case? c'est (l,c) e1:EnsemblePièces as-tu une pièce en (l,c)? Donc : une application est composée d'objets qui collaborent. Ces objets, comment sont-ils définis? :Pièce pièce, es-tu en (l,c)?

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 Structure : de quoi l'objet est composé Méthodes : quelles sont les actions que l'objet peut effectuer

Partie privée "encapsulée" 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

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 … } 1 2 1 6 3 4 2 Deux instances de Piece La classe Piece (simplifiée)

// 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

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

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 C'est o2 qui exécute la méthode, pas o1 qui ne sait même pas comment o2 procède.

Mais comment crée-t-on un objet? 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?

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

2. Appelle un constructeur sur cet objet Initialisation de l'objet Création d'un objet new Piece(0,2,3) @ 2 3 4 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 3. Retourne l'adresse @ de l'objet … … reste à récupérer cette adresse

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

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; Vous êtes maintenant prêts à écrire votre première application Java

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!"); }

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