Introduction à la programmation objet avec java

Slides:



Advertisements
Présentations similaires
Sérialisation des objets
Advertisements

Spécialisation/généralisation Héritage Polymorphisme
Introspection et Réflexion Manipulation dynamique de code Java.
Approfondissement du langage
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
F. Voisin : Introduction à Java 1 Introduction à Java - lhéritage - Frédéric VOISIN FIIFO - « Remise à Niveau »
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
POO.
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Programmation orientée objet
1 Cours JAVA / Y.Laborde Java : Les types génériques ( ) LES TYPES GENERIQUES : Introduction (diapo 2) Déclaration dun type générique (3) 1re déclaration.
Analyse et Conception orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Langage Oriente Objet Cours 4.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Mémoire de fin d’études présenté par Amine Brikci-Nigassa
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
Premier cours (23 septembre). Cours programmation- orientée objet en Java Licence dinformatique Hugues Fauconnier
IFT1025, Programmation 2 Jian-Yun Nie
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Java Héritage, interfaces.
Classes abstraites et Interfaces
Interfaces (fin) classes locales et internes, Object, clonage.
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Interfaces : comment classifier ?
DESS CCI POO-JAVA TD n°7 exercice n°1
Révision des notions OO et Java Semaine 1 Jian-Yun Nie.
Introduction au paradigme orienté-objet (suite)
Design Pattern: Decorator
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
PROGRAMMATION MULTI-TÂCHES (MULTITHREADING)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Formation Développeur Java Programmation objet avec JAVA Partie 2
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 6 Interfaces, classes imbriquées (début). Chapitre IV Interfaces, classes imbriquées, Object.
Chapitre III Héritage. POO-L3 H. Fauconnier2 Chapitre III: Héritage A) Extensions généralités Affectation et transtypage B) Méthodes Surcharge et signature.
Cours 4 Héritage (suite).
Cours 8 (18 novembre 2011) exceptions. héritagePOO-L3 H. Fauconnier2 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X();
Cours 5 Héritage, Interfaces, classes internes. POO-L3 H. Fauconnier2 La classe Object Toutes les classes héritent de la classe Object Object méthodes:
COURS DE PROGRAMMATION ORIENTEE OBJET :
Héritage Lhéritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». #include comptebancaire.h class CompteEpargne.
Structures de données IFT-2000 Abder Alikacem L’héritage en C++ Département d’informatique et de génie logiciel Édition Septembre 2009.
Héritage et composition
2.1 - Historique Chapitre 2 : Introduction au langage C++
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Java éléments de programmation. Les API essentielles java.lang : Types de bases, Threads, ClassLoader, Exception, Math,... java.util : Hashtable, Vector,
11/04/ L'héritage Cours 7 Cours 7.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Cours 91 9 Interfaces graphiques avec awt. Cours 92 Plan Introduction : deux bibliothèques graphiques 1.Comment se dessine une fenêtre ?  Un exemple.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Un peu de Design Pattern Quelques modèles pour développer vite et bien.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Le polymorphisme.
Cours du 5 novembre.
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)
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
LIFI-Java 2004 Séance du Mercredi 29 sept. Cours 4.
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
Transcription de la présentation:

Introduction à la programmation objet avec java

SOMMAIRE Héritage multiple et interface (15mn) Les Threads(60mn)

Héritage multiple et interface (1) objectif avoir une classe qui hérite de plusieurs classes Complexe et controversé (exemple en C++) Réponse avec Java : Les interfaces Une interface correspond à une classe où toutes les méthodes sont abstraites. Principe: héritage multiple de classe interdit entre classes Une interface peut hériter (extends) de plusieurs interfaces. Une classe peut implémenter (implements) une ou plusieurs interfaces tout en héritant (extends) d'une classe. Une classe qui implémente une interface doit implémenter toutes les méthodes de l’interface

Héritage multiple et interface (2) abstract class Shape { public abstract double perimeter(); } interface Drawable { public void draw(); } class Circle extends Shape implements Drawable, Serializable { public double perimeter() { return 2 * Math.PI * r ; } public void draw() {...} } class Rectangle extends Shape implements Drawable, Serializable { ... public double perimeter() { return 2 * (height + width); } Drawable[] drawables = {new Circle(2), new Rectangle(2,3), new Circle(5)}; for(int i=0; i<drawables.length; i++) drawables[i].draw();

Un Thread ? cette notion n’est pas spécifique à Java! Traduction littérale : « tâche » (ou fil d'exécution) Thread Unité d’exécution individuelle qui fonctionne en parallèle d’autres Unités d’exécutions Contrairement à un process, un thread partage l’espace mémoire avec le programme principal Parallèle ? Soit plusieurs processeurs et un OS qui gère plusieurs processeurs Dans le cas d’un seul processeur, ceci revient à faire du time sharing, temps partagé cette notion n’est pas spécifique à Java!

Les Threads en Java La création d’une thread s’effectue via l’instanciation d’une classe Thread ou de toute classe qui hérite de Thread Pour écrire ce que le thread doit faire, il faut créer une méthode run() : cette méthode est l’équivalent de main() pour un programme La méthode start() de la classe Thread permet de démarrer le code du thread. L’appel de la méthode start() retourne immédiatement (détache l’execution du run()) Une fois démarré, le thread execute le code de run() jusqu’à la sortie de la méthode.

Les Threads en Java // Attributs // Constructeurs public class MaClasseThread extends Thread / implements Runnable { // Attributs // Constructeurs public MaClasseThread ( [Arguments] ) { [Attributs] = [Arguments] ; } public void run ( ) { try { // Instructions catch (InterruptException ie) { // En cas d’interruption } // Fin de la classe

La classe java.lang.Thread (1) Cette classe représente un fil d ’execution 2 possibilités : soit hériter de Thread soit implémenter Runnable class C1 extends Thread { public C1() { this.start(); } public void run() {...} } class C2 implements Runnable public C2() {Thread t = new Thread(this); t.start(); }

La classe java.lang.Thread (2) Méthodes : void start() void stop() void suspend() void resume() static void sleep() static void yield()

Interaction entre Threads Le classique producteur/consommateur Comment être sur que 1 consomateur ne peut lire que quand le producteur à fini d ’ecrire ? Comment être sur que 2 consomateur ne lisent la même chose ? producteur Solutions: pour “locker” les ressources partagées : synchronized sections critiques wait/notify tampon consomateur consomateur

mot clef synchronised synchronized permet de synchroniser l'accès à une partie de code où à une méthode. class Compte { synchronized void ajouter(int montant) {...} synchronized void retirer(int montant) {...} } class Client implements Runnable { Banque b; public Client(Banque b) { this.b = b; Thread t = new Thread(this); t.start(); public void run() { ... b.ajouter(100); ... b.retirer(10); ...} Banque b = new Banque(); Client c1 = new Client (b); Client c2 = new Client(b); P() V() Section critique

wait/notify Chaque objet possède les méthode wait(), notify() et notifyAll() Dans une une partie synchronized d'un objet O : wait() relache le verrou et se met en attente. notify() reveille un thread en attente (fifo) notifyAll() reveille tous les threads en attente class MyThing { synchronized void waiterMethod() {...; wait(); ...} synchronized void notifyMethod() {...; notify(); ...} synchronized void anOtherMethod() {...} }