Vous êtes sur la page 1sur 78

CHAPITRE 1 : INTRODUCTION

1.1. PRESENTATION
Java est une technologie composée d'un langage de programmation
orienté objet et d'un environnement d'exécution. Préalablement
nommée Oak, il a été créé par James Gosling et Patrick Naughton
chez Sun Microsystems avec le soutien de Bill Joy. Le langage Java fut
officiellement présenté le 23 mai 1995 au SunWorld.

Java est à la fois un langage de programmation et une plateforme


d'exécution. Le langage Java à la particularité principale d'être
portable sur plusieurs systèmes d'exploitation tels que Windows,
MacOS ou Linux. C'est la plateforme qui garantit la portabilité des
applications développées en Java.

Le langage reprend en grande partie la syntaxe du langage C++, très


utilisé par les informaticiens. Néanmoins, Java a été épuré des
concepts les plus subtils du C++ et à la fois les plus déroutants, tels
que les pointeurs. Les concepteurs ont privilégié l'approche orientée
objet de sorte qu'en Java, tout est objet à l'exception des primitives
(nombres entiers, nombres à virgule flottante, etc.).

Java permet de développer des applications autonomes mais aussi,


et surtout, des applications client-serveur. Côté client, les applets
sont à l'origine de la notoriété du langage. C'est surtout côté serveur
que Java s'est imposé dans le milieu de l'entreprise grâce aux
servlets, le pendant serveur des applets, et plus récemment les JSP
(Java Server Pages) qui peuvent se substituer à PHP et ASP.

