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



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

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

Une introduction à Java

Programmation Par Objets

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

Utilisation d objets : String et ArrayList

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

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

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

Chapitre 10. Les interfaces Comparable et Comparator 1

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3

Langage Java. Classe de première SI

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

Programmation Objet I

Programmer en JAVA. par Tama

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

Programmation Objet II

as Architecture des Systèmes d Information

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

INF 321 : mémento de la syntaxe de Java

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 les Objets en Java

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Programmation Orientée Objet Java

Java Licence Professionnelle CISII,

TP1 : Initiation à Java et Eclipse

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Développement Logiciel

Programmation avec des objets : Cours 7. Menu du jour

Threads. Threads. USTL routier 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 )

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

PROGRAMMATION PAR OBJETS

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Exercices sur les interfaces

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

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

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

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

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

4. Groupement d objets

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Projet de programmation (IK3) : TP n 1 Correction

Recherche dans un tableau

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

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

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

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

Cours 1: Java et les objets

Java 1.5 : principales nouveautés

Solutions du chapitre 4

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

Introduction au langage Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Un ordonnanceur stupide

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Initiation à la programmation en Python

OCL - Object Constraint Language

Apprendre Java en 154 minutes

TP, première séquence d exercices.

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Java c est quoi? Java pourquoi?

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

Corrigés des premiers exercices sur les classes

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

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à MATLAB R

Chapitre VI- La validation de la composition.

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

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

Initiation à JAVA et à la programmation objet.

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

I. Introduction aux fonctions : les fonctions standards

TP 1. Prise en main du langage Python

Cours 7 : Utilisation de modules sous python

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Introduction au langage de programmation Java

Classe Interne, Anonyme & Enumération

Les chaînes de caractères

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

Auto-évaluation Programmation en Java

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

INITIATION AU LANGAGE JAVA

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

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

Remote Method Invocation Les classes implémentant Serializable

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Création d objet imbriqué sous PowerShell.

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

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

RMI le langage Java XII-1 JMF

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Corrigé des exercices sur les références

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

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Transcription:

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

Plan La classe Object Les collections La classe ArrayList La classe Vector Les classes Wrappers Les classes String et StringBuffer La classe Math La classe Graphics 177

La classe Object La classe Object est la classe mère dont héritent toutes les autres classes Toute classe définie en Java, que ce soit par l utilisateur ou dans un package de l API, hérite de la classe Object Ainsi, toute classe hérite d emblée des méthodes de la classe Object Public final Class getclass() renvoie le type de l'objet nom de la classe, nom de ses ancêtres, structure. void finalize() utilisée par le Garbage Collector boolean equals(object o) compare le contenu des références (à redéfinir) Object clone() : crée une copie de l objet. (à redéfinir) String tostring() renvoie une String décrivant l'objet. (à redéfinir) 178

La classe Object Utilisation des méthodes tostring, equals et getclass class Personne // dérive de Object par défaut { private String nom ; public Personne(String nom) { this.nom = nom ; } public String tostring() { return "Classe:" + getclass().getname() + "Objet :" + nom ;} boolean equals(personne p) { return p.nom.equals(this.nom) ; } } Exemple d utilisation Personne p1 = new Personne("Jean Dupond") ; Personne p2 = new Personne("Jean Dupond") ; System.out.println( p1.tostring( ) ) ; Résultat d affichage Classe : Personne Objet : Jean Dupond 179

La classe Object Certains traitements sont si génériques qu'ils peuvent s'appliquer à tous les objets Par exemple, une liste peut contenir n'importe quel type d'objet et les compter, les trier, etc. Donc il faut écrire la classe Liste pour manipuler des objets de la classe Object On pourra alors stocker dans la liste n importe quel type d objet Il existe en Java plusieurs classes qui de ce type, permettant de stocker, trier, retrouver efficacement des objets : les Collections 180

Les collections Une collection est un objet regroupant un ensemble d objets et permettant de : stocker et retrouver des données. transmettre des données dans un emballage unique. Exemple : un dessin est un ensemble de formes. un répertoire téléphonique est un ensemble de pairs : nom, numéro de téléphone. Java propose une architecture unifiée pour les collections : un ensemble d interfaces, un ensemble d implémentation. Des algorithmes d accès, de tri, de recherche. Une interface définit une liste de service. 181

