Programmation Orientée Objet Java



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

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmer en JAVA. par Tama

Structurer ses données : les tableaux. Introduction à la programmation

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

as Architecture des Systèmes d Information

Cours 1: Java et les objets

Programmation Orientée Objet

Utilisation d objets : String et ArrayList

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

Programmation Orientée Objet

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Une introduction à Java

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

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

Programmation en Java IUT GEII (MC-II1) 1

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 )

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 PAR OBJETS

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

Java Licence Professionnelle CISII,

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

Généralités sur le Langage Java et éléments syntaxiques.

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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

Package Java.util Classe générique

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Corrigé des exercices sur les références

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

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

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

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

Auto-évaluation Programmation en Java

TD/TP PAC - Programmation n 3

Programmation avec des objets : Cours 7. Menu du jour

Applet pour visualiser les variables «automate» notifiées

Java c est quoi? Java pourquoi?

Traduction des Langages : Le Compilateur Micro Java

Java Licence Professionnelle CISII,

TD/TP PAC - Programmation n 3

Création d objet imbriqué sous PowerShell.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Chapitre 2. Classes et objets

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

Projet de programmation (IK3) : TP n 1 Correction

Introduction à la programmation concurrente

Introduction : les processus. Introduction : les threads. Plan

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmation Par Objets

INF 321 : mémento de la syntaxe de Java

UE C avancé cours 1: introduction et révisions

Introduction au langage C

Chapitre VI- La validation de la composition.

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Programme Compte bancaire (code)

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Initiation. àl algorithmique et à la programmation. en C

Exercices sur les interfaces

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

Langage Java. Classe de première SI

Introduction à JDBC. Accès aux bases de données en Java

Programmation Objet I

Introduction au langage Java

1 Définition d une classe en Java

4. Groupement d objets

Notions fondamentales du langage C# Version 1.0

TP1 : Initiation à Java et Eclipse

Apprendre Java en 154 minutes

Programmation Orientée Objet application au langage Java Version Novembre 2007

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

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

Introduction aux Machines Virtuelles avec VMKit

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Plateforme PAYZEN. Définition de Web-services

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

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

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

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

IRL : Simulation distribuée pour les systèmes embarqués

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

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

F. Barthélemy. 17 mai 2005

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

INITIATION AU LANGAGE JAVA

Optimisations des SGBDR. Étude de cas : MySQL

Informatique / Programmation

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Programmation par les Objets en Java

Un ordonnanceur stupide

Machines Virtuelles. et bazard autour. Rémi Forax

La JVM. La machine virtuelle Java. La JVM. La JVM

Génie Logiciel avec Ada. 4 février 2013

Définition des Webservices Ordre de paiement par . Version 1.0

Master d Informatique Corrigé du partiel novembre 2010

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Transcription:

Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 12 novembre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 1 / 171

Les types paramétrés Java Supposons que nous ayons la classe suivante : public class Stack { private Object[] stack = new Object[100]; private int size = 0 ; } public void push(object object) { stack[size] = object ; size++; } public Object pop() { size-- ; Object object = stack[size]; stack[size]=null ; // Pour le Garbage Collector. return object ; } Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 117 / 171

Types paramétrés Java Nous rencontrons le problème suivant : Stack stack = new Stack(); String string = "truc" ; stack.push(string); string = (String)stack.pop(); // Transtypage obligatoire! Nous avons également le problème suivant : Stack stack = new Stack(); Integer integer = new Integer(2); stack.push(integer); String string = (String)p.pop(); // Erreur à l'exécution Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 118 / 171

Types paramétrés Java Par conséquent, on souhaiterait pouvoir préciser le type des éléments : Stack<String> stack = new Stack<String>(); String string = "truc" ; stack.push(string); // Le paramètre doit être un String. string = p.pop(); // La méthode retourne un String. Java nous permet de définir une classe Stack qui prend en paramètre un type. Ce type paramétré va pouvoir être utilisé dans les signatures des méthodes et lors de la définition des champs de la classe. Lors de la compilation, Java va utiliser le type paramétré pour effectuer : des vérifications de type ; des transtypages automatiques ; des opérations d emballage ou de déballage de valeurs. Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 119 / 171

Classes paramétrées Java La nouvelle version de la classe Stack : public class Stack<T> { private Object[] stack = new Object[100]; private int size = 0 ; } public void push(t t) { stack[size] = t ; size++; } public T pop() { size-- ; T t = (T)stack[size]; stack[size] = null ; return t ; } Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 120 / 171

Emballage et déballage Java Les types simples ne sont pas des classes : Stack<int> stack = new Stack<int>(); // interdit! Dans ce cas, on doit utiliser la classe d emballage Integer : Stack<Integer> stack = new Stack<Integer>(); int intvalue = 2 ; Integer integer = new Integer(intValue); // emballage du int dans un Integer. stack.push(integer); integer = stack.pop(); intvalue = integer.intvalue(); // déballage du int présent dans le Integer. Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 121 / 171

Java Rappel : Les types primitifs byte entier 8 bits -128 à 127 0 short entier 16 bits -32768 à 32767 0 int entier 32 bits 2 31 à 2 31 1 0 long entier 64 bits 2 63 à 2 63 1 0 float flotant 32 bits 0.0 double flotant 64 bits 0.0 char caractère 16 bits caractères Unicode \u0000 boolean boolean 1 bit false ou true false Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 122 / 171

Java Classes d emballage Les classes d emballage : Byte public Byte(byte b) Short public Short(short s) Integer public Integer(int i) Long public Long(long l) Float public Float(float f) Double public Double(double d) Boolean public Boolean(boolean b) Character public Character(char c) Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 123 / 171

Java Emballage et déballage automatique Depuis Java 5, il existe l emballage et le déballage automatique : Stack<Integer> stack = new Stack<Integer>(); int intvalue = 2 ; stack.push(intvalue); // emballage automatique du int dans un Integer. intvalue = stack.pop(); // déballage automatique du int. Attention : il est important de noter que des allocations sont effectuées lors des emballages sans que des new soient présents dans le code. Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 124 / 171

Structures de données Java Des interfaces : Java Collection<V> : Groupe d éléments List<V> : Liste d éléments ordonnés et accessibles via leur indice Set<V> : Ensemble d éléments uniques Queue<V> : Une file d éléments (FIFO) Deque<V> : Une file à deux bouts (FIFO-LIFO) Map<K,V> : Ensemble de couples clé-valeur. Il est préférable d utiliser les interfaces pour typer les variables : List<Integer> list = new ArrayList<Integer>(); /* code qui utilise list. */ car on peut changer la structure de données facilement : List<Integer> list = new LinkedList<Integer>(); /* code qui utilise list et qui n'a pas à être modifié. */ Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 125 / 171

Java Structures de données Java Implémentations de List<V> : ArrayList<V> : Tableau dont la taille varie dynamiquement. LinkedList<V> : Liste chaînée. Stack<V> : Pile (mais une implémentation de Deque est préférable). Implémentations de Map<K,V> : HashMap : Table de hachage. LinkedHashMap : Table de hachage + listes chainées. TreeMap : Arbre rouge-noir (éléments comparables). Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 126 / 171

Java Structures de données Java Implémentations de Set<V> : HashSet<V> : Avec une HashMap. LinkedHashSet<V> : Avec une LinkedHashMap. TreeSet<V> : Avec une TreeMap. Implémentations de Deque<V> : ArrayDeque<V> : Avec un tableau dynamique. LinkedList<V> : Avec une liste chaînée. Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre 2014 127 / 171