Vous êtes sur la page 1sur 15

POO en Javammm

Pr: Ismaili Alaoui El Mehdi A.U: 2020/2021

Programmation orientée objet en Java


Chapitre 1: Les bases du langage Java

1 Éléments de base
1. 1 Les commentaires
Java possède trois sortes de commentaires, deux pour les commentaires ordinaires du code
source, et une troisième pour le système particulier de documentation javadoc.
å Le double slash (//) précède les commentaires dans une ligne. Tout le texte situé entre le
double slash et la fin de ligne est ignoré.

p Exemple : int i // ceci est une variable entière

å Les symboles /* et */ entourent des commentaires multilignes. Le texte compris entre


ces deux bornes est ignoré.

p Exemple :
/* ceci est un commentaire
sur plusieurs lignes
... qui se termine ici */

Les commentaires ne s’imbriquent pas ; autrement dit, vous ne pouvez pas placer un
commen- taire à l’intérieur d’un commentaire.
å Enfin, les commentaires spéciaux destinés au système javadoc commencent avec /** et
se terminent par */. Ce polycopié ne traite pas javadoc. Pour obtenir des informations
sur cet outil, consultez la documentation fournie avec le JDK ou la page d’accueil Java
de Sun (http://java.sun.com).

1. 2 Notion de variable
Une variable peut être vue comme un contenant qui a un nom et une taille et définit une case
mémoire typée et nommée, dans laquelle on peut stocker des valeurs.
å Le type détermine la nature d’informations qui sera enregistré, ainsi que les opérations
qui pourront être effectuées sur ces informations.
2

å Le nom est représenté par un identificateur.


Une variable doit être déclarée avant d’être utilisée dans un programme. Sa déclaration se com-
pose d’un type et d’un nom de variable :

— Déclaration simple : type identificateur;


— Déclaration multiple : type identif1, identif2, ..., identifN;

Lorsqu’une variable a été déclarée, on peut lui attribuer une valeur au moyen de l’opérateur
d’affectation (=), de les façons suivantes:
— Taper une valeur après le signe égal : x = 12 ; y = 20 ;
— Affecter la valeur d’une variable à une autre : z = x ;
— Employer une expression combinant les deux : x = y + 3 ;

1. 3 Identificateurs

Les identificateurs sont des noms symboliques permettant de référencer les éléments des
programmes Java (variables, fonctions, ...). Que ce soit pour nommer une variable, vous devez
respecter les règles suivantes :
å Le nom doit commencer par une minuscule, un signe dollar ($) ou un (_) (underscore).
å Le nom ne peut pas contenir:
— d’espaces
— de caractères spéciaux et accentués (é, à, ç, ï, etc..).
å Le nom peut inclure des chiffres, mais ne doit pas commencer par un chiffre.
Exp: nbre1, nbre2.
å Quand une variable est composée de plusieurs mots, tous les mots sauf le premier com-
mencent par une majuscule.
Exp: nombrePlusGrand, vitesseMax, lireNom.
å Java distingue les minuscules et les majuscules (valeur 6= de VALEUR).
å Les mots réservés du langage sont exclus (voir liste à la section suivante).

1. 4 Mots-clé réservés

Les mots suivant sont des mots clés réservés pour le langage et ne peuvent être utilisés.
1 Éléments de base 3

1. 5 Types primitifs
On distingue 4 catégories de types primitifs (entier, réel, booléens, caractères). L’intervalle
de valeurs représentables pour chacun des types peut varier en fonction de l’espace mémoire
qu’ils occupent.

1. 5. 1 Types entiers
En Java, tous les types permettant de représenter des entiers sont signés. Ainsi, sur n bits, on
peut coder les entiers de [−2n−1 2n−1 −1]. Les valeurs négatives sont encodées en complément
à 2. Le tableau suivant résume les types entiers:

Type Taille Intervalle représentable


byte 8 bits Très petit nombre entier signé [−27 27 − 1]
short 16 bits Nombre entier signé court [−215 215 − 1]
int 32 bits Nombre entier signé [−231 231 − 1]
long 64 bits Nombre entier signé long [−263 263 − 1]

p Exemple:
byte x=012;
short x= 32;
short x=33000; // Hors limite
int x=12;
long x= 200;

Lorsque les deux opérandes sont de type entier, l’opérateur / calcule la division entière et l’opé-
rateur calcule le reste de cette division.
4

p Exemple:
int x = 7;
int y = 2;
int z = x / y; // z contient la valeur 3
int t = x % y; // t contient la valeur 1

1. 5. 2 Types réels
En Java il existe deux types de représentation pour les nombres réels : simple et double
précision (respectivement les types float et double).

Type Taille Intervalle représentable


float 32 bits Nombre en virgule flottante ±3.4 ∗ 1038
double 64 bits Nombre en virgule flottante ±1.7 ∗ 10308

p Exemple:
float pi= 3.14;// le point joue le rôle de la virgule
double x=45.6459;

Lorsqu’au moins une des opérandes est de type réel, l’opérateur / calcule la division réelle.

p Exemple:
double x = 7;
double y = 2;
double z = x / y; //La variable z contient la valeur 3.5

1. 5. 3 Types booléens
Les valeurs booléens (logiques) ont deux états : vrai ou faux. En Java une telle valeur est
représentée par une variable de type boolean. Deux littéraux seulement peuvent être employés
pour représenter une valeur booléenne : true et false.

p Exemple:
int a = 1, b = 0;
boolean bool = a < b; //bool a la valeur false
boolean c=true;

Les variables de type boolean non initialisées ont automatiquement la valeur false.
1 Éléments de base 5

1. 5. 4 Types caractère

Le type caractère peut correspondre à n’importe quel symbole du clavier (lettre en majuscule
ou minuscule, chiffre, ponctuation et symboles). Comme toute donnée numérique, un caractère
est encodé sous forme d’une suite de 0 et de 1 que l’on peut interpréter comme un entier non
signé.

p Exemple:
char c1=’a’;// ne pas oublier les ’ ’
char c2=’A’;
char c3=14;
char c4 = ’ ’; // espace

Certains caractères avec notation spéciale :

— ’\b’ pour le retour arriére (backspace).


— ’\t’ pour une tabulation.
— ’\n’ pour un saut de ligne.
— ’\f’ pour un saut de page
— ’\r’ pour un retour chariot.
— ’\"’ pour un guillemet.
— ’\’ pour une apostrophe.
— ’\\ ’ pour \.

1. 5. 5 Règles à respecter pour l’affectation de types primitifs


— Il est possible de mettre une petite valeur dans une grande variable :
int x = 32;
long l;
l = x;
à Intuitivement on peut toujours verser le contenu d’un petit verre dans un grand verre.
— On ne peut pas mettre une grande valeur dans une petite variable :
byte b;
int x = 32;
b = x;
à Le compilateur n’acceptera pas la troisème affectation, même si 32 est assez petit
pour entrer dans un byte. En fait, le compilateur ne connaît pas la valeur de x. Il sait
seulement que x est un entier. Et un entier peut ne pas entrer dans un byte.
6

1. 6 Les conversions de type forcées (casting)


Il est possible de convertir explicitement une valeur en un type quelconque en forçant la
transformation à l’aide de la syntaxe suivante: Destination = (T ype_de_destination)Source;

p Exemple 1:
int i = 17;
long l=i; // automatique
byte b = i; // interdit
b = (byte)i; // Conversion explicite (int -> byte)
float f = 23.86;
i = (int)f;// Valeur tronquée (i==23)

p Exemple 2:
char A=1; int B=2;
float C = A/B; // 0 affecté à C
float D = (float)A/B; // 0.5 affecté à D

Remarque: Seul le type boolean ne peut être converti en un autre type.

Le tableau suivant montre les conversions possibles:

Figure 1 – Tableau récapitulatif de conversion de types


2 Opérateurs et expressions 7

1. 7 Constantes
Les constantes stockent des valeurs simples utiles aux programmes, suivant le principe : ce
que vous tapez, c’est aussi ce que vous obtenez. Le mot clef final indique que la valeur d’une
variable ne doit pas être modifiée pendant l’exécution du programme.

p Exemple:
final double PI = 3.14159;// PI n’est plus modifiable
final int T ;
T = 8;
PI = 3.14; //Erreur : PI est déclarée final

p Remarque: Pourquoi déclarer des constantes ?


å La lecture du programme sera plus aisée si l’on a donné à la constante un nom signifi-
catif :
Exp : final float taux_tva=0.20;
å La modification du programme sera plus aisée si la "constante" vient à changer. Ainsi
dans le cas précédent, si le taux de tva passe à 33%, la seule modification à faire sera de
modifier l’instruction définissant sa valeur :
final float taux_tva=0.33;
Si l’on avait utilisé 0.20 explicitement dans le programme, ce serait alors de nombreuses
instructions qu’il faudrait modifier.

2 Opérateurs et expressions
Dans Java, une expression est la plus simple forme d’une instruction accomplissant quelque
chose. Toutes les expressions, lorsqu’elles sont évaluées, retournent une valeur (les autres ins-
tructions ne le font pas nécessairement).
Les opérations arithmétiques et les tests d’égalité sont des expressions. Une expression retourne
une valeur, qui est attribuée à une variable ou testée dans d’autres instructions.
La plupart des expressions Java utilisent des opérateurs. Les opérateurs sont des symboles spé-
ciaux, pour des opérations arithmétiques, différentes formes d’affectation, des opérations d’in-
crémentation ou de décrémentation, ainsi que pour des opérations logiques.

2. 1 Opérateurs arithmétiques
— Opérateurs : +, -, *, /, % (Modulo =reste de la division entière).
— Effectuent des opérations arithmétiques et retournent des résultats numériques.
— Le type du résultat dépend du type des opérandes (paramètres de l’opération).
8

2. 2 Opérateurs de comparaison
— Opérateurs: == (égal), != (différent), <, >, <=, >=.
— Permettent de comparer deux variables d’un même type primitif (entier, flottant, booléen
et caractère) et retournent une valeur booléenne.

Attention, ne pas confondre l’opérateur d’affectation (=) avec celui d’égalité (==).
— x = 17 : Affecte la valeur 17 à la variable x (x est modifiée).
— x == 17 : Teste la valeur de la variable x, renvoie true si elle vaut 17 et false sinon (x
n’est pas modifiée).

Les expressions composées doivent être complètement parenthésées:

p Exemple:
boolean x= true;
x= (5==5); // x vaut vrai
x= (5!=4); // x vaut vrai
x= (5>5); // x vaut faux
x= (5<=5); // x vaut vrai

2. 3 Opérateurs logiques
— Effectuent des opérations logiques et retournent des résultats booléens.

Opérateur Définition
! NON logique
& ET logique
&& ET logique conditionnel
(le 2 ème opérande n’est évalué que si le 1 er est vrai)
| OU logique
|| OU logique conditionnel
(le 2 ème opérande n’est évalué que si le 1 er est faux)

p Exemple:
boolean a,b, c;
a= true;
b= false;
c= (a && b); // c vaut false
2 Opérateurs et expressions 9

c= (a || b); // c vaut true


c= !(a && b); // c vaut true
c=!a; // c vaut false

2. 4 Opérateurs d’affectation
L’affectation des variables est une forme d’expression qui retourne une valeur. Aussi est-il
pos- sible de chaîner des variables : x = y = z = 0;
Dans cet exemple, les trois variables prennent la valeur 0.
La partie droite de l’expression d’affectation est toujours évaluée avant l’opération d’affectation.
Une expression comme x = x + 2 est donc traitée ainsi : 2 est ajouté à la valeur de x, puis le
résultat est affecté à x. Ce type d’opération est tellement courant que Java en possède une version
abrégée empruntée à C et C++. Le Tableau suivant liste ces opérateurs d’affectation combinée.

Expression Signification
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x /= y x=x/y
x %= y x=x%y
x& = y x=x&y

2. 5 Opérateurs d’incrémentation et de décrémentation


Comme en C ou C++, les opérateurs ++ et - - permettent d’incrémenter ou de décrémenter
de 1 la valeur d’une variable. Par exemple, x++ ajoute 1 à la valeur de x comme le ferait l’ex-
pression x = x + 1. De la même façon, x- - diminue de 1 la valeur de x.
Ces deux opérateurs se placent devant ou derrière la valeur à incrémenter ou à décrémenter.
Dans le cas d’une expression simple, leur position importe peu. A l’inverse, pour des affecta-
tions complexes avec attribution du résultat de l’expression qui incrémente ou décrémente, ce
choix fait toute la différence.
Soit les deux expressions suivantes :

y = x;
å y = x++;//postfixé ⇔
x = x + 1;

x = x + 1;
å y = ++x; //préfixé ⇔
y = x;

Elles donnent des résultats différents. Quand les opérateurs sont placés après la valeur (x++
ou x- -), y prend la valeur de x avant incrémentation. Avec la notation en préfixe, la valeur de
10

x est attribuée à y après incrémentation. L’exemple suivant illustre le fonctionnement de ces


opérateurs.

p Exemple:
int m = 1;
m++; //m vaut 2
int n = 2;
int a = 2 * ++m; //a vaut 6, m vaut 3
int b = 2 * n++; //b vaut 4, n vaut 3
int c= ++m + ++m * ++m; // c vaut 4+5*6=34

2. 6 Expressions

Une expression peut être une valeur, une variable ou une opération constituée de variables
reliées par des opérateurs. L’évaluation de l’expression fournit une valeur unique qui est le
résultat de l’opération.

p Exemple:
x = 123.4
(x * 5) / 2
i =0
i++
a=(5*x+10*y)*2
(a+b)>=100

2. 7 Exercice d’application

Si l’on déclare les variables suivantes :


byte b = 5;
short s = 8;
int i = 9;
float f = 2.5;
double d = 5.2;

1. Déterminer les types et les valeurs des expressions suivantes :


3 Lire et écrire des données 11

Expression Valeur Type Expression Valeur Type


d/2 2.6 réel b&6 4 entier
s*4 32 entier i*4/12%6 3 entier
(b+s)>(5*f) true booléen s==5 | !false true booléen
i/4 + d 7.2 réel i/4 2 entier
i++ 9 entier (float)i/4 2.25 réel
++i 10 entier 1/3 0 entier

3 Lire et écrire des données


3. 1 Écriture des données sur l’écran
— Pour afficher un texte, valeur, variable ou expression sur l’écran, on utilise les lignes de
code suivantes:

à System.out.print(...); // Affichage (reste sur la même ligne).


à System.out.println(...); // Affichage et retour à la ligne.

p Exemple:
å Mettre une variable dans l’argument de la méthode à l’aide de l’opérateur de concaténa-
tion + :
Exp: System.out.println("x vaut " + x + " et y vaut " + y);
å On peut mettre le calcul directement dans l’instruction d’affichage :
Exp: System.out.println("Le produit est : " + x * y);
å Utiliser des parenthéses si le calcul est une addition :
Exp: System.out.println("La somme est : " + (x + y));

3. 2 Lecture des données à partir du clavier


La classe Scanner permet de récupérer une valeur saisie au clavier à la manière de la fonction
scanf en langage C. Il suffit de créer un objet Scanner avec en argument le flux à lire, puis
appeler une méthode nextXXX() selon le type XXX à lire. La chaîne XXX= Byte, Short, Int,
Long, Float, Double, Line.
Voici un exemple d’entrée d’un entier au clavier:

//On importe la classe Scanner pour la rendre visible.


import java.util.Scanner;
System.out.println("Veuillez saisir un nombre :");
12

// On crée un objet Scanner et on l’affecte à la référence clavier.


Scanner clavier = new Scanner(System.in);
//On lit un entier et on le stocke dans la variable n.
int n = clavier.nextInt();
System.out.println("Vous avez saisi le nombre : " + n);

La méthode next() retourne une chaîne de caractères s’arrête au premier délimiteur(espace


/ retour à la ligne / tabulation). Tandis que La méthode nextLine() récupère le contenu de toute
la ligne saisie et replace la "tête de lecture" au début d’une autre ligne.

p Exemple:
System.out.println("Veuillez saisir un mot :");
Scanner clavier = new Scanner(System.in);
String txt = clavier.nextLine();
System.out.println("Vous avez saisi : " + txt);

Remarque: Il y a un type de variables primitives qui n’est pas pris en compte par la classe
Scanner : il s’agit du type char. Voici comment on pourrait récupérer un caractère :

p Exemple:
System.out.println("Entrer une lettre :");
Scanner clavier = new Scanner(System.in);
String txt = clavier.nextLine();
char carac = txt.charAt(0);
System.out.println("Vous avez saisi le caractère : " + carac);

Nous avons récupéré une chaîne de caractères, puis utilisé une méthode de l’objet String
(ici, charAt(0) ) afin de récupérer le premier caractère saisi.

4 Comment développer une application Java?


4. 1 Structure d’un programme
De manière générale, la structure d’un programme simple est toujours la même. Cette struc-
ture de base doit être apprise par cœur, car elle constitue le squelette du programme. Il est
conseillé, lors de la création d’un programme, de commencer par écrire cette structure. En effet,
4 Comment développer une application Java? 13

une fois cette structure créée, le programme est fonctionnel : il peut être compilé et exécuté.
Bien entendu à ce stade, le programme ne fait strictement rien puisqu’il n’y a aucune instruc-
tion, seulement des commentaires.

public class Exemple {


. public static void main(String[] args) {
. // bloc d’instructions du programme exécutées lors du lancement du programme
. }
}

å Tout code java doit être défini à l’intérieur d’une classe.


å La description de la classe est effectuée à l’intérieur d’un bloc { }.
å Le code de la classe doit être enregistré dans un fichier de même nom que la classe
Exemple .java.
å Toute application java a au moins une méthode main. Attention, pas une par classe,
mais au moins une par application. La méthode main correspond à l’endroit où le pro-
gramme commence à s’exécuter.
Voici un exemple de programme complet :

public class PremiereApplication{


. public static void main(String [] args){
. System.out.println("Bonjour à tous");
. System.out.println("Je m’appelle Ismaili El Mehdi");
. }
}
Le résultat du programme consiste à afficher les 2 lignes suivantes :
Bonjour à tous
Je m’appelle Ismaili El Mehdi

4. 2 La plate-forme Java
å La plate-forme est le matériel et/ou l’environnement logiciel dans lequel un programme
s’exécute. Elle est composée de deux parties API et JVM, comme illustré dans la figure
(2).
ç API : "Interface pour la programmation d’applications" Ensemble de bibliothèques
permettant une programmation plus aisée car les fonctions deviennent indépendantes
du matériel.
ç JVM (Java Virtual Machine): Le logiciel qui interpréte le byte code généré par le
compilateur Java.
14

Figure 2 – Plate-forme Java

å Un programme Java est exécuté par la JVM, qui s’utilise de l’API.


å Il y a des JVM pour la plupart des systèmes (Win, Linux, Mac OS,...).
å Si un système possède une JVM, il peut exécuter le byte code généré sur n’importe quel
autre système.

4. 3 Principales étapes d’un développement

1. Création du code source: On crée un document source avec une extension .java (ou-
til :IDE)
2. Compilation:
å En Java, le code source n’est pas traduit directement en langage machine.
å Le compilateur Java traduit le code source en un code intermédiaire appelé byte code
indépendant de la machine.
3. Interprétation:
å La JVM interpréte le byte code généré par le compilateur Java et le traduit en langage
machine et lance son exécution.

4. 4 Les outils de développement


Les différentes plate-formes java :
— JEE "Java Enterprise Edition": Destinée au développement d’applications "d’entreprise"
robustes. Simplifier le développemnt d’applications distribuées et articulées autours de
Web.
— JME "Java Micro Edition": Édition qui sert à écrire des applications embarquées. Exp. :
téléphone mobile, carte à puce,...
4 Comment développer une application Java? 15

— JSE "Java Standard Edition": Fourni les compilateurs, outils et les APIs pour écrire,
déployer et exécuter des applications.
å JRE "Java Runtime Environment"=Environnement d’exécution
— Contient la plate-forme Java (API+JVM).
å JDK "Java Development Kit"=Environnement de programmation
— Contient la JRE;
— Le langage Java pour écrire le code source de votre programme;
— Le compilateur de code source en byte code;
— D’autres outils de base pour le développement d’applications Java;
— La documentation (javadoc).

Vous aimerez peut-être aussi