Java, les objets : tout de suite ! Rassembler, grouper les objets

Slides:



Advertisements
Présentations similaires
[number 1-100].
Advertisements

1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Cours n° 6 Standard Template Library I.
Portée des variables VBA & Excel
Le mécanisme des exceptions
Classe : …………… Nom : …………………………………… Date : ………………..
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
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.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Approfondissement du langage
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Algorithme et structure de données
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
JAV - TD 6 Structures de données JAVA
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Algorithme et programmation
Principes de programmation (suite)
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Classes locales classes définies à l'intérieur d'un bloc de code,
Structures collectives en Java
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
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.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
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.
Les collections d'objets
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Classes abstraites et Interfaces
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
La Saint-Valentin Par Matt Maxwell.
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.
Une nouvelle structure de données : les tableaux
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Rappels Java.
Notre calendrier français MARS 2014
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Chapitre 9 Les sous-programmes.
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI 1502 Principes fondamentaux de conception de logiciels
Proxy et plus Cnam Paris jean-michel Douin, douin au cnam point fr
C'est pour bientôt.....
Veuillez trouver ci-joint
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Structures des données
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Objectifs À la fin de ce cours, vous serez capables de :
CALENDRIER-PLAYBOY 2020.
4 Introduction des objets. Les chaînes et tableaux
LES PILES ET FILES.
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
Les Chiffres Prêts?
11/04/ L'héritage Cours 7 Cours 7.
Cours 7 Classes locales Clonage Divers: tableaux.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Transcription de la présentation:

Java, les objets : tout de suite ! Rassembler, grouper les objets Cnam Paris jean-michel Douin, douin@cnam.fr Version du 26 janvier 2003 Notes de cours associées au chapitre 4 tutorial BlueJ http://www.bluej.org/doc/documentation.html Ce support accompagne, référence le livre de David J. Barnes & Michael Kölling Objects First with Java A Practical Introduction using BlueJ Pearson Education, 2003 ISBN 0-13-044929-6.

Sommaire Collections et itérateurs Collections (de taille variable,extensible selon les besoins) ArrayList TreeSet ... Parcours Boucle tant que, Iterateurs, Tableaux (ou collections de taille fixe) boucle for,

Les collections pourquoi ? Organisation des données Listes, tables, sacs, arbres, … Données par centaines, milliers, millions ? Quel choix ? En fonction de quels critères ? Performance en temps d’exécution lors de l’insertion, en lecture, en cas de modification ? Performance en occupation mémoire Implémentations pré définies ? Parcours de ces structures ?

ArrayList : Une collection toute prête La classe ArrayList du paquet java.util constructeur ArrayList() Constructs an empty list with an initial capacity of ten. ... méthodes boolean add(Object o); Appends the specified element to the end of this list. Object get(index i); Returns the element at the specified position in this list. int size(); Returns the number of elements in this list.

Documentation et tests unitaires Java API item Java Class Libraries Tutorial item BlueJ Tutorial Tests unitaires tutorial page 29, chapitre 9.6

ArrayList : un schéma 1 2 3 4 Véhicule v = new Véhicule("FJR"); Véhicule v1 = new Véhicule("majestic"); ArrayList liste = new ArrayList(); liste.add(v); liste.add(v1); v: Véhicule 1 2 3 4 v v1 v1: Véhicule

ArrayList, une instance avec BlueJ [0] = v, référence vers FJR [1] = v1, référence vers majestic

Tout est donc Object ? boolean add(Object o); // de la classe ArrayList Avec liste.add(v); // Véhicule v Véhicule Compteur PolygoneRégulier

Tout est bien Object ! Object Véhicule Compteur v c Object o … PolygoneRégulier Object o … o = v; // ? o = c; // ? o = p; // ? p = o; // ? p

Diagramme de classes

Un exemple d ’affectation Object o = new Object(); Véhicule v = new Véhicule(" majestic ",0.1); o = v; System.out.println("  object o : " + o.toString()); Compteur c = new Compteur(); o = c; System.out.println("  object o : "   + c.toString());

Sélection de la bonne méthode type déclaré et type constaté Object o = new Object(); Compteur c = new Compteur(); o = c; o est de type déclaré Object, o est de type constaté Compteur Ce sera la méthode toString de la classe Compteur qui sera exécutée

Changement de type implicite / explicite, instanceof boolean add(Object o); // classe ArrayList liste.add(v); // implicite : // v est recopié dans o (o = v;) Object get(int index); // classe ArrayList Véhicule v1; v1 = liste.get(1); // erreur de syntaxe ! v1 = (Véhicule) liste.get(1); Object o = liste.get(1); If (o instanceof Véhicule) v1 = (Véhicule)o;

