Chapitre 1 Notions de Base en Java
Chapitre 1 Notions de Base en Java
Chapitre 1 Notions de Base en Java
LANGAGE JAVA
Plan
2
Introduction
Opérateurs
Structure de contrôle
Héritage
Interface
Polymorphisme
Paquetage
Petit historique du langage Java
3
Une de ses plus grandes forces est son excellente portabilité : une fois votre
programme créé, il fonctionnera automatiquement sous Windows, Mac, Linux,
Cours POO/JAVA
etc.
Il est interprété
Le bytecode est interpété par une machine virtuelle Java
Dorra ZAIBI
Premier exemple : HelloWord
5
}
}
NB: toute classe publique doit être dans un fichier qui a le même nom
que la classe
Ce fichier définit une classe, qui est une unité de compilation, étant donné
Dorra ZAIBI
getNom())
Tout en majuscule pour les constantes (MAX_SIZE)
Plan
15
Introduction
Opérateurs
Structure de contrôle
Héritage
Interface
Polymorphisme
Paquetage
Les variables en Java
16
Les variables locales comme les champs des classes et des objets ne peuvent être
que de deux natures:
De type « primitif »
La déclaration de la variable réserve la place mémoire pour stocker sa valeur (qui
dépend de son type)
Exemple: int entier; long entierLong;
Cours POO/JAVA
Types fondamentaux
Valeur constante
19
Une constante est une variable finale, c‟est-`a-dire une variable non
modifiable.
Les littéraux sont par défaut de type int. Un littéral peut être rendu de
type long en le suffixant avec l ou L.
Exemple:
12345 est de type int
Dorra ZAIBI
Java est très strict du point de vue des données et il est parfois
intéressant de convertir une donnée d'un type primitif vers un autre
type primitif.
Cours POO/JAVA
Dorra ZAIBI
Conversion implicite /
23
Compatibilité des types
Types numériques
Il est toujours possible de placer un entier de “petite taille” dans un
entier plus grand (par exemple un entier de type int dans une variable
de type long).
Les types numériques sont donc rangés dans l‟ordre suivant : byte <
short < int < long < float < double
Dorra ZAIBI
Conversion implicite /
24
Compatibilité des types
Cas 1 => Correct
=> erreur
Dorra ZAIBI
Conversion explicite / implicite
26
x = 3 + 2.5;
Exemple
Compatibilité des types
28
On peut placer une valeur de type char dans une variable de type int (et
donc dans une variable d‟un type “plus grand” que int).
Le type char est compatible avec tous les types numériques (int, double,
etc.);
Pour les types primitifs (char), on parle de conversion implicite
char < int
Conversions explicites entre types numériques et char:
Cours POO/JAVA
char car les autres types entiers peuvent prendre des valeurs négatives.
Compatibilité des types
29
Exemple:
int trois = 3;
char un = ‟1‟;
char quatre = (char) (trois + un);
Cours POO/JAVA
quatre : ‟4‟.
un a été converti à int dans l‟expression
Dorra ZAIBI
Introduction
Opérateurs
Structure de contrôle
Héritage
Interface
Polymorphisme
Paquetage
Opérateur logique
32
Introduction
Opérateurs
Structure de contrôle
Héritage
Interface
Polymorphisme
Paquetage
Structure de contrôle
38
Syntaxe if - else
41
Dorra ZAIBI Cours POO/JAVA
Syntaxe switch
Opérateur conditionnel (plus court)
42
Boucle infinie
Lorsqu'on utilise des boucles, il faut faire très attention aux boucles
infinies.
Le corps de la boucle sera exécuté au moins une fois dans tous les
cas.
Dorra ZAIBI
46
Dorra ZAIBI Cours POO/JAVA
Syntaxe for
Instruction continue
47
Introduction
Opérateurs
Structure de contrôle
Héritage
Interface
Polymorphisme
Paquetage
Affichage
51
System.out.print(expression);
Cette méthode permet d‟afficher la valeur de l‟expression entre
parenthèses sans passer à la ligne après cet affichage.
System.out.println(expression);
Cette méthode passe au contraire à la ligne après l‟affichage.
Cours POO/JAVA
Dorra ZAIBI
Saisie
53
Pour que Java puisse lire ce que vous tapez au clavier, vous allez
devoir utiliser un objet de type Scanner.
Exemple:
import java.util.Scanner;
Cours POO/JAVA
Nous présentons certaines méthodes les plus utiles pour lire différents types
de données à partir du périphérique d'entrée par défaut (récupérer le type de
variable primitif adéquat):
nextInt ()
nextByte ()
nextShort ()
nextLong ()
nextFloat ()
Cours POO/JAVA
nextDouble ()
Exemple:
Scanner scanner = new Scanner( System.in ) )
System.out.print( "Veuillez saisir un premier entier : " );
Dorra ZAIBI
int a = scanner.nextInt();
Saisie
55
Remarque:
La classe Scanner ne contient pas de méthode nextChar(). Pour
extraire un seul caractère du clavier, vous pouvez utiliser la
méthode nextLine(), puis la méthode charAt().
Exemple
System.out.println("Saisissez une lettre :");
Cours POO/JAVA
NB: Pour les tableaux, la valeur spéciale null représente un tableau sans
aucune valeur (0 pour chaque élément) .
Exemple de déclaration d‟un tableau
58
Cours POO/JAVA
Dorra ZAIBI
Tableau
59
Initialisation
<type du tableau> <nom du tableau> [] = {<contenu du tableau>};
Exemple:
Cours POO/JAVA
Exemple:
int tableauEntier [] = {0,1,2,3,4,5,6,7,8,9};
Ce qui revient à
Cours POO/JAVA
double m[][] = {
{ 0*0, 1*0, 2*0 },
Cours POO/JAVA
Voici une manière imagée de visualiser une matrice à n+1 lignes et à p+1
colonnes
On dispose d'une classe utilitaire, Arrays, dans le package java.util, qui nous
propose des méthodes permettant de manipuler les tableaux.
La méthode equals compare deux tableaux renvoie un booléen true s'ils ont
même longueur et contenu,
La méthode binarySearch effectue la recherche binaire d'une valeur dans un
tableau,
La méthode fill remplit un tableau avec la valeur donnée,
Dorra ZAIBI
Exemple :
int [ ] table1 = {17,-9,4,3,57};
int taille;
taille = table1.length; // taille = 5
NB:
Cours POO/JAVA
La copie d'un tableau dans l'autre peut toujours se faire par itération
sur les éléments du premier tableau, et recopie dans le second. La
méthode à invoquer est System.arraycopy, dont voici la signature.
public static void arraycopy(Object src, int src_pos, Object dest, int
dest_pos, int length)
Remarque:
1) Si un dépassement de capacité a lieu, une exception est générée.
2) Rappelons qu'une fois un tableau créé, il n'est plus possible d'en
changer la taille. L'utilisation de System.arraycopy ne déroge pas à
cette règle.
Accès à un tableau
70
Elle déclare une variable référençant une zone mémoire typée avec le
Cours POO/JAVA
type String
String s1 = "Bonjour" ;
String s2 = “à tous!" ;
String s3 = s1 + " " + s2 ;
2ème méthode
=> à l'aide de la méthode concat : String concat(String)
Dorra ZAIBI
Chaîne de caractères
75
D‟autre opérations
Longueur
int length(): La méthode length() renvoie la longueur ( nombre de
caractères) de la chaîne.
Comparaison
int compareTo(String anotherString): Compare une chaîne de
Cours POO/JAVA
Caractère et sous-chaînes
char charAt(int): Retourne le caractère à l‟indice spécifié en paramètre.
String substring(int): Sous-chaîne depuis l‟indice jusqu‟à la fin.
Conversions
String toLowerCase(): Retourne une chaîne égale à la chaîne convertie
en minuscules.
String toUpperCase(): Retourne une chaîne égale à la chaîne
Cours POO/JAVA
convertie en majuscules.
Recherche:
int indexOf(int): Retourne l‟indice de la première occurrence du
caractère.
Dorra ZAIBI
Conversions vers les types primitifs
77
Exemple :
int s = Integer.parseInt("111"); // returns 111
int s = Integer.parseInt("-121"); // returns -121
Cours POO/JAVA
NB: Si cette conversion n'est pas possible, une exception est levée:
NumberFormatException
Dorra ZAIBI
Les Chaînes modifiables « StringBuffer »
78
Resultat:
string buffer = Bonjour
After appending result is = Bonjour - à tous
Passage de paramètres
80
Lors des appels de méthode, les arguments sont toujours passés par
valeur
Dans le cas des types primitifs, c'est la valeur de l'argument qui est
recopiée dans le paramètre de la méthode
Cours POO/JAVA
Dans le cas des types primitifs, c'est la valeur de l'argument qui est
recopiée dans le paramètre de la méthode
Pour qu'une variable objet prenne une autre valeur que null, il faut être
capable d'y affecter une référence.
la classe Object.
Désallocation mémoire
86
Les objets qui ne sont plus référencés peuvent être « récupérés » par
le GC, pour « recycler » l'espace mémoire qu'ils occupent.
disparaissent...
Plan
87
Introduction
Opérateurs
Structure de contrôle
Héritage
Interface
Polymorphisme
Paquetage
Structure d‟une classe
88
Une classe est définie par son nom et son package d'appartenance
(e.g.: java.lang.String)
Exemple
Initialisation et valeur par défaut
91
– Dans le constructeur
Champ constant
92
Champ constant
Exemple: déclaration d‟un
94
attribut
Cours POO/JAVA
Dorra ZAIBI
Modificateurs d'accès
95
Il existe 3 modificateurs qui peuvent être utilisés pour définir les attributs
de visibilité des entités (classes, méthodes ou attributs) : public, private et
protected.
Modificateur Rôle
Une variable, méthode ou classe déclarée public est visible par tous les autres
public
objets.
Il n'existe pas de mot clé pour définir ce niveau, qui est le niveau par défaut
par défaut :
lorsqu'aucun modificateur n'est précisé. Cette déclaration permet à une entité
package
(classe, méthode ou variable) d'être visible par toutes les classes se trouvant dans
friendly
le même package.
Si une méthode ou une variable est déclarée protected, seules les méthodes
protected présentes dans le même package que cette classe ou ses sous-classes pourront y
accéder.
C'est le niveau de protection le plus fort. Les composants ne sont visibles qu'à
private
l'intérieur de la classe .
Modificateurs de visibilité
97
Exemple:
class MyClass
La classe sera accessible depuis toutes les classes du même
paquetege qu‟elle (on parle quelque fois de visibilité de paquetage)
Une méthode déclarée final ne peut pas être redéfinie dans une
sous-classe.
Elle peut être utile pour garantir qu‟aucune autre définition ne pourra
être donnée pour cette méthode (sécurité)
Cours POO/JAVA
Avantage:
Dorra ZAIBI
Remarque:
Toutes les méthodes à l‟intérieur de la classe
final seront implicitement finales
Cours POO/JAVA
Dorra ZAIBI
Modificateur : abstract
100
Champs statique
Sa valeur n'est pas propre à un objet mais à la classe. On y accède à
Cours POO/JAVA
Méthode statique
Dorra ZAIBI
Son code ne dépend pas d'un objet de la classe et peut être exécuté
même si aucun objet existe (e.g. main)
Exemple
103
}
Cours POO/JAVA
Dorra ZAIBI
Accès aux membres: champs et
méthodes
104
Méthode main()
Constructeur
112
Initialiser un objet
Les méthodes sont redéfinies avec le même nom, les mêmes types et le même nombre
d'arguments, sinon il s'agit d'une surcharge.
A chaque valeur de type primitif (boolean char double float int long)
Aux chaînes de caractères (String et char[])
Aux objets (Object)
119
Méthode println()
Exemple: Méthode println()
120
String.valueOf(Object x) retourne
"null" si jamais l'objet x vaut null
Il est possible de faire en sorte que l‟on ne puisse pas hériter d‟une
classe en particulier : utilisation du mot-clé « final »
Dorra ZAIBI Cours POO/JAVA
124
Exemple
Dorra ZAIBI Cours POO/JAVA
125
Exemple
Héritage
126
Remarque:
Pas d‟héritage multiple, pour des raisons de
performances et de complexité. A la place, il y a la
notion d‟interface.
Exemple:
class Felin {………}
class Lion extends Felin {………}
Lion lion = new Lion();
Cours POO/JAVA
Felin felin;
felin = lion; // OK conversion implicite : les lions sont des félins
lion = felin // ERREUR : tous les félins ne sont pas des lions
lion = (Lion)felin; // Conversion descendante explicite
Dorra ZAIBI
Redéfinition/Masquage
128
Pour la méthode
On peut accéder à celle immédiatement supérieure par
Cours POO/JAVA
super.m()
Dorra ZAIBI
Redéfinition/Réutilisation
131
des références),
clone: qui permet de copier l‟instance courante
Dans la plupart des cas, ces définitions par défaut ne sont pas
satisfaisantes pour vos propres classes
Dorra ZAIBI
=> Vous êtes amenés à les redéfinir pour permettre un affichage plus
explicite, une comparaison, ou une copie correcte de vos objets.
Redéfinition de toString()
140
Cours POO/JAVA
Dorra ZAIBI
Interface
141
Une classe qui implémente une interface doit implémenter toutes les
méthodes abstraites définies dans l'interface et dans les interfaces dont
elle hérite.
Dorra ZAIBI Cours POO/JAVA
149
Exemple
Héritage d‟interface
150
Remarque:
A la différence des classes une interface peut étendre plus d'une
interface à la fois
Cours POO/JAVA
Dorra ZAIBI
Héritage d‟interface
151
Intérêt
Les interfaces permettent de s‟affranchir d‟éventuelles
contraintes d‟héritage.
l‟interface
(éventuellement, faire un transtypage explicite vers
Cours POO/JAVA
l‟interface)
Dorra ZAIBI
Interface et type
153
155
Exemple
Dorra ZAIBI Cours POO/JAVA
156
Exemple
Dorra ZAIBI Cours POO/JAVA
157
Exemple
Polymorphisme
158
Une méthode polymorphe est ainsi une méthode déclarée dans une
super-classe et redéfinie dans une sous-classe
Une méthode Java est par défaut polymorphe. Java met en œuvre le
Cours POO/JAVA
dynamiquement à l'exécution.
Polymorphisme
159
162
Exemple
Méthode abstraite
163
Cercle n‟est pas une classe abstraite. Polygone est une classe abstraite.
Constructeur et polymorphisme
166
Résultat
b vaut 0
Modificateur final
167
Exemple Rôle
Cours POO/JAVA
170
Exemple
Paquetage
171
Paquetage: Utilisation
172
On a le droit de placer les classes dans des archives (zip, jar, cab)
Dans ce cas, la variable CLASSPATH doit référencer le fichier