Programmation Orientée Objet



Documents pareils
Package Java.util Classe générique

Programmation par les Objets en Java

Cours 1: Java et les objets

Programmation Orientée Objet Java

Projet de programmation (IK3) : TP n 1 Correction

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Objets et Programmation. origine des langages orientés-objet

Design patterns. Design patterns - définition. Design patterns - avantages

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Programmation en Java IUT GEII (MC-II1) 1

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmer en JAVA. par Tama

Programmation Par Objets

Java 1.5 : principales nouveautés

Java Licence Professionnelle CISII,

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

Programmation avec des objets : Cours 7. Menu du jour

Corrigés des premiers exercices sur les classes

Un ordonnanceur stupide

Premiers Pas en Programmation Objet : les Classes et les Objets

LOG4430 : Architecture logicielle et conception avancée

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Auto-évaluation Programmation en Java

Chapitre V. Les classes : Object, Vector, etc.

as Architecture des Systèmes d Information

Héritage presque multiple en Java (1/2)

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

TD/TP PAC - Programmation n 3

Programmation Objet I

Gestion distribuée (par sockets) de banque en Java

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Chapitre VI- La validation de la composition.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

INITIATION AU LANGAGE JAVA

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Classe Interne, Anonyme & Enumération

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Tp 1 correction. Structures de données (IF2)

Création d objet imbriqué sous PowerShell.

Corrigé des exercices sur les références

Flux de données Lecture/Ecriture Fichiers

Chapitre 10. Les interfaces Comparable et Comparator 1

4. Groupement d objets

Programme Compte bancaire (code)

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Java c est quoi? Java pourquoi?

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Programmation Mobile Android Master CCI

Master d Informatique Corrigé du partiel novembre 2010

Programmation Objet II

Derrière toi Une machine virtuelle!

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Diagramme de classes

1 Définition d une classe en Java

Programmation par composants (1/3) Programmation par composants (2/3)

TD3: tableaux avancées, première classe et chaînes

PROGRAMMATION PAR OBJETS

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Langage Java. Classe de première SI

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Création d un service web avec NetBeans 5.5 et SJAS 9

Les classes en Python

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Synchro et Threads Java TM

Plan du cours. Historique du langage Nouveautés de Java 7

Utiliser Java sans BlueJ

Tutoriel d installation de Hibernate avec Eclipse

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

TP, première séquence d exercices.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

TP1 : Initiation à Java et Eclipse

Analyse,, Conception Objet

Programmation Orientée Objet

2. Comprendre les définitions de classes

Une introduction à Java

Problèmes liés à la concurrence

Apprendre Java en 154 minutes

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Composants Logiciels. Le modèle de composant de CORBA. Plan

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

F. Barthélemy. 17 mai 2005

Transcription:

Programmation Orientée Objet Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 21 octobre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 1 / 391