Les applications Java peuvent être exécutées sur tous les systèmes
d'exploitation pour lesquels a été développée une plateforme Java,
dont le nom technique est JRE (Java Runtime Environment -

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 1
Environnement d'exécution Java). Cette dernière est constituée
d'une JVM (Java Virtual Machine- Machine Virtuelle Java), le
programme qui interprète le code Java et le convertit en code natif.
Mais le JRE est surtout constitué d'une bibliothèque standard à partir
de laquelle doivent être développés tous les programmes en Java.
C'est la garantie de portabilités qui a fait la réussite de Java dans les
architectures client-serveur en facilitant la migration entre serveurs,
très difficile pour les gros systèmes.

Dans le cadre de ce cours notre objectif sera d'étudier les concepts


fondamentaux de la programmation objet à l'aide du langage java.
Le but est d'acquérir les bases permettant ensuite de développer des
applications plus consistantes.

1.2. HISTORIQUE DE JAVA


-Naissance ≈1991 : conception d'un langage applicable à de petits
appareils électriques (on parle de code embarqué) par la société Sun
Microsystem. La syntaxe est proche du C++, utilisant le concept de
machine virtuelle. Le code source est traduit dans un langage
universel disposant de fonctionnalités communes à toutes les
machines. Ce code intermédiaire est dit formé de byte code et est
compact et portable sur n'importe quelle machine : il suffit qu'elle
dispose d'un programme permettant d'interpréter le langage, on
parle de machine virtuelle. Ce projet s'appelait Oak.
-Eté 1992 : première présentation interne des possibilités de Oak. Un
appareil appelé "Star Seven" permet de visualiser une animation
montrant Duke, l'actuelle mascotte de Java.
-1994 : Développement de HotJava, un navigateur internet
entièrement écrit en Java capable d'exécuter des applets écrites en
byte code.
-1995 : lancement officiel de Java 1.0
-1996 : lancement du JDK 1.0 et des versions 1.01 et 1.02 du langage
JAVA (250 classes dans la bibliothèque).
-1998 : version 1.1 du JDK (500 classes).
-1999 : version 1.2 JDK que l'on appelle Java2 (1500 classes).
-2000 : version de J2SE (Java 2 Standard Edition) 1.3 (1800 classes).

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 2
-2002 : version de J2SE (Java 2 Standard Edition) 1.4 (≈2700
classes), applications web et entreprises.
-2003 : version de J2EE (Java 2 Entreprise Edition) 1.4.
-2004 : version du J2SE 1.5 également appelé J2SE 5.0 ou Java 5
(≈3500 classes).
-2006 : version du J2SE 1.6 également appelé J2SE 6.0 ou Java 6
(≈3800 classes).
-2011 : version du J2SE 1.7 également appelé J2SE 7.0 ou Java 7
(≈3900 classes).
- 2014 : version du J2SE 1.8 également appelé J2SE 8.0 ou Java 8
(≈4000 classes).

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 3
CHAPITRE 2 : BASES DE JAVA
2.1. Premier programme en java
Java machine virtuelle
JVM (java machine virtuel) a pour rôle d’exécuter les
programmes java sur votre machine, c’est ce qui fait que les
programmes java soit dit « portable ».
Un programme java est avant d’être utilisé par la machine
virtuelle, pré-compilés en byte cote (par votre IDE). Ce byte
compréhensible que par une jvm, et c’est celle-ci qui va faire
le lien entre ce code et votre machine.
Quel que soit l’OS sous lequel a été codé un programme java,
m’importe quelle machine pourra l’exécuter si elle dispose
d’une jvm.
Un byte code n’est d’autre qu’un code intermédiaire entre
votre code java et le code machine. Ce code se trouve dans un
fichier pré-compilés de vos programmes ; en java, unfichier
source a l’extension (.java) et un fichier précompilé a
l’extension (.class) c’est dans ce dernier que vous pourrez voir
ce byte code.
Une classe permet de d’écrire un ensemble d'objets ayant une
structure de données commune et disposant de mêmes
méthodes.
Un programme java est composé d’au moins une classe, cette
classe doit contenir une méthode main, qui est la méthode
principale du programme, c’est elle que la jvm va chercher afin
de lancer votre programme.
Une méthode est une suite d’instruction à exécuter.
Une méthode contient :
Un entête : identité de la méthode

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 4
Un corps : entre accolade {…}
Une valeur de retour : seule la méthode void qui ne renvoie
rien.
A partir de maintenant jusqu’à ce que nous parlerons de la
programmation orienté objet, nous allons faire ce qu’on
appelle des programmes impératifs ou procéduraux.

2.1.1. Premier programme


Ecrire un programme java qui salue les étudiants de G3 math
Public class G3math {
Public static void main (String [ ] args) {
System.out.print(« bonjour G3Math ») }
}

2.1.2. Environnement de développement intégré


En effet, pour bien programmer en java nous allons utiliser
netbeans qui est un environnement de développement
intégré, placé en open source par sun en juin 2000 sous licence
CDDL et GPLv2. En plus de java, netbeans permet la prise en
charge native de divers langages tels le c, le c++, le java script,
php, html, le groovy…
Programmé en java

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 5
Environnement : Plateforme java

demarrage de netbeans

Expliquons un peu cette ligne de code. Littéralement, elle


signifie « méthode print () va écrire bonjour G3Math. En
utilisant l’objet out de la classe System.
 System : ceci correspond à l’appel d’une classe qui s’appelle
« system ». C’est une classe utilitaire qui permet surtout
d’utiliser l’entrée et la sortie standard.
 Out : Objet de la classe system qui gère la sortie Standard.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 6
 Print : Méthode qui écrit dans la console la chaine passé en
paramètre.
 Println : à la place de print vous permet d’aller à la ligne
suivante. Ou \n à la fin de la chaine de caractère.
 \n : intègre un retour à la ligne
 \r : va mettre un retour chariot
 \ t : va faire une tabulation.
2.2. Variables et les opérateurs
2.2.1. Variable
Une variable représente une donnée modifiable. Elle est logée
dans un emplacement mémoire repéré par une adresse. Une
Variable est une case mémoire réservée pour stocker une
information.
Par contre, une constante est une donnée dont la valeur ne
peut être modifiée .Elle est aussi logée dans un emplacement
mémoire.

2.2.1.b. Types de variables


En java, nous avons deux types de variables :
 Des variables de types simples ou « primitif » ;
 Des variables de types complexes ou encore des objets.
Ce qu’on appelle des types simples, en java ce sont tout
bonnement des nombres, des réels, des booléens ou encore
des caractères. Mais vous allez voir qu’il a plusieurs façons de
déclarer certain de ces types.
Les variables de type numériques
- byte : (1 octet) 28 pour contenir les entrées -128 et 127
- le short : (2 octet) pour contenir les entrées compris entre -
32768 et +32767

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 7
- le int (4 octects) va de -2*109 à 2*109-1
- le long : (8 octets) de -9*1018 à 9*1018-1
-float : (4 octets) correspond à des nombres avec virgule
flotante.
- le double : (8 octets) est identiques à float, si ce n’est qu’il
contient un nombre plus grand derrière la virgule.
Type de Taille en
Plage des valeurs Description
données mémoire
Boolean 2 oct True – False Vrai et Faux
Byte 1 oct 0 à 255 Suite de bits
String
Longueur
(longueur 1 à environ 2 milliards Chaînes de caractères
de chaîne
fixe)
String 10 oct +
(longueur longueur 0 à environ 2 milliards Chaînes de caractères
variable) de chaîne
short 2oct De -32.768 à 32.767
de –2.147.483.648 à
int 4 oct 2.147.483. 647 Entiers
De -2.147.483.648 à
long 8 oct 2.147.483.647 Entiers longs
De -3,402823.1038 à -
1,401298.10-45
Nombres à virgule
pour les valeurs négatives
float 4 oct flottante, simple
De 1,401298.10-45 à
précision
3,402823.1038
pour les valeurs positives
De -1,79769313486232.10308
à
-4,94065645841247.10-324
Nombres à virgule
pour les valeurs négatives
double 8 oct flottante, double
De 4,94065645841247.10-324
précision
à
1,79769313486232.10308
pour les valeurs positives
char 2 oct un caractère Unicode un caractère Unicode

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 8
Variable du type chaine de caractère
 Le type char : contient une chaine stocké entre quotes ‘ a’
Ex char caractere ;
Caractere =‘A’
 Le type String : contient une chaine de caractère. Ici il ne s’agit
pas d’une variable mais d’un objet qui instancié une classe qui
existe dans java, nous pouvons l’initialiser en utilisant
l’operateur unaire new ().dont on se sert pour reserver un
emplacement mémoire a un Objet (mais nous reparlerons de
tout ceci dans un autre chapitre).
Ex : String hp ;
hp= « pamela est la fille de papa tharris » ;
String nom=new String () ;
nom= « jonathan est le plus calme de la famille »
String commence par le majuscule, et pour l’initialisation on
utilise ici des doubles quottes « ».
Convention de nommage
 tous vos noms de classes doivent commencer par une
majuscule ;
 tous vos noms de variables doivent commencer par une
minuscule.
 Si un nom de variable est un nom composé, celui-ci commence
par une minuscule et son composé par une majuscule. Et ce
sans séparation.
 Tout ceci sans accent !!!!!!!!!
Ex : Public class Mbuyi { } ;
Public Dinanga { } ;
String jour ;
int nombre ;
int nombreEntier ;

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 9
Veuillez à bien respecter la casse (majuscule et minuscule)
car une déclaration de char à la place de Char est une erreur
ou une autre chose.
On peut très bien compacter la phase de déclaration et
l’initialisation en une seule phase.
Ex : int entier = 32 ;
char = ‘g’ ;
Et lorsque nous avons plusieurs variables d’un même type,
nous pouvons compacter tout ceci en une déclaration.
Ex : int entier, nombre=4 ,lgr =12 ;+

2.2.1.b. déclaration d’une variable


En Java, comme dans beaucoup de langages de programmation,
avant d'utiliser une variable, nous devons d'abord définir ce qu'elle
va contenir.
Une déclaration de variable se fait comme suit :
 « type de variable » « non de la variable » ;
 Final « type de variable » « non de la variable » ;

Le mot clé final permet de déclarer des constantes à l'aide de


variables.
Cette opération se termine par un point-virgule « ; » comme
toutes les instructions de ce langage ; ensuite on initialise en
rentrant une valeur

2.2.2. Opérateurs
Opérateurs arithmétiques
op résultats opérateurs résultats
+ addition += Assignation additive
- soustraction -= Assignation soustractive
* multiplication *= Assignation
multiplicative
/ division /= Assignation

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 10
divisionnelle
% modulo %= Assignation modulo
++ incrémentation -- décrémentation

Opérateurs relationnels
operateurs résultats
== égale
!= Diffèrent
< inferieur
<= Inferieur ou égale à
> supérieur
>= Supérieur ou égale à

 Seul les types numériques peuvent être comparés avec les


opérateurs. D’ordre entiers, flottants et caractères peuvent
être comparés avec les opérateurs d’ordre strict.
 Chaque opérateur renvoie un type boolean.
Opérateurs booléens logique
Les opérateurs suivants agissent uniquement sur des
opérandes boolean
Opérateurs résultats
& Et logique
&= Assignation avec ET
! Ou logique
!= Assignation avec Ou
^ Ou exclusive
^= Assignation avec OU exclusive
|| OU avec court-circuit

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 11
&& ET avec court-circuit

2.2.3. Les conversion ou le cast

La hiérarchie de conversion permettant de ne pas dénaturer lavaleur


initiale : int → long→float →double.
Note : par défaut, pour les types byte, char, short, si un de ces types
apparait dans une expression, la valeur est d'abord convertie en int.
Exemple :
short p1=1, p2=1, p3=1;
float x=2;
L'évaluation de p1*p2+p3*x est faite comme le montre suite :

Figure 1: notion de cast


Ce type de conversion s’appelle une conversion d’ajustement
ou Cast de variable.

Conversion d’un type vers un autre type numérique


Vous l’avez vu : nous pouvons passer directement d’un int a un
type float. Mais ceci ne fonctionnera pas dans le sens contraire
(inverse) sans une perte de précision.
Lorsque nous castons un double en int en ou de float en int ;
la valeur de ce double ou de float est troquée. Ce qui signifie
que l’int en question prendra la valeur entière du doublequelle
que soit la valeur des décimales.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 12
double i=1.923 ;
int k=(int)i ; ici nous aurons comme résultat 1.
Sachez que l’affectation, le calcul, le cast, le test,
l’incrémentation… toutes ces choses sont des opérations ! et
java les fait dans un certain ordre, suivant une priorité.
 Un calcul ;
 Un cast de valeur de résultat de calcul ;
 Une affectation dans la variable résultat ;
Exemple
double res= (double)(nombre/nbre);ici le résultat sera 1 pour
bien le faire, il faudrait que le programme donne lui-même le
priorité c’est-à-dire

Conversion d’un type numérique en String vise versa


Voici les méthodes à appliquer
Code
Int i=12 ;
String l= new String () ;
I=l.valueOf(i) ;

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 13
l.est donc une variable de type String contenant de caractère
12. Ceci fonctionne aussi avec les autres types numériques. La
méthode valueOf () renvoie une représentation chaine pour
les types primitifs. Voyons maintenant comment faire marche
arrière,en partant de ce que nous venons de faire.
int i=12 ;
String j=new String () ;
j=j.valueOf(i) ;
int k=Integer.valueOf(j) ;

2.3. Lire les entrées clavier


2.3.1. Utilisation de l’objet Scanner
Ici, nous verrons comment lire les entrées clavier. Un
programme devient encore plus intéressant si l’utilisateur
peut lui-même saisir les données, pour que java puisse lire ce
que vous tapez au clavier, vous allez devoir utiliser un objet,
de type SCANNER. Pour instancier un objet c’est-à-dire créer
un nouvel objet afin de s’en servir, vous devez utiliser
l’opérateur unaire new.
Cet objet peut prendre different paramètre mais ici, nous n’en
utiliserons qu’un. Celui qui correspond justement à l’entrée
standard en java. Lorsque vous faites System.out.println() ;
cette méthode println() sur la sortie standard; or ici, nous
allons utiliser l’entrée Standard SYSTEM.IN. Avant de dire à
java de lire ce que nous allons taper au clavier, nous devons
instancier un objet Scanner.

Tout d’abord, vous devez savoir que le langage java n’est


qu’une multitude de classes ordonnées en package. Par
Ass Eddy MUTOMBO SHANGA /JAVA BASIC
(Elèmentaire) 14
défaut, java incorpore automatiquement un package
contenant les fondements de java : java.lang. C’est dans ce
package qu’il y a les variables de base, la class system et
beaucoup d’autres choses qui vous permettent de faire des
programmes.
Un package est un ensemble de classe.
Les classes qui se trouvent dans les autres package que
java.lang sont à import à la main dans vos classes java pour
pouvoir vous en servir.

2.3.2. Récupérez le contenu saisi


La ligne qui nous aideras de récupérer les donner c’est String
str=sc.nextLine ();
String déclaration de la valeur tapée
str= la variable qui va stocker la valeur saisie ou tapée
sc= appelle de l’objet créer dans la classe scanner.
 On peut récupérer un int int
str=sc.nextInt() ;
 On peut récupérer un double double
str=sc.nextDouble()…

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 15
code java

NOTE : il y a un type de variable primitive qui n’est pas pris en


compte par la classe Scanner, il s’agit de type char mais quoi
faire s’il faut récupérer un caractère? Dans ce cas on utilise la
méthode charAt () avec en paramètre 0 si nous voulons
récupérer le premier caractère.
String str=sc.nextLine () ;
Char caract=str.charAt(0) ;
Quelques exemples
 Calculer le périmètre d’un cercle, avec le rayon saisi par
l’utilisateur

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 16
code java

 Ecrire un programme qui demande un nombre à l’utilisateur,


puis java calcule son carré.

 Ecrire un programme qui lit le prix hors taxe d’un article, le


nombre d’article et le taux de TVA et qui fournit le prix total

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 17
TTC correspondant. Faire en sorte que des libellés
apparaissent clairement.

code java et résultat

2.4. Les conditions


2.4.1. La structure if…Else
Elles servent tout simplement à pouvoir constituer un
programme, en examinant les différents cas.
La structure de ces conditions ressemble à ca :
If (condition) { instruction 1}
Else {suite instruction}

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 18
Ceci peut se traduire par « si …si non »
Ex : 1) Ecrire un programme qui permet à l’utilisateur de saisir
un nombre et de dire si ce nombre et de dire si ce nombre est
positif.

