Vous êtes sur la page 1sur 31

PROGRAMMATION JAVA

AU : 2021 - 2022
Auditoire : 2ème Année Licence Multimédia

DR. Jihen KHALFALLAH

jihen_khalfallah@yahoo.fr
Plan
• La classe Object
• Les classes Wrapper
• Les chaînes de caractères
• La classe Vector

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 2


PLAN DU COURS
• Chapitre 1 : Introduction à la POO
• Chapitre 2 : Syntaxe du langage Java
• Chapitre 3 : Concept de classe et objet
• Chapitre 4 : Héritage
• Chapitre 5 : Les classes de base
• Chapitre 6 : La gestion des exceptions
• Chapitre 7 : Les flux d’entrée/sortie
• Chapitre 8 : Les collections
3
PROGRAMMATION JAVA

Chapitre 5: Les classes de base

Auditoire : 2ème Année Licence Multimédia

DR. Jihen KHALFALLAH


jihen_khalfallah@yahoo.fr
La classe Object
 En Java, la racine de l’arbre d’héritage des classes est la classe
java.lang.Object
 Toutes les classes héritent de la classe Object
 La classe Object n’a pas de variable d’instance ni de variable
de classe
 La classe Object fournit plusieurs méthodes qui sont héritées
par toutes les classes sans exception
– les plus couramment utilisées sont les méthodes
toString() et equals()

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 5


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 d’un objet

 nom de ses ancêtres,

 structure des objets.


 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)

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 6


La classe Object

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 7


Classes des types primitifs (Wrappers)
• Types de base
– Types primitifs
– Classes des types primitifs wrappers

• Structures de collection
– Tableaux
– L’interface collection
– Vector

 Remarque
- Toute classe est une structure de données
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 8
Classes des types primitifs (Wrappers)
• Les classes enveloppe (appelées en anglais classes Wrapper )
• Classes qui encapsulent des types primitifs
• Boolean, Integer, Float, Double, Long, Character
Exemple:

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 9


Classes des types primitifs (Wrappers)
• Java a une classe Wrapper pour chacun des huit types de données
primitifs :

Type primitif Classe Wrapper Type primitif Classe Wrapper


boolean Boolean float Float

byte Byte int Integer

char Character long Long

double Double short Short

 Remarque
- Un type primitif ne prend jamais de majuscule 10
Les classes Wrappers
 Problème : les types de base (int, float, double, boolean… ne
sont pas des objets)
‒ Il est parfois indispensable de les manipuler comme 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
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 11
Les classes Wrappers
 Les méthodes :
 La méthode xxxValue() Ici xxx représentent des types de données
numériques primitifs (byte, short, int, long, float, double).
Cette méthode permet de convertir la valeur de cet objet Number en
type de données primitif spécifié.
 La méthode parseXxx() est utilisée pour obtenir le type de données
primitif d'une certaine String.
 parseInt (String s); Ceci retourne un entier (décimal seulement).
 La méthode toString() est utilisée pour obtenir un objet String
représentant la valeur de l'objet Number.
 La méthode valueOf renvoie l'objet Number correspondant contenant
la valeur de l'argument transmis. L'argument peut être un type de
données primitif, une chaîne, etc.
 valueOf(int i); Ceci retourne un objet Integer contenant la valeur de la
primitive spécifiée.
 valueOf(String s); Ceci retourne un objet Integer contenant la valeur
12
de la représentation de chaîne spécifiée
Les classes Wrappers
 Création d’une instance à partir d’un type de base ou d’une chaîne :
 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)
 Récupération des valeurs min et max :
 Integer.MIN_VALUE, Integer.MAX_VALUE, … 13
Les classes Wrappers
 Les classes wrapper sont utilisées dans des situations où
des objets sont requis, comme pour les éléments d'une
collection :
 List<Integer> a = new ArrayList<Integer> ();
 methodRequiringListOfIntegers(a);
 Attention : ne supporte pas d’opérateurs (+, -, …)
 Elles sont dans le package java.lang

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 14


« Wrapper » vs « types de base »
• Avantages des type de bases :
– Plus léger en mémoire
– Supporte un certain nombre d’opérateurs
– Autorise certaines conversions automatiques de types

• Avantages des Wrappers :


– Est passé par référence
– Dispose de méthodes de conversions statiques vers les autres types
– Peut être géré par les objets container
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 15
La classe String
 C’est un type dont des objets sont figés
 Et dont il n’est pas possible de modifier le contenu
 La classe String sera tout simplement instanciée

 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";
 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 ;

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 16


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 (char c); fournit l’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.
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 17
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.
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 18
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
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 19
« String » vs « StringBuffer »
 La classe String correspond aux chaînes de caractères
‒ Toute chaîne littérale telle que "Bonjour" est implantée
comme instance de cette classe
 Les chaînes ont la propriété d'être constantes :
– Une fois initialisé un objet de ce type ne peut être modifié
 La classe StringBuffer implante des chaînes de caractères
modifiables et de taille dynamique
‒ Automatiquement redimensionnée en fonction des besoins
 Cette classe est en particulier utilisée pour implanter la
concaténation de chaînes (opérateur +)

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 20


« String » vs « StringBuffer »
String Stringbuffer
Longueur La longueur du
La longueur de l’objet String est
StringBuffer peut être
fixe.
augmentée.
Modification L’objet StringBuffer
L’objet String ne changent pas. est modifiable.
Performance Il est plus lent pendant la C’est plus rapide pendant
concaténation. la concaténation.
Mémoire Consomme plus de Consomme moins
mémoire. de mémoire.

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 21


Exercice 1
Réaliser une classe de test nommée StringBufferTest
permettant de manipuler des chaines de caratères. On y
prévoira de :

•créer un objet de la classe StringBuffer nommé prenom


qui contient la chaine «hazel»
•retourner le nombre de caractères exacte du contenu de
prenom
•afficher le caractère «a» de la chaîne
•ajouter la chaine « everett» en fin de chaîne
•insérer la chaine « jane» à l'emplacement 5
•afficher le résultat du test.
22
Corrigé de l’Exercice 1

La classe StringBufferTest

23
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ée.
 attributs :
 elementCount nombre d'éléments du vecteur
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 24
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 si 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
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 25
La classe Vector
import java.util.* ;
Vector v = new Vector() ;
v.addElement(1);
v.addElement(2);
v.addElement(3);
System.out.print(v.toString()) ; // affichage du Vector
Résultat : [1,2,3]
v.insertElementAt(hop,2); // insertion en 3ème position
System.out.print(v.toString()) ; // affichage du Vector
Résultat : [1,2,hop,3]
v.setElementAt(truc,2); // changement d’un élément
System.out.print(v.toString()) ; // affichage du Vector
Résultat : [1,2,truc,3]
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 26
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) ; // indice d’un élément
v.removeElement(2) ; // retrait d’un élément
System.out.println(v.lastElement( )) ;

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 27


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

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 28


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
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 29
Exercice 2

Réaliser une classe Vecteur permettant de manipuler des


vecteurs ayant un nombre quelconque de composantes de type
chaine de caractère. On y prévoira de:

•créer un objet de la classe Vector nommé vect


•ajouter des objets « Java, PHP, Python, C++ » dans vect
•parcourir les éléments en utilisant Enumeration
•afficher le résultat du test.
.

30
Corrigé de l’Exercice 2
La classe Vecteur

31

Vous aimerez peut-être aussi