Utilisation PCOO Programation orientée objet Une méthode peut utiliser les propriétés et méthodes d une autre instance : public class Point { public int x, y ; public Point(int x, int y) { this.x = x ; this.y = y ; public double distanceto(point p) { int dx = x - p.x ; int dy = y - p.y ; return Math.sqrt(dx*dx + dy*dy); Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 104 / 391

Composition PCOO Programation orientée objet Afin d implémenter ses services, une instance peut créer des instances et conserver leurs références dans des champs : public class Circle { private Point center ; private int radius ; public Circle(int x, int y, int radius) { center = new Point(x,y); this.radius = radius ; public int getx() { return center.x ; public int gety() { return center.y ; public int getradius() { return radius ; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 105 / 391

Agrégation PCOO Programation orientée objet Une instance peut simplement posséder des références vers des instances : public class Circle { private Point center, point ; public Circle(Point center, Point point) { this.center = center ; this.point = point ; public Point getcenter() { return center ; public int getradius() { int dx = x - p.x, dy = y - p.y ; return Math.sqrt(dx*dx + dy*dy); Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 106 / 391

PCOO Programation orientée objet Agrégation et délégation Délégation du calcul de la distance à l instance center de la classe Point : public class Circle { private Point center, point ; public Circle(Point center, Point point) { this.center = center ; this.point = point ; public Point getcenter() { return center ; public int getradius() { return center.distanceto(point); Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 107 / 391

PCOO Programation orientée objet Agrégation récursive Il est possible de créer des structures récursives : public class Node { private Node[] nodes ; private String name ; public Node(Node[] nodes, String name) { this.nodes = nodes ; this.name = name ; public Node(String name) { this.nodes = new Node[0]; this.name = name ; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 108 / 391

PCOO Programation orientée objet Agrégation récursive Il est ensuite possible d implémenter des méthodes de façon récursive : public class Node { private Node[] nodes ; private String name ; /* Constructeurs du slide précédent. */ public void print() { System.out.print("["+name+"]"); for (int i = 0 ; i < nodes.length ; i++) nodes[i].print(); Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 109 / 391

PCOO Programation orientée objet Agrégation récursive Exemple d utilisation de la classe précédente : Node a = new Node("a"); Node b = new Node("b"); Node c = new Node("c"); Node d = new Node("d"); Node ab = new Node(new Node[] {a,b, "ab"); Node cd = new Node(new Node[] {c,d, "cd"); Node abcd = new Node(new Node[] {ab, cd, "abcd"); abcd.print(); Cet exemple produit la sortie suivante : [abcd][ab][a][b][cd][c][d] Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 110 / 391

PCOO Programation orientée objet Classe interne statique Il est possible de définir une classe à l intérieur d une autre : public class LinkedList { public static class Node { private String data ; private Node next ; public Node(String data, Node next) { this.data = data ; this.next = next ; Il est possible d instancier la classe interne sans qu une instance de LinkedList existe car elle est statique : LinkedList.Node node = new LinkedList.Node("a", null); Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 111 / 391

PCOO Programation orientée objet Classe interne statique Il est également possible de la rendre privée à la classe LinkedList : public class LinkedList { private static class Node { private String data ; private /*LinkedList.*/ Node next ; public Node(String data, Node next) { this.data = data ; this.next = next ; Dans ce cas, seules les méthodes de LinkedList pourront l utiliser. Notez que des méthodes statiques définies dans LinkedList peuvent également utiliser cette classe interne du fait qu elle soit statique. Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 112 / 391

PCOO Programation orientée objet Classe interne statique Exemple d implémentation de méthodes dans la classe LinkedList : public class LinkedList { /* Code de la classe interne statique Node. */ private Node first = null ; public void add(string data) { first = new Node(data, first); public void print() { Node node = first ; while (node!=null) { System.out.print("["+node.data+"]"); node = node.next ; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 113 / 391

PCOO Programation orientée objet Classe interne statique Exemple d utilisation de la classe précédente : LinkedList list = new LinkedList(); list.add("a"); list.add("b"); list.add("c"); list.print(); Cet exemple produit la sortie suivante : [c][b][a] Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 114 / 391

PCOO Programation orientée objet Classe interne statique Une classe interne statique ne peut accéder qu aux champs et méthodes statiques de la classe qui la contient : public class LinkedList { private static class Node { /* Champs et méthodes de Node. */ boolean isfirst() { return this==first ; // interdit! private Node first ; /* Autres champs et méthodes de LinkedList. */ Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 115 / 391

Classe interne PCOO Programation orientée objet En revanche, si la classe interne n est pas statique, elle peut accéder aux champs de classe qui la contient : public class LinkedList { private class Node { /* Champs et méthodes de Node. */ private boolean isfirst() { return this==first ; // autorisé! private Node first ; /* Autres champs et méthodes de LinkedList. */ Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 116 / 391

Classe interne PCOO Programation orientée objet Java insère dans l instance de Node une référence vers l instance de LinkedList qui a permis de la créer : public class LinkedList { private class Node { /* Champs et méthodes de Node. */ private boolean isfirst() { return this==/*référenceverslinkedlist.*/ first ; public void add(string data) { first = new Node(data, first); /* Autres champs et méthodes de la classe LinkedList. */ Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 117 / 391

Classe interne PCOO Programation orientée objet Il est possible d utiliser la méthode isfirst dans LinkedList : public class LinkedList { /* Code de la classe interne statique Node et champs et méthodes de la classe LinkedList. */ public void print() { Node node = first ; while (node!=null) { System.out.print("["+node.data +","+node.isfirst()+"]"); node = node.next ; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 118 / 391

Classe interne PCOO Programation orientée objet Exemple d utilisation de la classe précédente : LinkedList list = new LinkedList(); list.add("a"); list.add("b"); list.add("c"); list.print(); Cet exemple produit la sortie suivante : [c,true][b,false][a,false] Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 119 / 391

Exemple : itérateurs PCOO Programation orientée objet Nous ajoutons une classe interne afin de pouvoir parcourir la liste : public class LinkedList { /* Classe interne Node, autres champs et méthodes. */ public Iterator iterator() { return new Iterator(); public class Iterator { private Node node ; public Iterator() { node = first ; public boolean hasnext() { return node!=null ; public String next() { String data = node.data ; node = node.next ; return data ; Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 120 / 391

Exemple : itérateurs PCOO Programation orientée objet Exemple d utilisation de l itérateur : LinkedList list = new LinkedList(); list.add("a"); list.add("b"); list.add("c"); LinkedList.Iterator iterator = list.iterator(); while (iterator.hasnext()) System.out.print("["+iterator.next()+"]"); Cet exemple produit la sortie suivante : [c][b][a] Notez que la classe interne Node n est accessible que par les méthodes de LinkedList et de ses classes internes car elle est privée. Bertrand Estellon (DII AMU) Programmation Orientée Objet 21 octobre 2014 121 / 391