Bien observé. En fait, les accolades sont la structure "normale"


des conditions mais, lorsque le code à l'intérieur d'une d'entre
elles n'est composé que d'une seule ligne de code, les
accolades deviennent facultatives.
Nous voulons que notre programme affiche "le nombre est nul",
lorsque i est égal à 0 ; nous allons donc rajouter une condition et on
parlera de IF IMBRIQUE

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 19
2) dites si la valeur saisie par l’utilisateur est comprise entre
50 et 100.

Par contre, je vais très fortement insister sur l’affichage du


code : remarquez le petit décalage entre ma première
condition et ma deuxième. On appelle ceci « indentation »

2.4.2. Les conditions multiples


Ici, nous avons deux conditions liées par l'opérateur && ou
|| qui signifie respectivement ET et OU:
 Avec l'opérateur &&, la clause est remplie si et seulement si
les conditions formant la clause sont toutes remplies ; si l'une

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 20
des conditions n'est pas vérifiée, la clause sera considérée
comme fausse.
 Avec l’opérateur ||, la clause est remplie si et seulement si
une des conditions est remplie
 Avec l’opérateur ==, la close est remplie si et seulement si les
deux conditions sont égales.
 Etc.

2.4.3. La structure switch

L'instruction switch (branchement) est une instruction de choix,