Les collections public interface Collection { // Basic Operations int size(); boolean isempty(); boolean contains(object element); } boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator(); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c); // Optional void clear(); // Optional // Array Operations Object[] toarray(); Object[] toarray(object a[]); 182

Les collections boolean contains(object o) Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that (o==null? e==null : o.equals(e)). Parameters: o - element whose presence in this collection is to be tested. Returns: true if this collection contains the specified elementp La javadoc définit comment réaliser ces services L implémentation de l interface Collection pour contains doit utiliser la méthode equals comme critère. Les objets stockés doivent appartenir à une classe où la méthode equals est correctement défini. 183

Les collections Si la classe Cercle, n a pas redéfini la méthode equals.c est la méthode défini dans la classe Object qui est appelée. // Dans la classe Object. public boolean equals(object o){ return this == o; } // une référence sur une Collection. c.clear(); Cercle a = new Cercle (0,0,5); c.add(a); Cercle b = new Cercle (0,0,5); System.out.println(c.contains(a));// true System.out.println(c.contains(b));// false 184

Les collections Il existe 2 sortes de collection : public interface List extends Collection 2 éléments identiques peuvent coexister. public interface Set extends Collection pas d éléments dupliqués Dans les deux cas les méthodes add et remove ont le même comportement. Elles sont contenues dans l interface Collection La méthodeboolean add(object o) La collection contiendra l objet o. Retourne true si la collection a été modifiée. La méthodeboolean remove(object o) retire un objet e tel que o.equals(e) Retourne true si la collection a été modifiée. 185

Les collections Permet de gérer les éléments d une collection Toute collection peut fournir son «Iterator» Un iterateur permet le parcours séquentiel d une collection sans autre précision sur l ordre de parcours. Il existe une interface : public interface Iterator { boolean hasnext(); Object next(); void remove // optional. } Contient 3 méthodes essentielles: hasnext(): boolean Indique s il reste des éléments après l élément en cours next(): Object Fournit l élément suivant de la collection Remove(): void Supprime l élément en cours 186

Les collections Deux principales implémentations de l interface «Set» HashSet (Set) : rapide mais n offre aucune garantie en termes de d ordre TreeSet (SortedSet) : moins rapide mais contient une structure permettant d ordonner les éléments A n utiliser que si la collection doit être triée ou doit pouvoir être parcourue dans un certain ordre Deux principales implémentations de l interface «List» ArrayList et Vector : particulièrement rapides et sont les plus utilisés LinkedList : plus lent; à utiliser pour Ajouter des éléments au début de la liste Supprimer des éléments au milieu de la liste 187

La classe ArrayList un ArrayList se comporte comme un tableau il contient plusieurs objets (de la classe Object uniquement) ne peut contenir des types primitifs il accède à ses éléments à l aide d'un index il grossit automatiquement quand plus de place pour contenir de nouveaux objets il existe des méthodes pour ajouter ou enlever un élément il est possible d indiquer la taille initiale dans le constructeur Il y a 2 constructeurs : ArrayList() ArrayList(int initialcapacity) 188

La classe ArrayList Modification d éléments Il y a deux manières d ajouter un élément à la fin d'un ArrayList avec la méthode boolean add(object newelement) à une position donnée void add(int index, Object newelement) pour remplacer un objet à une position donnée Object set(int index, Object newelement) Accès aux éléments il n y a pas d indexation comme pour les tableaux il faut utiliser la méthode spécialisée Object get(int index) exemple : ArrayList alist = new ArrayList(); alist.add(new Point()); alist[0].display(); // interdit! alist.get(0).display(); // ok 189

La classe ArrayList pour tester le contenu, il existe la méthode boolean isempty() pour connaître le nombre d éléments dans la liste, il faut utiliser la méthode int size() exemple : if (!alist.isempty()) { for (int i=0; i<alist.size(); i++){ System.out.println(aList.get(i)); } pour recopier une liste dans un tableau, il faut utiliser la méthode Object[ ] toarray() exemple : ArrayList alist = new ArrayList(); Object[] tab = new Object[aList.size()]; tab = alist.toarray(); 190

La classe ArrayList Suppression d éléments pour supprimer un élément à une position donnée, il faut utiliser la méthode Object remove(int index) Recherche d éléments pour savoir si un objet est présent ou non dans une liste, il faut utiliser la méthode boolean contains(object obj) pour connaître la position d un élément dans une liste, on peut utiliser deux méthodes pour avoir la première occurrence, il faut utiliser int indexof(object obj) pour avoir la dernière occurrence, il faut utiliser int lastindexof(object obj) 191

La classe Vector Classe située aussi dans le package java.util Vector permet de réaliser des listes d éléments quelconques pourvu qu ils héritent de la classe Object. Les objets de la classe Vector représentent des tableaux à taille variable, c.à.d. il n'y a pas de limite au nombre d'objets qu'il peut contenir constructeurs : Vector() crée un vecteur vide Vector(int nombre) crée un vecteur vide de capacité précisé. attributs : elementcount nombre d'éléments du vecteur 192

La classe Vector isempty() retourne true si le vecteur est vide size() retoune le nombre d'éléments du vecteur addelement(objet) ajoute un élément à la fin du vecteur insertelementat(objet, int position) ajoute un élément à la position spécifiée contains(objet) retourne true s'il l'objet se trouve dans le vecteur ElementAt(int position) retourne l'élément à la position spécifiée indexof(objet) retourne la position de la 1ére occurence de l'objet dans le vecteur removeelementat(int position) supprime l'élément à la position spécifiée 193

La classe Vector import java.util.* ; Vector v = new Vector() ; v.addelement( 1 ); v.addelement( 2 ); v.addelement( 3 ); System.out.printl(v.toString()) ; //affichage du Vector Résultat : [1,2,3] v.insertelementat( hop,2) //insertion en 3 eme position System.out.printl(v.toString()) ; // affichage du Vector Résultat : [1,2,hop,3] v.setelementat( truc,2) // changement d un élément System.out.printl(v.toString()) ; // affichage du Vector Résultat : [1,2,truc,3] 194

La classe Vector Parcours d un Vector : for(int i = 0 ; i< v.size( ) ;i++) // affichage du Vector System.out.println(v.elementAt(i)) ; Autres méthodes utiles int num ; num = v.indexof( 2 ) ; v.removeelement( 2 ) ; // indice d un élément // retrait d un élément System.out.println(v.lastElement( )) ; Un élément retiré d un Vector doit être converti en le type désiré import java.util.* ; class B{- - - - - } B b1; Vector v = new Vector( ) ; v.addelement(new B(..)); v.addelement(new B(..)); b1 = (B) v.elementat(1) ; // ajout d un objet de type B // ajout d un objet de type B // conversion en B 195

L interface Iterator Interface permettant de créer un itérateur pour accéder séquentiellement à chaque élément d une collection implémentée p.ex. par Vector ne permet qu une utilisation par instance d'enumeration Utilisation avec Vector itérateur obtenu par appel à la méthode elements() hasmoreelements() indique s il reste des éléments nextelement() rend l élément suivant 196

L interface Iterator Afficher tous les éléments d'un vecteur Vector v = new Vector(); v.addelement( Un petit peu de texte ); v.addelement(new Integer(10)); Enumeration e = v.elements(); while(e.hasmoreelements()) { final Object o = e.nextelement(); System.out.println(o.toString()); } // while Résultat: Un petit peu de texte 10 197

Les classes Wrappers Problème : les types de base (int, float, double, boolean ne sont pas des objets) On ne peut pas les stocker tels quels dans les collections C est à cela que servent les classes enveloppes (Wrappers) Permettent de représenter des types de base sous forme d objets Les classes Wrapper permettent en particulier de récupérer les valeurs minimum et maximum du type de base correspondant Les conversions entre types de base et chaînes de caractères sont possibles via des objets Wrappers A utiliser aussi peu que possible 198

Les classes Wrappers int entier => Integer n Integer n = new Integer(entier); entier = n. intvalue(); double =>Double, boolean => Boolean, char => Character, intvalue(), doublevalue()... Conversion d une chaîne de caractère vers un entier : Integer.parseInt(String s) Integer(String s).intvalue( ) Integer.valueOf(String s).intvalue( ) Conversion d un entier en chaîne de caractère : Integer(int i)).tostring( ) String.valueOf(int i) Integer.MIN_VALUE, Integer.MAX_VALUE, 199

La classe String Les chaînes de caractères sont gérées à l aide de la classe String Les méthodes : String (); crée une chaîne vide String (String); crée une chaîne à partir d une autre chaîne char charat (int n); fournit le n ième caractère de la chaîne int compareto (String s); compare la chaîne de l objet et la chaîne s String concat(string s); concatène la chaîne de l objet et la chaîne s int length (); longueur de la chaîne String tolowercase (); fournit une nouvelle chaîne convertie en minuscules String touppercase (); fournit une nouvelle chaîne convertie en majuscules int indexof (int c); indice du caractère c dans la chaîne String replace (char c1, char c2); crée une nouvelle chaîne en remplaçant le caractère c1 par c2 etc. 200

La classe String La classe String décrit des objets qui contiennent une chaîne de caractères constante String s ; s = "voici une chaîne"; s = "voici une autre chaîne"; s Voici une chaîne Voici une autre chaîne C'est aussi la seule classe qui dispose d'opérateurs supplémentaires : + et += pour la concaténation de chaînes de caractères. int nombre = 3 ; String message = "Mon nombre est " + nombre ; 201

La classe StringBuffer Classe java.lang.stringbuffer : Un objet de la classe StringBuffer se caractérise par deux tailles, qui sont retournées par les méthodes : int length( ) : qui retourne le nombre de caractères exacte du contenu de la chaîne de caractère. int capacity( ) : qui retourne la taille actuelle du tableau interne Quelques méthodes supplémentaires: StringBuffer append(p) : ajoute p en fin de chaîne ( p est n'importe quel type de base) StringBuffer insert(int offset, p) : idem, mais en insérant p à l'emplacement indiqué par offset. StringBuffer reverse( ) : inversion des caractères de la chaîne. 202

La classe StringBuffer Exemple 1: StringBuffer s = new StringBuffer("Bonjour"); s.append(" tout le monde"); System.out.println("s : "+s); System.out.println("length : "+s.length()); System.out.println("capacity : "+s.capacity()); Résultats : s : Bonjour tout le monde length : 21 capacity : 23 Exemple 2 : s.insert(2,"hop"); System.out.println("s : "+s); Résultat : Bohopnjour tout le monde 203

La classe Math Cette classe final rassemble l'ensemble des méthodes de calcul mathématique Java. Classe vide Ne permet pas de créer des instances; Ne contient que des méthodes et des variables de classe (déclarées avec le mot-clé static), donc qui existent dès l'activation de la classe, sans même qu'une instance soit créée. Fonctions mathématiques sin, cos, abs, max, log, etc. Constantes mathématiques e, PI 204

La classe Math public static double asin (double a) Renvoie l'arc sinus (sin-1) du nombre a, public static double acos (double a) Renvoie l'arc cosinus (cos-1) du nombre a public static double atan (double a) Renvoie l'arc tangente (tan-1) du nombre a public static double atan2 (double a, double b) Renvoie l'arc tangente (tan-1) de a/b, public static double exp (double a) et public static double log (double a) : Ces méthodes permettent de calculer l'exponentielle ou le logarithme népérien du nombre a. public static double sqrt (double a) Renvoie la racine carrée du nombre a. public static double pow (double a, double b) Renvoie le nombre a à la puissance b (ab). public static synchronized double random () Renvoie un nombre aléatoire compris entre 0. inclus et 1. exclu. 205

La classe Graphics Une classe Graphics est une classe abstraite contenant des informations permettant de dessiner des formes géométriques ou des textes Les principales informations : le composant sur lequel il faut dessiner la couleur du dessin la fonte utilisée La classe Graphics définit de nombreux méthodes pour tracer du texte ou des formes géométriques 206

La classe Graphics Quelques méthodes : drawline (int, int, int, int) : trace une ligne droite entre deux points drawrect (int, int, int, int) : trace un rectangle drawoval (int, int, int, int) : trace un ovale dans le rectangle définit drawstring (String, int, int) : trace une chaîne de caractères fillrect (int, int, int, int) : remplit un rectangle getcolor () : fournit la couleur courante getfont () : fournit la fonte courante setcolor (Color) : change la couleur courante setfont (Font) : change la fonte courante Des exemples : g.setcolor (Color.red); // couleur courante = rouge g.drawstring ( Bonjour, 5, 14); // Bonjour en x=5 et y=14 207