Un exemple : Une collection de véhicules import java.util.ArrayList; public class CollectionDeVéhicules{ private ArrayList liste; public CollectionDeVéhicules(){ liste = new ArrayList(); }

Notre exemple : Une collection de véhicules import java.util.ArrayList; public class CollectionDeVéhicules{ private ArrayList liste; public CollectionDeVéhicules(){ liste = new ArrayList(); } public void ajouter(Véhicule v){ liste.add(v); public int nombreDeVéhicules(){ return liste.size(); public void afficherTousLesVéhicules(){ ...

import java.util.ArrayList; usage de librairies standard du j2se, premières instructions du programme Java documentation de Sun (item Java Class Librairies) tutorial paragraphe 9.6, page 29

ma modeste collection CollectionDeVéhicules maCollection = new CollectionDeVéhicules(); Véhicule v = new Véhicule("TERROT 500",0.05); v.faireLePlein();v.rouler(50.500); maCollection.ajouter(v); v = new Véhicule("FJR 1300",0.075); v.faireLePlein();v.rouler(24.75); v = new Véhicule("Bonnevile 650",0.06); v.faireLePlein();v.rouler(36.75); maCollection.afficherTousLesVéhicules();

Itération : while public void afficherTousLesVéhicules(){ int index = 0; while( index < nombreDeVéhicules()){ System.out.println(liste.get(index)); index++; } maCollection.afficherTousLesVéhicules(); Quel affichage et pourquoi ?

Affichage de ma collection Type déclaré et type constaté

Itération : Itérateur, Iterator public void afficherTousLesVéhicules(){ Iterator it = liste.iterator(); while( it.hasNext()){ System.out.println(it.next()); } Même affichage et parce que ! type constaté et type déclaré

Le même affichage ! Type déclaré et type constaté

Grouper, rassembler Les tableaux en Java ou les collections de taille fixe int [] tpRendus = new int[8]; 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 tpRendus[0] = 12; tpRendus[1] = 13; tpRendus[2] = 25; tpRendus[3] = 38; 12 13 25 38 0 0 0 0 0 1 2 3 4 5 6 7

Type structuré : tableau Déclarations de tableaux int[] mois; // mois est affecté à null .... ou int[] mois = new int[12]; ou int[] mois={31,28,31,30,31,30,31,31,30,31,30,31}; Déclarations de tableaux à plusieurs dimensions double [][] m= new double [4][4]; Accès aux éléments le premier élément est indexé en 0 vérification à l'exécution des bornes, erreur signalées (levée d'exception) En paramètre la variable de type tableau est une référence, le passage par valeur de Java ne peut que transmettre la référence sur le tableau 2 syntaxes autorisées : int mois[] ou int[] mois; la seconde est préférée !, la première est devenue ancestrale ...

Les tableaux, structure Un tableau d’entiers int[] poids = new int[12]; un tableau de véhicules Véhicule[] liste = new Véhicule[8]; liste[4] = v; null null null null null null null 0 1 2 3 4 5 6 7 v

Passage de paramètres par valeur uniquement static void trier(int[] tab){ tab[0] = 8; // --> t[0] == 8; int[] t = {2,4,3,1,5}; trier(t); Appel de trier(t); Un extrait de la pile d’exécution tab t t t[4] t[3] t[2] t[1] t[0] 5 1 3 4 2

Itération : la boucle for for (initialisation; terminaison; itération) instructions; <==> * initialisation; while (terminaison){ itération; } * il ya des exceptions …

Itération : la boucle for, exemples Itération, for( initialisation; terminaison; itération) int[] table = new int[25]; for(int i = 0; i < table.length; i++){ table[i] = -1; } Véhicule[] parc = new Véhicule[10]; // affectation des éléments for(int i = 0; i < parc.length; i++){ System.out.println(parc[i]); // ou parc[i].toString();

En cas de dépassement, …

Mais tout est encore Object ? Les collections Object o = new Object(); ArrayList liste = new ArrayList(); o = liste; System.out.println(o); Et les Tableaux ? Object o; int[] table = new int[25]; o = table; ???

Le toString() encore lui collections . toString(); public class CollectionDeVéhicules{ private ArrayList liste; public String toString(){ return liste.toString(); } Mais … il ne fonctionne pas sur les tableaux

de Tableaux en Collections La classe java.util.Arrays, la méthode asList import java.util.Arrays; …… public class CollectionDeVéhicules{ private ArrayList liste; /** ajouter à la collection tous les véhicules * de la table */ public void ajouter(Véhicule[] table){ liste.addAll(Arrays.asList(table)); }

De Collections en Tableaux De la classe ArrayList public Object[] toArray(Object[] a) Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array. If the collection fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this collection. String[] x = (String[]) v.toArray(new String[0]); public Véhicule[] uneCopie(){ return (Véhicule[])liste.toArray(new Véhicule[0]); }

Résumé, synthèse