permettant de tester plusieurs valeurs d'une expression.
L'expression peut être de type byte, short, char ou int.
Syntaxe :
switch(expression)
{
case constante_1: [suite d'instructions1]
case constante_2: [suite d'instructions2]
case constante_n: [suite d'instructionsn]
[default: suite d'instructions]
};
Exemple :
public class ExSwitch{
public static void main(String [] args)
{
int n;
n=Integer.parseInt(args[0]);
switch(n)

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 21
{
case 0: System.out.println("zero");
break;
case 1: System.out.println("un");
break;
case 3: System.out.println("trois");
default: System.out.println("Rien");
System.out.println("Fin");
}
System.out.println("Fin du programme");
}
}
Dans ce cas, on utilise un switch pour alléger les code, et surtout pour
éviter des else if à répétition, j’en conviens : nous pouvons très bien
arriver au même résultat avec des if qu’avec un switch. Mais il faut
le voir tout de même.
Notez bien la présence de l’instruction break ; celle-ci permet de
sortir du switch si une languette a été trouvée pour cas concerné.
L’instruction switch ne prend que des entiers ou des caractères en
paramètres…

2.4.4. La condition ternaire


La condition ternaire réside dans le fait qu’on peut condenser
certaines parties de code. La particularité des conditions
ternaires réside dans le fait que trois opérandes (Variables ou
constantes) sont mises en jeu mais aussi que ces conditions
sont employées pour affectée une donnée dans une variable.

Ce qui se trouve entre parenthèse est évalué : est-ce –que x


est plus petit que y, donc deux cas de figure se profilent à
l’horizon :

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 22
 Si la condition renvoie true( vraie) donc qu’elle est vérifiée, la
valeur qui se trouve après le ? sera affectée.
 Si non, la valeur se trouvant après le symbole : sera affectée.
 L’affectation est faite, vous pouvez utiliser votre variable
max.
Nous pouvons affecter un String grâce à une condition sur
deux int :

2.5. Les boucles


Une boucle est une instruction qui permet de faire plusieurs
fois la même opération. On se sert de boucle lorsqu’il nous
devons trier des données dans un tableau… eh bien, lorsque
une opération doit se répéter autant de fois que la condition
est encore remplie… En français TANT QUE CONDITION
…ALORS

2.5.1. La boucle WHILE


Il s'agit d'une boucle tant que qui exécute un ensemble
d'instructions tant qu'une condition est vraie.
Syntaxe :
while(condition)
[{]
instruction_1
[instruction_2
...

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 23
instruction_n
}]

Exemple
public class Boucle{
public static void main(String [] args)
{
int x=1;
System.out.println("Avant la boucle");

while(x<4)
{
System.out.println("Dans la boucle, la valeur de x est "+x);
x=x+1;
}
System.out.println("Après la boucle");
}
}

2.5.2. do-while

Il s'agit d'une boucle faire-tant que similaire à la boucle while sauf


que la condition est évaluée après chaque parcours de boucle. La
boucle do-while est exécutée au moins une fois, alors que la boucle
while peut ne jamais être exécutée.

Syntaxe :
do [{]
instruction_1
[instruction_2
...
instruction_n }]
while(condition);

N.B. Il y a un point-virgule à la fin de l'instruction !

Exemple :

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 24
public class Boucle2{
public static void main (String [] args){
int x=1;
System.out.println("Avant la boucle");
do{
System.out.println("Dans la boule, la valeur de x est "+x);
x=x+1;
}while(x<4);
System.out.println("Après la boucle");
}
}

2.5.3. For
L'instruction for est une boucle (pour) dont la syntaxe est divisée en
[{]
instruction_1
[instruction_2
...
instruction_n
}]
 initialisation est une déclaration ou une suite d'expressions
quelconques séparées par des virgules, cette partie est évaluée une
seule fois avant d'entrer dans la boucle.
 condition est une expression booléenne (logique) quelconque, cette
partie conditionne la poursuite de la boucle et est évaluée avant
chaque parcours.
 incrémentation est une suite d'expressions quelconques séparées
par des virgules, cette partie est évaluée à la fin de chaque parcours.

2.6. Exercices
1. Ecrire un programme informatique qui permet à l’utilisateur
de tester la parité d’un nombre saisie par l’utilisateur.
2. Ecrire un programme qui lit les n nombre saisie par
l’utilisation en suite fait sa somme.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 25
3. Ecrire un programme qui calcule le factoriel d’un nombre
saisie par l’utilisateur.
4. Ecrire un programme java qui lit un nombre et indique s’il est
négatif ou positif ou s’il est zéro et s’il est pair ou impair.
5. Ecrire un programme qui demande à l’utilisation de : saisir
son prénom, le programme doit ensuite écrire
« bonjour damos par exemple comment vas-tu ? » et posez la
question (« voulez-vous vraiment quitter ? O/N ») ici on utilise
la boucle do…while ou while.
6. Ecrire un programme java qui fait la somme et la moyenne de
valeur saisie par l’utilisateur.
7. Ecrire un programme informatique qui permet à l’utilisateur
de choisir un plat et en suite le condiment

2.7. Le tableau
Un tableau rien d’autre qu’une variable un peu particulier …
Nous allons pouvoir lui affecter plusieurs valeurs, rangées de
façon séquentielle, que nous pourrons appeler grâce à un
indice, ou un compteur.

2.7.1. Déclaration et Initiation du tableau


Imaginons que nous voulions créer un tableau d'entiers, deux
déclarations sont possibles :

int t[];
int []t;

La différence entre les 2 déclarations a une importance lorsque l'on


souhaite déclarer plusieurs tableaux :
int [] t1,t2; //déclaration de 2 tableaux d'entiers
int t1[], t2[]; //même chose
int t1[], n, t2[]; //2 tableaux t1 et t2, n est un entier
Point a, tp[], b; // et b sont de type Point, tp est un tableau
// d'objets Point

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 26
N.B. : une déclaration de tableau ne doit pas préciser de dimension.
Pour créer un tableau on utilise l'opérateur new comme pour des
objets classiques. Voici un exemple montrant comment créer un
tableau de 10 entiers :
int t[] = new int[10];
Il est également possible de fournir une liste d'expression entre
accolades. Voici un exemple de
Création d'un tableau d'entiers à 5 éléments.
int t[] = {1, 2, 7, 10, 0};
L'instruction précédente équivaut aux instructions suivantes :
int [] t = new int[5];
t[0] = 1;
t[1] = 2;
t[2] = 7;
t[3] = 10;
t[4] = 0;
Attention. Une fois un tableau crée, on ne peut plus modifier sa taille.
Par contre, on peut créer un nouveau tableau et - si besoin - recopier
les valeurs du tableau initial. La taille d'un tableau est toujours
positive.
La taille d'un tableau Il est possible d'avoir accès à la taille d'un
tableau à l'aide du champ length.
int t[] = new int[6];
System.out.println("taille de t "+t.length); //affiche 6
t = new int[2];
System.out.println("taille de t "+t.length); //affiche 2

Ici length est vu comme un champ et non comme une méthode.


Accès aux éléments d'un tableau, Un élément est désigné en
plaçant entre crochets sa position après le nom du tableau. Une
position est désignée par une expression entière comprise entre 0
(le premier élément du tableau) et la taille du tableau-1 (dernier
élément du tableau).

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 27
2.7.2. Déclaration d’un tableau multidimensionnel
Un tableau multidimensionnel n’est rien d’autre qu’un tableau ayant
comme contenu au minimum 2 tableaux…

int premier[][]={{0,2,4,6,8}{1,2,3,4,5}}

nous voyons bien ici les deux lignes de notre tableau symbolisées par
les doubles crochets [][],Et comme je l’ai dit plus haut, ce genre de
tableau n’est rien d’autre que plusieurs tableau en un. Ainsi, pour
passer d’une ligne à une autre, nous jouerons avec la valeur du
premier crochet.

2.7.3. Utiliser et Rechercher dans un tableau


Un tableau, comme ceux que nous avons fait ci-dessus, débute
toujours à l’indice 0 :
Pour bien lire le contenue du tableau, il sera mieux qu’on utilise la
boucle pour avoir moins d’instruction.
char tableau []={‘a’, ‘b’, ‘c’, ‘d’, ‘e’ } ;
for ( int i=0 , i<tableau.length , i++)
system.out.println(«A l’emplacement »+i+ « du tableau nous
avons= »+tableau[i] ;

2.8. Quelques méthodes bien utile


2.8.1. Méthodes prédéfinies

tolowerCase()
Cette méthode permet de transformer toute saisie clavier de
type caractère en minuscules. Elle n’a aucun effet sur les
nombres et il a comme rival toUpperCase ().
Ex : String min=«COUCOU TOUT EST GRACE »
String maj=min.toLowerCase () ;
Concat ()
Permet de concaténer deux chaines de caractères

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 28
Pam=lionnel.concat(joniko) ;
length()
Permet de donner la longueur d’une chaine de caractère (en
comptant les espaces blancs).
Equals()
Permet de voir si deux chaines de caractères sont identiques.
Donc de faire des tests
Ex : if ( str1.equals (str2))
On peut même demander la non vérification de l’égalité
grâce à l’opération de négation ( ! )
Ex : if ( !str1.equals (str2))
Cette méthode renvoi un booléen. C’est pourquoi nous
pouvons utiliser cette fonction dans les tests de condition
chartAt ( )
Le résultat de cette méthode sera un caractère, car il s’agit
d’une méthode d’extraction de caractère, elle ne s’opère que
pour le String ! Elle possède la même particularité que les
tableaux, c’est-à-dire que, pour cette méthode le premier
caractère sera le numéro 0. Cette méthode prend un entier
comme argument.
String car= « générer » ;
char ran=car.charAt(5) ;
subString()
Comme son nom l’indique, elle permet d’extraire une sous-
chaine de caractère. Cette méthode prend 2 entiers comme
arguments. Le premier définit le début de la sous chaine a
extraire enclus. Le deuxième correspond au dernier

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 29
caractère à extraire exclus. Et le premier caractère est aussi le
num 0.

2.8.2. Des Méthodes concernant les mathématique


Ces méthodes utilisent la class math présente dans java.lang
cette classe fait donc partie des fondements du langage et par
conséquent, aucun import particulier n’est nécessaire pour
utiliser la classe math.
Random( )
Cette méthode permet de générer un nombre aléatoire entre
0 et 1 (cette méthode renvoie donc un double).
double x=math.random() ;
sinus, cosnis, tangente
double sin=math.sin(120) ;
double cos=math.cos(120) ;
double tan=math.tan(120) ;
Ces méthodes retournent un nombre de type double.
Valeur absolue
Double abs=math.abs(-120.30) ;

2.8.3. Créer et utiliser sa propre méthode


Pour créer sa propre méthode on utilise quelque mot clés :

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 30
 Il y a le mot clé public. C'est ce qui définit la portée de la méthode.
Nous y reviendrons lorsque nous programmerons des objets.

 Ensuite il y a static. Nous y reviendrons aussi.

 Juste après, nous voyons double. Il s'agit du type de retour de la


méthode. Pour faire simple, ici, notre méthode va renvoyer un
double !

 Il y a ensuite le nom de la méthode. C'est avec ce nom que nous


l'appellerons.

 Puis, il y a les arguments que la méthode prend. C'est en fait les


paramètres dont la méthode a besoin pour travailler.

 A l'intérieur de la méthode, une instruction return. C'est cette


instruction qui effectue le renvoi de la valeur.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 31
Créer une méthode qui va vous permettre de calculer le carré
d’un nombre.

2.8.4. Surchargé la méthode


La surcharge de méthode consiste à garder un nom de méthode
(donc un type de traitement à faire, pour nous, lister un tableau) et
de changer la liste ou le type de ses paramètres.

Avec ces méthodes, vous pourrez parcourir de la même manière :


 les tableaux d'entiers
 les tableaux de chaînes de caractères.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 32
2.8.5. Exercices sur le tableau
1) Ecrire un programme qui affiche les nombres aléatoire a un
tableau de 100 entiers et calcul la moyenne des éléments du
tableau.

Modifier le programme de manière à afficher la valeur


minimale et la valeur maximale.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 33
CHAPITRE 3 : JAVA ET LA P.O.O.

Dans la première partie de ce cours, nous avons travaillé avec


une seule classe. Vous allez voir et apprendre qu’en
programmation orientée objet, nous travaillerons avec
plusieurs classe : en fait, autant de classe que objets.
String str=new String (« tiens bon ») ;
Ici str est un objet String et on dit que vous avez créé une
instance de la classe String (). Nous savons cela grâce à
l’opérateur new qui s’utilise pour instancier.
3.1. P.O.O.
3.1.1. Les classes
Une classe peut être comparée à un moule, un gaufrier… qui
lorsqu’on le remplie, nous donne un objet ayant la forme du
moule, et toutes ses caractéristiques.
Une classe à la portée « public » suivie du mot clé « classe »le
Ex : public classe Annee {…} ;
class Mon {…} ;

class MonProjet{
int a,b ;
String budjet
}

3.1.2. Les constructeurs


Un constructeur est une méthode qui va se charger de créer
un objet et dans le cas échéant, d’initialiser ses variables de

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 34
class. Cette méthode à pour rôle de dire à la jvm de réserver
de l’allocation mémoire pour notre futur objet et donc par
extension d’en réserver pour toutes les variables d’instances
et variables de class de cette dernière.
 Les variables d’instances : ce sont celles qui définiront les
caractéristiques de notre objet ;
 Les variables de classes : celles-ci sont communes à toutes les
instances de votre classe ;
 Les variables locales : ce sont des variables que nous
utiliserons pour travailler dans notre objet.
Nous allons travailler avec des variables d’instances afin de
créer des objets. Il nous reste plus qu’a créer notre premier
Objet mais pour ce faire, nous allons devoir créer ce qu’on
appelle des constructeurs.
Un constructeur est en fait une méthode qui n’a aucun type de
retour (void, double…) et qui porte le même nom que notre
classe !
Syntaxe : public class Ville {
public ville ( ) { } }
// Constructeur par défaut ;
Public ville ( ){
System.out.println(« création d’une ville ») ;
nom_pays= « inconnu » ;
nompays= « inconnu » ;
nombrehabitant=0 ;}

// Constructeur d’initialisation
Public ville (String pNom, int pNbre, String pPays){
System.out.println(« création d’une ville avec des
paramétres ! ») ;
NomVille = pNom ;
nomPays=pPays ;

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 35
nbreHabitant= pNombre ;}

// Dans la classe principale


Public static void main (String[]args){
Ville ville =new Ville() ;
Ville ville2=new ville(« Marseille » ;1256 ; « France ») ; par
notre façon de déclarer les variables d’instances cela signifie
que nos variables d’instance sont accessibles

Ex : public Static void main (String[] args){


Ville ville = new Ville() ;
System.out.println(ville.nomVille);
Ville.nomVille=« dorcas Dinanga est belle » ;
System.out.println(ville.nomVille) ;

Pour cela nous devons protégeons nos variables d’instance en


les déclarant private.

public class Ville {


private String nomVille ;
private String nomPays ;
private int nbreHabitant ;
.
.
. }

Pour pouvoir accéder aux données de nos objet, nous


devons utiliser ce que l’on appelle des ACCESSEURS.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 36
3.1.3. Accesseurs et mutateurs.
Un accesseur est une méthode qui va nous permettre
d’accéder aux variables de nos objets en lecture et un
mutateur en écriture.
Nos accesseurs sont de méthodes et elles sont publiclorsqu’on
parle des accesseurs, ce terme englobe aussi les mutateurs.
L’accesseur commence par get et le mutateur par set.
Les accesseurs sont du même type que la variable qu'ils
doivent retourner. Les mutateurs sont, par contre, de type
void. Ce mot clé signifie "rien" ; en effet, ces méthodes ne
retournent aucune valeur, elles se contentent de les mettre à
jour.
NB :
 Les constructeurs →Méthodes servant à créer des objets
 Les accesseurs→ Méthode servant à accéder aux données de
nos objets.
 Les méthodes de classe→ Méthode servant à la gestion de
nos objets.

Ass Eddy MUTOMBO SHANGA /JAVA BASIC


(Elèmentaire) 37
Ass Eddy MUTOMBO SHANGA/ JAVA BASIC
(Elèmentaire) 38
3.1. Héritage
L’héritage permet de définir une nouvelle classe ( une sous
classe) à partir d’une classe existante( super classe, classe
mère) à laquelle on ajoute de nouvelles données méthodes.
Java ne gère pas les héritages multiples.

C'est le mot-clé extends qui informe notre application que la


sous classe est hérité de la super classe.
 Class Triangle extends forme { …}
 Class amibe extends forme { … }
Il faut que vous sachiez que nous pouvons faire appel aux
variables de la classe mère dans nos constructeurs … Et ceci
grâce au mot clé super. Ce qui aura pour effet de récupérer les
éléments de l’objet de la base et de les envoyer à notre objet
hérité.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 39
Construction d’un objet hérité
Ex1 : public class carre extends forme {
Public carre ( ) {
Super ( ) ; }
Ex2 : public class capitale extends Ville {
Private String president ;
Public capital ( ){
super ( ) ;
president = « aucun » ;
public capitale (String nom, int hab, String pays, String
president)
super(nom,hab,pays) ;}
this.president= president ;}
Le polymorphisme
Un polymorphisme est la faculté attribue à un objet d’être une
instance de plusieurs classes. Il a une seule « réelle » qui est
celle dont le constructeur a été appelé en premier mais peut
aussi être déclaré avec une classe supérieure à sa classe réelle.
Le polymorphisme, nous permet de manipuler des objets sans
vraiment connaitre leur type. Vous avez accès aux méthodes
public et protected de la classe objet dès que vous créez une
classe ( héritage tacite).
On dit que d’une méthode qu’elle est polymorphe si elle
réalise des actions differentes selon la nature des objets sur
lesquels elle s’applique. On distingue trois formes de
polymorphisme de méthode :
 Surchage ;
 Méthode prédominantes ;
 Méthode abstraite.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 40
La classe object
Nous avons vu précédemment que les méthode equals() et
hashcode() sont souvent redéfinies afin de pouvoir gérer l'égalité de
vos objets et de les catégoriser. Vous avez pu vous rendre compte
que leur redéfinition n'est pas des plus simples (si nous le faisons
avec nos petits doigts).
Avec Java 7, il existe une classe qui permet de mieux gérer la
redéfinition de ces méthodes : java.util.Objects.

Attention, il ne s'agit pas de la classe java.lang.Object dont tous les


objets héritent ! Ici il s'agit d'Objects avec un « s » ! Ce nouvel objet
ajoute deux fonctionnalités qui permettent de simplifier la
redéfinition des méthodes vues précédemment.
Nous allons commencer par la plus simple : hashcode(). La classe
Objects propose une méthode hash (Object…values). Cette méthode
s'occupe de faire tout le nécessaire au calcul d'un code de hashage
en vérifiant si les attributs sont null ou non et tutti quanti. C'est tout
de même sympa. Voici à quoi ressemblerait notre méthode
hashcode() avec cette nouveauté :

3.2. Apprendre à Modéliser


Nous allons apprendre à modéliser en UML ( Unified Modeling
Language) traduit en français langage de modélisation unifiée
En fait, avec UML vous pouvez modéliser toute les parties de
développement d’une application de sa conception à la mise
en route, tout ceci grâce à des diagrammes. il est vrai que
certaine de ces diagrammes sont plus adapter à des
informaticiens, mais il en existe qui permettent de voir
comment interagit l’application dans son contexte de
fonctionnement…

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 41
Modeliser un objet
A présent, Nous allons apprendre à lire un diagramme de
classe. Une classe est modélisation sous cette forme

Voici une classe objectA qui a comme attributs :


 Numero de type : int ;
 Nom de type : String ;
 Bool de type : boolean.
Et comme méthode :
 getNom() : qui retourne une chaine de caratère
 setNom() : qui ne renvoie rien
 afficher() : qui renvoie une chaine de caractère.
La portée des attributs et des méthodes dépend du signe (-
,+,# ) respectivement ( privé, public,protected)
Modeliser les interactions entre objet
Les interactions sont modélisées par des flèches de types
differents. Nous allons voir maintenant celles que nous
pouvons d’ores et déjà utiliser.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 42
Sur ce diagramme, vous pouvez voir un deuxième objet qui a
lui aussi des paramètres mais l’objetB possede aussi les
attributs et des méthodes de la classe ObjetA car la flèche qui
relie nos deux signifie « EXTENDS » en gros , vous pouvez lire
ce diagramme comme suit l’objetB hérite de l’objetA ou
encore l’objetB est un ObjetA.
Comme nous pouvons mettre des objets de type String dans la
classe que nous développons, nous pouvons aussi mettre
comme variable d’instance ou de classe un objet que nous
avons codé. Voici un diagramme modelisant ce cas de figure

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 43
Dans la figure suivante l’objetA est composé d’objetD. Il y aura
plusieurs instances d’objetD dans l’objetA.
Vous pouvez d’ailleurs remarquer que la variable d’instance
correspondante est de type tableau.

Représentation de la composition

3.3. Les classes abstraite


Une classe abstraite est quasiment comme une classenormale.
Elle a tout de même une particularité! On ne peut pas
l’instancier. Une classe abstraite doit être déclarée avecle
mot clé « abstrate » et ses méthodes n’ont pas de corps.
Abstract class Mbuyi { } ;
Abstract void manger ( ) ;
Retenez que une méthode abstraite n’est composée que de
l’entête de la méthode suivie d’un point-virgule ;
Une méthode abstraite ne peut exister que dans une classe
abstraite. Si dans une classe, vous avez une méthode déclarée
abstraite, vous devez la déclarer aussi abstraite.
Exemples de bêtes. Dans ce programme, vous avez :
 les loups ;

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 44
 les chiens ;
 les chats ;
 les lions ;
 des tigres ;
 etc.
Tous ces animaux ont un point commun… dit héritage
 la couleur ;
 un poids ;
 un cri ;
 se déplace ;
 ils mangent ;
 ils boivent.
Par là on peut faire une classe mère, appelons-la Animal

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 45
Ass Eddy MUTOMBO SHANGA / JAVA BASIC
(Elèmentaire) 46
Code de la classe principale

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 47
Exécution du programme

3.4. Interface
Une interface corresponde à une classe abstraite où aucune
méthode n’est implémentée.
Définition et mise en œuvre
Public Interface I {
void f (int n) ;
void g () ; }
public class A implements I1 {
A doit rédefinir f et g
 une même classe peut implémenter plusieurs interface ;
 les interfaces peuvent se dériver, mais les classes dérivées
obtenues sont aussi des interfaces ;
 les interfaces peuvent contenir des constante de types static
final. Ces constantes seront donc accessibles en dehors d’une
classe implémentant l’interface.
Interface I1 {
Static final int max=30 ;
Void f (int n) ;
Interface I2 extends I1 {
void g ( ) ; }
class A Implements I1,I2 {
Ass Eddy MUTOMBO SHANGA / JAVA BASIC
(Elèmentaire) 48
// redefinit f, on a accès à max directement }
NB : l’ordre des déclarations est PRIMORDIAL. Vous devez
mettre l’expression d’héritage avant l’implémentation, sinon
votre code ne compilera pas!
3.5. Les exceptions
Il vous est surement déjà arrivé d’avoir un gros message
affiché en rouge dans la console : eh ! bien ceci a été généré
par une exception… qui n’a pas été capturée ou gérée. la
gestion des exceptions s’appelle aussi la captured’exception
!
La gestion d’exception permet :
 de détecter une anomalie et de la traiter indépendamment de
sa détection,
 de séparer la gestion des anomalies du reste du code une
anomalie peut être due, par exemples, à des données
incorrectes, à un fin de fichier prématurée, a un évènement
non prévu par le programmeur.

3.5.1. Le bloc TRY {…} catch {…}


Java contient une class nommée exception, où sont
repertoriés différents cas d’erreurs. La division par zéro.
Toutes les classes de java possèdent : par exemple, la classe
java.IO, qui gère les entrées –sorties, entre autre l’exception
IOException .
Lorsque l’exception a été lavée, le programme s’est arrêté !
dans ce message, une exception se capture grâce à un bloc TRY
{ici, le code susceptible de générer une exception } ; le
traitement associe, lorsque le bloc try {…} capture une
exception , se trouve dans un bloc catch{ici, ce que le
programme doit faire si une exception est capturée}.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 49
Ass Eddy MUTOMBO SHANGA / JAVA BASIC
(Elèmentaire) 50
CHAPITRE 4 : JAVA ET LA PROGRAMMATION
EVENEMENTIELLE

Dans cette partie, nous aborderons la programmation


événementielle comme le stipule le titre. Par là, entendez
programmation d’interface graphique, ou IHM(interface
homme machine, ou encore GUI(graphique utilisateur
interface)
Nous utiliserons essentiellement les bibliothèques Swing et
AWT présentes dans java.
4.1. Votre première fenêtre
L’objet Jframe
Vu que nous allons développer des interfaces avec swing,vous
devez savoir que toutes les classes swing se trouvent dans le
package javax.swing. Mais ne vous y trompez pas, nous allons
utiliser aussi des objets awt (java.awt), mais pas de
compasants !
Pour faire simple, un composant peut être un bouton, une
zone de texte, une case à cocher… bref, tout ce qui peut
interargir avec vous.
Pour utiliser une fenêtre de type JFrame, vous devez instancier
celui-ci. Comme-ceci :

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 51
La fenêtre a été créée mais on doit utiliser la méthode :
 setVisible(true) pour afficher la feuille ;
 setSize(400,500) pour afficher la taille de la feuille ;
 setLocationRelativeTo (null) pour mettre la feuille au centre ;
 setDefaultCloseOperation(JFrame.Exit_on_close) pour
terminer le processus lorsqu’on clique sur le bouton fermer.
Au lieu d’utilisé la classe JFrame on peut cependant héritée la
fenêtre.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 52
Fenêtre héritée
La première de chose est celui qui créé une classe qui va
héritée de la JFrame.
Import javax.swing.JFrame ;
Public class Fenetre extends JFrame{
Public Fenetre() { } ;

Nous allons maintenant créer notre constructeur et dans celui-


ci, Nous mettrons nos instruction à l’interieur ce qui donne :

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 53
Code de la classe FenetreHéritée.

Code de la classe principale


Une fenêtre (JFrame est découpée en plusieurs parties

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 54
 la fenêtre ;
 le RootPane (en vert), le conteneur principal qui contient les autres
composants ;
 le LayeredPane (en bleu), qui forme juste un panneau composé du
conteneur global et de la barre de menu (MenuBar) ;
 la MenuBar (en orange), la barre de menu, quand il y en a une ;
 le content pane (en violé) : c'est dans celui-ci que nous placerons nos
composants ;
 le GlassPane (en transparence), couche utilisée pour intercepter les
actions de l'utilisateur avant qu'elles ne parviennent aux
composants.

Nous allons nous servir uniquement du content pane. Pour le


récupérer, il nous suffit d'utiliser la méthode getContentPane() de la
classe JFrame. Cependant, nous allons utiliser un composant autre
que le content pane : un JPanel dans lequel nous insérerons nos
composants.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 55
Il existe aussi d’autre type de fenêtre :

 la Jwindows (une JFrame sans bord et non draggable)


 JDialog (une fenêtre non redimensionnable)
4.2. Les conteneurs
Un conteneur pour votre fenêtre
Un conteneur est un composant de type container, dont la
vocation est d’accueillir d’autres objets de même type, ou des
objets de type composant (bouton, case à cocher…)
maintenant nous ajoutons.
Voici le marche à suivre :
1. Importer la classe javax.swing.JPanel dans notre classe héritée de
JFrame.
2. Instancier un JPanel puis lui spécifier une couleur de fond pour
mieux le distinguer.
3. Avertir notre JFrame que ce sera notre JPanel qui constituera son
content pane.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 56
Résultat du code précédant.

L’objet graphics
Cet objet a une particularité de taille! Vous ne pouvez l’utiliser
que si et seulement si le système vous l’a donné. Pour bien
comprendre le mode de fonctionnement de vos futurs
containers(ou composant), nous allons faire une classe héritée
de JPanel ; appelons-la panneau;

Cette méthode est celle que l'objet appelle pour se dessiner sur votre
fenêtre ; si vous réduisez cette dernière et que vous l'affichez de
nouveau, c'est encore cette méthode qui est appelée pour afficher
votre composant. Idem si vous redimensionnez votre

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 57
fenêtre… De plus, nous n'avons même pas besoin de redéfinir un
constructeur car cette méthode est appelée automatiquement !
C'est très pratique pour personnaliser des composants, car vous
n'aurez jamais à l'appeler vous-mêmes : c'est automatique ! Tout ce
que vous pouvez faire, c'est forcer l'objet à se repeindre ; ce n'est
toutefois pas cette méthode que vous invoquerez, mais nous y
reviendrons.
Vous aurez constaté que cette méthode possède un argument et
qu'il s'agit du fameux objet Graphics tant convoité. Nous
reviendrons sur l'instruction g.fillOval(20, 20, 75, 75), mais vous
verrez à quoi elle sert lorsque vous exécuterez

Exécution du programme.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 58
Vous pouvez voir ce qu'il se passe lorsque vous interagissez avec
votre fenêtre : celle-ci met à jour ses composants à chaque
changement d'état ou de statut. L'intérêt de disposer d'une classe
héritée d'un conteneur ou d'un composant, c'est que nous pouvons
redéfinir la façon dont est peint ce composant sur la fenêtre.

Après cette mise en bouche, explorons un peu plus les capacités de


notre objet Graphics. Comme vous avez pu le voir, ce dernier
permet, entre autres, de tracer des ronds ; mais il possède tout un
tas de méthodes plus pratiques et amusantes les unes que les
autres… Nous ne les étudierons pas toutes, mais vous aurez déjà de
quoi faire.
Pour commencer, reprenons la méthode utilisée précédemment :
g.fillOval(20, 20, 75, 75). Si nous devions traduire cette instruction en
français, cela donnerait : « Trace un rond plein en commençant à
dessiner sur l'axe x à 20 pixels et sur l'axe y à 20 pixels, et fais en sorte
qu'il occupe 75 pixels de large et 75 pixels de haut. »

La méthode drawOval()
Il s'agit de la méthode qui permet de dessiner un rond vide. Elle
fonctionne exactement de la même manière que la méthode
fillOval(). Voici un code mettant en oeuvre cette méthode :

La méthode drawRect()
Cette méthode permet de dessiner des rectangles vides. Bien sûr,
son homologue fillRect() existe. Ces deux méthodes fonctionnentde
la même manière que les précédentes.

La méthode drawRoundRect()
Il s'agit du même élément que précédemment, hormis le fait que le
rectangle sera arrondi. L'arrondi est défini par la valeur des deux
derniers paramètres.

La méthode drawString()

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 59
Voici la méthode permettant d'écrire du texte. Elle est très simple à
utiliser : il suffit de lui passer en paramètre la phrase à écrire et de
lui spécifier à quelles coordonnées commencer.

g.drawString ("Nous sommes en G3 Math Info !", 10, 20);

4.3. Le bouton JButton


Comme le titre l’indique, nous allons utiliser un objet
JButton. Celui-ci se trouve aussi dans le package javax.swing.
Nous allons devoir créer un bouton nommé « mon bouton »
Pour le faire nous allons importer javax.swing.JButton.
On aura :

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 60
4.3.1. Les layout managers
La disposition des composants dans une fenêtre est gerée par
un gestionnaire de mise en forme (le layout-manager) pour
choisir un gestionnaire, il faut la méthode setLayout.
Vous allez voir qu'il existe plusieurs sortes de layout managers, plus
ou moins simples à utiliser, dont le rôle est de gérer la position des
éléments sur la fenêtre. Tous ces layout managers se trouvent dans
le package java.awt.

Nous avons
 GridLayout ;
 BorderLayout ;
 CardLayout ;
 GridBagLayout ;
 FlowLayout.

Chacun d’eux utilise des règles spécifiques pour disposer les


composants et par défaut java utilise BorderLayout.
a. BorderLayout
Le premier objet que nous aborderons est le BorderLayout. Il est très
pratique si vous voulez placer vos composants de façon simple par
rapport à une position cardinale de votre conteneur. Si je parle de
positionnement cardinal, c'est parce que vous devez utiliser les
valeurs NORTH, SOUTH, EAST, WEST ou encore CENTER.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 61
L'objet FlowLayout

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 62
Il se contente de centrer les composants dans le conteneur.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 63
L'objet GridLayout

Il permet d'ajouter des composants suivant une grille définie par un


nombre de lignes et de colonnes. Les éléments sont disposés à partir
de la case située en haut à gauche. Dès qu'une ligne est remplie, on
passe à la suivante. Si nous définissons une grille de trois lignes et de
deux colonnes, nous obtenons le résultat visible sur la
figure suivante.

4.4. Les boites de Dialogue

Les boîtes de dialogue, c'est sûr, vous connaissez ! Cependant,


afin d'être sûr que nous parlons de la même chose, voici un
petit descriptif.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 64
Une boîte de dialogue est une mini-fenêtre pouvant servir à
plusieurs choses :
 afficher une information (message d'erreur, warning...);
 demander une validation, une réfutation ou une annulation ;
 demander à l'utilisateur de saisir une information dont le
système a besoin ;...
Vous pouvez voir que ces dernières peuvent servir à beaucoup
de choses.
Il faut toutefois les utiliser avec parcimonie : il est, au final,
assez pénible qu'une application ouvre une boîte de dialogue
à chaque notification, car toute boîte ouverte doit être fermée
!
Pour ce point je vous laisse seuls juges de leur utilisation... Et
si nous commencions ?

4.4.1. Les boites d’information


L'objet que nous allons utiliser tout au long de ce chapitre
n'est autre que le JOptionPane.
Objet assez complexe au premier abord, mais fort pratique.

Voici à quoi ressemblent des boîtes de dialogues


"informatives" :

Ces boîtes n'ont pas vocation à participer à de quelconques


traitements, elles affichent juste un message pour l'utilisateur.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 65
jop2.showMessageDialog(null,"Message préventif",
"Attention" ,JOptionPane. WARNING_MESSAGE);

jop3 = new JOptionPane();


jop3.showMessageDialog(null,"Messaged'erreur","Erreur",
JOptionPane.ERROR_MESSAGE);

jop1 = new JOptionPane();


jop1.showMessageDialog(null, "Message informatif",
"Information",JOptionPane.INFORMATION_MESSAGE);

les boîtes de dialogue sont dites modales.


Ceci signifie que lorsque qu'une boîte fait son apparition, celle-ci
bloque toute interaction possible avec un autre composant queceux
présents sur la boîte. Ceci, tant que l'utilisateur n'a pas mis fin au
dialogue!

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 66
4.4.2. Types de boites de Dialogue

Voici les types de boîtes que vous pouvez utiliser (valable pour tout
ce qui suit), triés par ordre alphabétique s'il vous plaît...
:
JOptionPane.ERROR_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.PLAIN_MESSAGE
JOptionPane.QUESTION_MESSAGE
JOptionPane.WARNING_MESSAGE

4.4.3. Les boîtes de confirmation


Comme leur nom l'indique, ces dernières permettent de valider, de
réfuter ou d'annuler une décision.
Nous utiliserons toujours l'objet JOptionPane mais, cette fois, avec
la méthode showConfirmDialog() .

Cette méthode retourne un entier qui correspond à l'option que


vous aurez choisie dans cette boîte :
 Yes ;
 No ;
 Cancel.
Voyons ce qu'il se passe ici : nous initialisons notre objet
JOptionPane : rien d'étonnant ; par contre, au lieu d'afficher la boîte,
nous affectons le résultat que renvoie la méthode
showConfirmDialog() dans une variable de type int ; nous nous
servons de cette variable afin de savoir quel bouton a été cliqué
(oui ou non).
En fait, lorsque vous cliquez sur l'un des deux boutons présents sur
cette boîte, vous pouvez affecter ici deux valeurs de type
int :la valeur correspondant à l'entier JOptionPane.OK_OPTION vaut
0 (JOptionPane.YES_OPTION à la mêmevaleur) ; la valeur
correspondant à l'entier JOptionPane.NO_OPTION vaut 1 ; lavaleur
correspondant à l'entier JOptionPane.CANCEL_OPTION pour la boîte
apparaissant lors du clic sur "Stop" vaut 2 ; la valeur

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 67
correspondant à l'entier JOptionPane. CLOSED_OPTION pour la
même boîte que ci-dessus, vaut -1. En comparant la valeur de notre
entier avec l'une des deux options, nous pouvons en déduire quel
bouton a été cliqué et donc agir en conséquence

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 68
4.4.4. Boites de saisie

Vous pouvez constater que cette méthode retourne une chaîne de


caractères ! Maintenant, voyons comment on incorpore une liste
dans une boîte de ce genre... Vous allez voir, c'est simplissime !

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 69
CHAPITRE 5 : les wysiwyg de Netbeans
Quèsaco ? (What You See Is What You Get) Ce sont des
interfaces homme machine qui s’avère facile d’emploi, ils
permettent de créer des interfaces sans pour autant coder.
Leur principal défaut et la quantité de codes qui génère
5.1. Connaissance avec l’environnement
Présentation de l’application

Démarrage de NetBeans.

Ecran d’accueil de NetBeans

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 70
Création d’un projet.

Pour créer un projet :


 On clique sur l’icône nouveau projet ;
 On choisit java application ;
 On clique sur le bouton de commande NEXT ;

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 71
 Saisir le nom du projet ;
 Et enfin cliqué sur finish.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 72
Création d’un JFrame

 Cliqué sur le projet ;


 Cliqué sur source package ;
 Clic-droit sur le nom du projet ;
 Cliqué sur new ou nouveau ;
 Cliqué sur JFrame Form… ;

 Saisir le nom de feuille ;


 Puis finish.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 73
Et voilà nous avons inséré votre feuille et maintenant nous
allons devoir ajouter les méthodes, insérer nos composants,
pour insérer un composant, il faudra aller les prendre à droite
de la feuille.

5.2. Dessin d’interface graphique

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 74
CHAPITRE 6 : INTERACTIONS AVEC LES BASES
DE DONNEES

6.1. JDBC : la porte d'accès aux bases de données


Dans ce chapitre, nous ferons nos premiers pas avec Java DataBase
Connectivity, communément appelé JDBC. Il s'agit en fait de classes
Java permettant de se connecter et d'interagir avec des bases de
données. Mais avant toute chose, il nous faut une base de données
! Nous allons donc nous pencher sur l'utilité d'une base de données
et verrons comment en installer une que nous utiliserons afin
d'illustrer la suite de cette partie.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 75
Pour commencer, je pense qu'un petit rappel sur le fonctionnement
des bases de données s'impose.
Rappels sur les bases de données
Lorsque vous réalisez un logiciel, un site web ou quelque chose
d'autre, vous êtes confrontés tôt ou tard à cette question : «
Comment vais-je procéder pour sauvegarder mes données ?
Pourquoi ne pas tout stocker dans des fichiers ? »

Les bases de données (BDD) permettent de stocker des données.


Mais concrètement, comment cela fonctionne-t-il ? Fn quelques
mots, il s'agit d'un système de fichiers contenant les données de
votre application. Cependant, ces fichiers sont totalement
transparents pour l'utilisateur d'une base de données, donc
totalement transparents pour vous ! La différence avec les fichiers
classiques se trouve dans le fait que ce n'est pas vous qui les gérez :
c'est votre BDD qui les organise, les range et, le cas échéant, vous
retourne les informations qui y sont stockées. De plus, plusieurs
utilisateurs peuvent accéder simultanément aux données dont ils
ont besoin, sans compter que de nos jours, les applications sont
amenées à traiter une grande quantité de données, le tout en
réseau. Imaginez-vous gérer tout cela manuellement alors que les
BDD le font automatiquement...

Les données sont ordonnées par « tables », c'est-à-dire par


regroupements de plusieurs valeurs. C'est vous qui créerez vos
propres tables, en spécifiant quelles données vous souhaiterez y
intégrer. Une base de données peut être vue comme une
gigantesque armoire à tiroirs dont vous spécifiez les noms et qui
contiennent une multitude de fiches dont vous spécifiez aussi le
contenu.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 76
Dans cette base de données, nous trouvons deux tables : une
dont le rôle est de stocker des informations relatives à des
personnes (noms, prénoms et âges) ainsi qu'une autre qui
s'occupe de stocker des pays, avec leur nom et leur capitale.
Si je reprends ma comparaison ci-dessus, la BDD symbolise
l'armoire, chaque table représente un tiroir et chaque ligne
de la table correspond à une fiche de ce tiroir ! De plus, ce qui
est formidable avec les BDD, c'est que vous pouvez les
interroger en leur posant des questions via un langage précis.
Vous pouvez interroger votre base de données en lui donnant
les instructions suivantes :
« Donne-moi la fiche de la table Personne pour le nom HERBY
» ; « Donne-moi la fiche de la table Pays pour le pays ;etc.

Le langage permettant d'interroger des bases de données est


le langage SQL (Structured Query Language ou, en français, «
langage de requête structurée »). Grâce aux BDD, vos données
sont stockées, classées par vos soins et identifiables facilement
sans avoir à gérer votre propre système de fichiers.
Pour utiliser une BDD, vous avez besoin de deux éléments : la
base de données et ce qu'on appelle le SGBD (Système de
Gestion de Base de Données).

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 77
Quelle base de données utiliser
Il existe plusieurs bases de données et toutes sont utilisées par
beaucoup de développeurs. Voici une liste non exhaustive
recensant les principales bases :
• MySQL;
• SQL server;
• Oracle;
• Access.
Toutes ces bases de données permettent d'effectuer les
actions que je vous ai expliquées plus haut. Chacune possède
des spécificités : certaines sont payantes (Oracle), d'autres
sont plutôt permissives avec les données qu'elles contiennent
(MySQL), d'autres encore sont dotées d'un système de gestion
très simple à utiliser (MySQL), etc. C'est à vous de faire votre
choix en regardant par exemple sur Internet ce qu'en disent
les utilisateurs. Pour cette partie traitant des bases de
données, mon choix s'est porté sur MySQL qui est gratuit et
complet.

Ass Eddy MUTOMBO SHANGA / JAVA BASIC


(Elèmentaire) 78

Vous aimerez peut-être aussi