Chaînes de caractères – un exemple d`objet Plan Définition Codage

1
Chaînes de caractères –
un exemple d’objet
Université de Nice - Sophia Antipolis
Richard Grin
Version1.1 – 10/11/11
Richard Grin Chaînes de caractères page 2
Plan
Définition
Programmation objet
Classe String
Classe StringBuilder
Définition
Une chaîne de caractères est une suite de
caractères lisibles par un homme
Très utilisé dans les programmes informatiques,
par exemple pour afficher des informations,
désigner un fichier, recevoir un nom d’utilisateur,
afficher les options d’un menu
Richard Grin Chaînes de caractères page 3
Codage Unicode
Les caractères utilisés par Java sont codés par le
codage Unicode
Unicode peut représenter tous les caractères
affichables de toutes les langues (ou presque…),
les caractères de ponctuation et même les
caractères utilisés par les mathématiques ou
d’autres domaines
La version actuelle du codage Unicode est la
version 5 qui code plus d’un million de caractères
Richard Grin Chaînes de caractères page 4
Programmation objet
Richard Grin Chaînes de caractères page 5
Programmation objet
Jusqu’à maintenant dans cette introduction à la
programmation nous n’avons pas fait de
programmation objet
La programmation objet manipule des… objets
Elle modélise la réalité concernée par le
programme à l’aide d’objets
Richard Grin Chaînes de caractères page 6
2
R. Grin Introduction à Java 7
Qu’est-ce qu’un objet ?
Entité identifiable, concrète ou abstraite
Un objet réagit à des messages qu’on lui envoie ;
la façon dont il réagit constitue le comportement
de l’objet
Il ne réagit pas toujours de la même façon à un
même message ; sa réaction dépend de l’état
dans lequel il est
R. Grin Introduction à Java 8
Un objet
État
(caché)
Comportement
Un objet
(interface publique)
Démarre
Arrête-toi
vitesse
direction
. . .
Une voiture
va à
xkm/h
Exemples d’objet
Une voiture
Un employé
Un client
Une facture
Une chaîne de caractères
Richard Grin Chaînes de caractères page 9 R. Grin Introduction à Java 10
Interactions entre objets
Les objets interagissent en s’envoyant des messages
objet1.decrisToi();
employe.valeurDeTonSalaire(2000);
Objet qui reçoit
le message Message envoyé
Paramètre
du message
R. Grin Introduction à Java 11
Messages entre objets
démarre
arrête-toi
va à
xkm/h
vitesse:60
direction:5
. . .
Pierre La voiture de Pierre
va à
70 km/h
nom:Pierre
âge:28 ans
. . .
Conduit à
la ville v
maVoiture.vaAVitesse(70);
Pierre envoie un message
à sa voiture :
Notion de classe
Le code lié aux objets d’un même type est écrit
dans une classe
Par exemple, les objets Pierre, Paul et Jacques
sont représentés par la classe Personne
La classe contient le code qui décrit l’état et le
comportement des objets qui sont de ce type
Richard Grin Chaînes de caractères page 12
3
R. Grin Introduction à Java 13
Les classes en Java
L’état interne est donné par les valeurs des variables
d’instance
Le comportement est donné par les méthodes
Par exemple, la classe Personne contient le code qui
décrit les variables d’instance et les méthodes
applicables aux personnes
R. Grin Introduction à Java 14
Méthodes et messages
Méthodes de la classe d’un objet messages qu’on
peut lui envoyer
Quand un objet reçoit un message, il exécute la
méthode correspondante
R. Grin Introduction à Java 15
Paradigme objet
La programmation objet est un paradigme, une
manière de « modéliser le monde » :
des objets ayant un état interne et un
comportement
collaborent en s’échangeant des messages
pour fournir les fonctionnalités qu’on demande à
l’application
Classe String
Richard Grin Chaînes de caractères page 16
Classe String
Le développeur peut créer ses propres types
d’objet
Il peut aussi manipuler des types d’objets créés
par d’autres
Pour cette partie du cours nous allons étudier les
chaînes de caractères, objets fournis en standard
par le JDK de Java sous la forme de la classe
java.lang.String
Richard Grin Chaînes de caractères page 17
Extrait de String.java
/** The value is used for character storage.*/
private final char[] value;
/** The count is the number of characters in
the String. */
private final int count;
Richard Grin Chaînes de caractères page 18
dans src.zip
4
Types en Java
Les classes peuvent servir de type (pour déclarer
les variables ou dans les signatures des
méthodes), comme les types primitifs
Les types que l’on a déjà vu :
Types primitifs (int, double,…)
Classes (String par exemple)
Tableaux (int[] ou String[] par exemple)
D’autres sortes de types seront étudiées dans le
cours de L3
Richard Grin Chaînes de caractères page 19
Création d’un objet String
En Java, la syntaxe normale pour la création d’un
objet utilise le mot clé new, comme pour un
tableau : Train train = new Train(125);
La classe String a une syntaxe spéciale
String chaine = "Bonjour";
crée un objet String et l’affecte à la variable
chaine
Comme pour les tableaux, l’objet String est
entreposé dans le tas (pas dans la pile)
Richard Grin Chaînes de caractères page 20
Richard Grin Chaînes de caractères 21
String dans le tas
Pile Tas
chaine = "Bonjour";
chaine Bonjour
Vocabulaire
Un objet de la classe String (ou de toute autre
classe) s’appelle une instance de la classe
Richard Grin Chaînes de caractères page 22
Un objet String n’est pas modifiable
La classe String est une classe particulière car
il est impossible de modifier l’état des instances
de la classe
Il existe dans le JDK la classe StringBuilder
pour représenter les chaînes de caractères
modifiables ; elle sera étudiée à la fin de cette
section
Richard Grin Chaînes de caractères page 23 Richard Grin Chaînes de caractères 24
Nouvelle affectation avec les String
String chaine = "Bonjour";
chaine = "Hello";
La dernière instruction correspond aux étapes suivantes :
1) Une nouvelle valeur (Hello) est créée
2) La variable chaine référence la nouvelle chaîne
Hello (et plus l’ancienne chaîne Bonjour)
3) La place occupée par la chaîne Bonjour pourra être
récupérée à un moment ultérieur par le ramasse-miette
Cet objet String
n’est pas modifié
5
Richard Grin Chaînes de caractères 25
String dans le tas
Pile Tas
chaine = "Bonjour";
chaine = "Hello";
chaine Bonjour
Richard Grin Chaînes de caractères 26
String dans le tas
Pile Tas
chaine
Hello
chaine = "Bonjour";
chaine = "Hello";
Plus tard le ramasse-miette
viendra libérer la place
occupée par « Bonjour »
Bonjour
Richard Grin Chaînes de caractères 27
Concaténation de chaînes
String s = "Bonjour" + " les amis";
Si un des 2 opérandes de l’opérateur +est une
String, l’autre est traduit automatiquement en
String :
int x = 5;
s = "Valeur de x = " + x;
Richard Grin Chaînes de caractères 28
Concaténation de chaînes
S’il y a plusieurs +dans une expression, les calculs se
font de gauche à droite
int x = 5;
s = "Valeur de x + 1 = " + x + 1;
s contient « Valeur de x + 1 = 51 »
s = x + 1 + "est la valeur de x + 1";
s contient « 6 est la valeur de x + 1 »
On peut utiliser des parenthèses pour modifier l’ordre
d’évaluation :
s = "Valeur de x + 1 = " + (x + 1);
Richard Grin Chaînes de caractères 29
Égalité de Strings
La méthode equals teste si 2 instances de String
contiennent la même valeur :
String s1, s2;
s1 = "Bonjour ";
s2 = "les amis";
if ((s1 + s2).equals("Bonjour les amis"))
System.out.println("Egales");
« ==» teste si 2 objets sont les mêmes ; il ne doit pas
être utilisé pour comparer 2 chaînes
Méthodes d’instance
La méthode equals (comme les autres
méthodes de la classe String) n’est pas une
méthode static (voir javadoc)
Elle correspond à un message envoyé à un objet
(pas à une classe)
Les méthodes static sont appelées des
méthodes de classe ; les autres sont appelées
des méthodes d’instance
La plupart des méthodes sont des méthodes
d’instance
Richard Grin Chaînes de caractères page 30
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !