Vous êtes sur la page 1sur 87

FACULTE DES SCIENCES

DEPARTEMENT DE MATHEMATIQUE ET INFORMATIQUE

Initiation à la programmation orientée objet


avec le langage JAVA
EXERCICES

Destiné aux étudiants de L2 LMD


Génie - Informatique de Gestion - E-commerce - Réseau Informatique

Par :
MAYALA LEMBA Francis
Professeur Associé

MPEMBA NGOMA Luz


Chef de Travaux

LIKOTELO BINENE Camile


Assistant 2

1
ANNEE ACADEMIQUE 2022-2023

OBJECTIF DU COURS

À la fin de ce cours, l’étudiant devrait être en mesure de :

➢ Maitriser les concepts généraux de la Programmation Orientée Objet.


➢ Compiler un programme Java à l’aide de l’Invite de commande
➢ Ecrire un programme en langage Java
➢ Programmer sur les interfaces graphiques à l’aide de l’Environnement de
Développement Intégré (IDE) Netbeans
➢ Comprendre et maitriser les concepts sur le web et les Applets

2
1. Introduction
Le langage Java est un langage généraliste de programmation synthétisant les
principaux langages existants lors de sa création en 1995 par Sun Microsystems. Il
permet une programmation orientée-objet (à l’instar de SmallTalk et, dans une
moindre mesure, C++), modulaire (langage ADA) et reprend une syntaxe très proche
de celle du langage C. Outre son orientation objet, le langage Java a l’avantage d’être
modulaire (on peut écrire des portions de code génériques, c.-à-d. utilisables par
plusieurs applications), rigoureux (la plupart des erreurs se produisent à la compilation
et non à l’exécution) et portable (un même programme compilé peut s’exécuter sur
différents environnements). En contre-partie, les applications Java ont
le défaut d’être plus lentes à l’exécution que des applications programmées en C par
exemple.

1.1. Environnement Java

Java est un langage interprété, ce qui signifie qu’un programme compilé n’est pas
directement exécutable par le système d’exploitation mais il doit être interprété par un
autre programme, qu’on appelle interpréteur.

Un programmeur Java écrit son code source, sous la forme de classes, dans des
fichiers dont l’extension est .java. Ce code source est alors compilé par le compilateur
javac en un langage appelé bytecode et enregistre le résultat dans un fichier dont
l’extension est .class. Le bytecode ainsi obtenu n’est pas directement utilisable. Il doit
3
être interprété par la machine virtuelle de Java qui transforme alors le code compilé en
code machine compréhensible par le système d’exploitation. C’est la raison pour
laquelle Java est un langage portable : le bytecode reste le même quel que soit
l’environnement d’exécution.

En 2009, Sun Microsystems est racheté par Oracle Corporation qui fournit dorénavant
les outils de développement Java SE (Standard Edition) contenus dans le Java
Development Kit (JDK). Au moment où est écrit ce livret, la dernière version stable
est le JDK 1.7.

2. Définitions

2.1. Programmation orienté objet

La POO est une méthode d’implémentation dans laquelle les programmes sont
organisés sous formes de collections coopératives d’objets, dont chacun représente
une instance d’une classe quelconque et dont toutes les classes sont membres d’une
hiérarchie de classes unis à travers des relations d’héritage.

2.2 Algorithmique Objet

Dans l’approche orienté objet un algorithme sera essentiellement vu comme un


ensemble d’objets auxquels l’utilisateur envoie des messages et qui s’en envoient
pendent le fonctionnement. Ces objets seront toujours pour l’utilisateur des boites
noires et qui contiendront des variables locales, inconnues de l’environnement, et qui
ne s’y intéressera d’ailleurs pas. Le seul moyen d’accéder à ces objets sera l’envoie des
messages qu’ils sont capables de comprendre.

NB: La spécification d’un système dans l’approche OO va s’axer principalement sur


la détermination des objets à manipuler. Une fois cette étape réalisé le concepteur
n’aura plus qu’à réaliser les fonctions de haut niveau qui s’appuient sur les objets et les
familles d’objets définis.

4
Qu'est-ce que la technologie Java et pourquoi en ai-je besoin ?

Java est un langage de programmation et une plate-forme informatique qui ont été créés
par Sun Microsystems en 1995. Beaucoup d'applications et de sites Web ne fonctionnent
pas si Java n'est pas installé et leur nombre ne cesse de croître chaque jour. Java est rapide,
sécurisé et fiable. Des ordinateurs portables aux centres de données, des consoles de jeux
aux superordinateurs scientifiques, des téléphones portables à Internet, la technologie Java
est présente sur tous les fronts.

5
3. STRUCTURE D’UN PROGRAMME JAVA

Public class Luz {


public static void main(String[] args) {

//veuillez saisir votre code java ici


}

La première ligne représente le no, de la classe qui est Luz


La deuxième est bien classe principale Java.

4. AFFICHAGE D’INFORMATION EN JAVA

En java, comme en tout langage de programmation, il est nécessaire, voire


indispensable, d' afficher de temps en temps une ou plusieurs informations à l' écran
(ordinateur, portable, calculatrice, etc...). Ceci a au moins une importance. Informer
l’utilisateur du programme à quelle étape se trouve le programme.

En java, on utilise pour cela la fonction System.out.print(). Remarquez la seule lettre


majuscule, le S. Le nom d'une classe commence toujours par une lettre majuscule,
vous avais-je dit. Et c'est le cas ici. La véritable fonction est print( ). Et elle appartient
à la classe System.
La fonction System.out.print() est une fonction pré-définie par le langage java. Vous
ne l’inventez pas.

public class Afficher1


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print ("bonjour");
7. }
8.
9. }
Enregistrez sous Afficher1.java

Compilez puis exécutez. Il sera affiché à l'écran :

bonjour.

6
EXEMPLE 3 :
1. public class Afficher3
2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print(25 + 25);
7. }
8.
9. }

Compilez pui exécutez. Il sera affiché à l’écran, le nombre 50.

Lorsque Java voit une opération mathématique dans les parenthèses de la fonction
System.out.print(), java effectue d'abord l' opération, puis affiche le résultat. D'où
50 affiché à l'écran.

EXEMPLE 4 :

1. public class Afficher4


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print("25" + 25);
7. }
8.
9. }
Compilez puis exécutez. Il sera affiché à l' écran : 2525.

EXEMPLE 5

1. public class Afficher5


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print("Bonjour");
7. System.out.print(" monsieur LUZ");
8. }
9.
10. }
Compilez puis exécutez, il sera affiché ceci :
Bonjour monsieurLUZ.
7
Pourquoi ? Parce que la fonction System.out.print() affiche Bonjour. Puis place le
curseur juste après la dernière lettre du mot. Donc, juste après r. (ligne 6)
EXEMPLE 6

1. public class Afficher6


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print("Bonjour ");
7. System.out.print("monsieur");
8. }
9.
10. }
EXEMPLE 7

1. public class Afficher7


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print("Bonjour");
7. System.out.print(" monsieur");
8. }
9.
10. }
Compilez puis exécutez chacun des exemple 6 et 7, il sera affiché ceci : Bonjour
monsieur.
Mais on peut aussi résoudre le problème plus simplement en mettent "Bonjour
monsieur" dans les parenthèses d' un seul System.out.print()

EXEMPLE 8

1. public class Afficher8


2. {
3.
4. public static void main (String [ ] args)
5. {
6. System.out.print("Bonjour monsieur le Professeur Mayala");
7. }
8.
9. }

8
Nous voulons afficher Bonjour et monsieur sur deux lignes différentes ? Dans ce cas,
vous utiliserez une autre variante de la fonction System.out.print() . Elle s' appelle
System.out.println(). ln = abréviation de line qui veut dire ligne.
La fonction System.out.println() affiche ce qui se trouve dans les parenthèse, comme
son homologue. Mais en plus, elle place le curseur, non pas derrière le dernier
caractère, mais sur la ligne suivante. De sorte que si vous avez une autre instruction d'
affichage, elle se fera forcément sur la ligne suivante.
EXEMPLE 9

1. public class Afficher9


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.println("Bonjour");
7. System.out.print("monsieur");
8. }
9.
10. }
Compilez, puis exécuter, il sera affiché :

Bonjour
monsieur

On peut aussi réussir cette prouesse en utilisant la chaine de caractère \n.


EXEMPLE 10

1. public class Afficher10


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print("Bonjour\professeur Engombe ");
7. }
8.
9. }
Compilez, puis exécuter, il sera affiché :

Bonjour
monsieur

la fonction System.out.print () se met à afficher le mot Bonjour. Puis lorsqu' elle


rencontre \n, elle passe sur la ligne suivante. \n permet donc de mettre le curseur sur
la ligne suivante.
9
EXEMPLE 11
1. public class Afficher11
2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print("c:\\repertoire\\sous-repertoire");
7. }
8.
9. }
Compilez, puis exécuter, il sera affiché ceci : c:\repertoire\sous-repertoire

Lorsque java rencontre le caractère \, il regarde aussi le caractère suivant. Selon la


nature de ce caractère, il donne un sens. \\ veut dire afficher \. Si le caractère suivant
est n, ça veut dire, mettre le curseur sur la ligne suivante. SI c' est le caractère t, ça veut
dire, tabulation.
EXEMPLE 12

1. public class Afficher12


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.println("1\t1\t1");
8. System.out.println("2\t2\t2");
9. System.out.println("3\t3\t3");
10. System.out.println("4\t4\t4");
11. System.out.println("5\t5\t5");
12. }
13.
14. }
Compilez, puis exécuter, il sera affiché ceci :

1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
Explications :
Java affiche le chiffre1. Puis affiche un espace de tabulation. Puis affiche à nouveau 1.
Et à nouveau la tabulation et enfin le chiffre 1. Puis java met le curseur à la ligne
suivante. Souvenez-vous du ln dans System.out.println(). Même chose pour les lignes
suivantes.
10
Si vous estimez que l' espace de tabulation n' est pas assez grande, vous pouvez la
doubler, même la tripler. Exemple de double tabulation ci-dessous
EXEMPLE 13

1. public class Afficher13


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.println("1\t\t1\t\t1");
8. System.out.println("2\t\t2\t\t2");
9. System.out.println("3\t\t3\t\t3");
10. System.out.println("4\t\t4\t\4");
11. System.out.println("5\t\t5\t\t5");
12. }
13.
14. }

Compilez, puis exécuter, il sera affiché ceci :

1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

EXEMPLE 14

1. public class Afficher14


2. {
3.
4. public static void main (String [] args)
5. {
6. System.out.print("il a dit : \"mangez\".");
7.
8. }
9.
10. }

Compilez, puis exécuter, il sera affiché ceci :


il a dit : "mangez"

11
5.STRUCTURE DE CONTROLE

Lorsque nous concevons un programme, il peut arriver que vous vouliez que votre
programme fasse des choix. C' est à dire que certaines instructions soient exécutées
selon des conditions booléennes. Si telle situation est vraie, alors exécutez cette ou
ces instructions. Sinon, exécutez plutôt celle ou celles-là. Pour y arriver, on utilise des
structures conditionnelles. Les mot-clés java correspondant sont if, else, else if et
switch.
EXEMPLE 1 :

1. public class Conditionnelle1


2. {
3. public static void main (String [] args)
4. {
5. int a = 21, b = 22;
6. if(a < b)
7. {
8. System.out.println("a est moins grand que b");
9. }
10. else
11. {
12. System.out.println("a est plus grand que b");
13. }
14. }
15. }
compilez puis exécutez ce programme, il sera affiché : a est moins grand que b

EXEMPLE 2 :

1. public class Conditionnelle2


2. {
3. public static void main (String [] args)
4. {
5. int a = 33, b = 22;
6. if(a < b)
7. {
8. System.out.println("a est moins grand que b");
9. }
10. else
11. {
12. System.out.println("a est plus grand que b");
13. }
14. }
12
15. }
compilez puis exécutez ce programme, il sera affiché : a est plus grand que b

EXEMPLE 3 :

1. public class Conditionnelle3


2. {
3. public static void main (String [] args)
4. {
5. String moment = "matin";
6. if(moment == "matin")
7. {
8. System.out.println("Bonjour !");
9. }
10. else if (moment == "soir")
11. {
12. System.out.println("Bonsoir !");
13. }
14. else
15. {
16. System.out.println("Bonne nuit !");
17. }
18. }
19. }
compil puis exéc donnent : Bonjour !

EXEMPLE 4 :

1. public class Conditionnelle3


2. {
3. public static void main (String [] args)
4. {
5. String moment = "soir";
6. if(moment == "matin")
7. {
8. System.out.println("Bonjour !");
9. }
10. else if (moment == "soir")
11. {
12. System.out.println("Bonsoir !");
13. }
14. else
13
15. {
16. System.out.println("Bonne nuit !");
17. }
18. }
19. }
compil puis exéc donnent : Bonsoir !

EXEMPLE 5 :

1. public class Conditionnelle5


2. {
3. public static void main (String [] args)
4. {
5. String moment = "nuit";
6. if(moment == "matin")
7. {
8. System.out.println("Bonjour !");
9. }
10. else if (moment == "soir")
11. {
12. System.out.println("Bonsoir !");
13. }
14. else
15. {
16. System.out.println("Bonne nuit !");
17. }
18. }
19. }
compil puis exéc donnent : Bonne nuit !

Explications : La structure if...else if...else permet une alternative. Si la condition


première condition booléenne est vérifiée (ligne 6), alors exécution du premier bloc
(lignes 7 à 9), d' où l' affichage de l' exemple 3. Et si la deuxième condition booléenne
est vérifiée (ligne 10) alors, le 2ème bloc est exécuté (lignes 11 à 12). Si ces deux
conditions ne sont pas vérifiées, alors, le troisième bloc s' exécute.

14
Mais cette structure est parfois remplacée (lorsque cela est possible) par la structure
switch qui a l' avantage d' être plus lisible.
EXEMPLE 6 :

1. public class Conditionnelle6


2. {
3. public static void main (String [] args)
4. {
5. char sexe = 'H';
6. switch(sexe)
7. {
8. case 'H':
9. System.out.println("Vous êtes un homme");
10. break;
11.
12. case 'F':
13. System.out.println("Vous êtes une femme");
14. break;
15.
16. default :
17. System.out.println("comprends pas ton sexe");
18. break;
19.
20. }
21. }
22. }
Compilez, exécutez, affichage : Vous êtes un homme

5.LES BOUCLES

Il arrive parfois que dans un programme, une même action se produise un certain
nombre de fois. On dit alors que le programme boucle. Pour mettre en oeuvre le
principe de boucle, on utilise les boucles for, while ou do...while. La boucle for est
utilisée lorsqu' on connaît le nombre exact de fois où l' action doit se répéter. Les
boucles while et do...while sont utilisées lorsqu' on ne connaît pas ce nombre.

EXEMPLE 1 :

1. public class Boucles1


2. {
3. public static void main (String [] args)
4. {
5. for(int i = 0; i < 5; i++)
6. {
15
7. System.out.println("LUZ ET JAN");
8. }
9. }
10. }

compilez puis exécutez, il sera affiché :

JASPE ET JAN
JASPE ET JAN
JASPE ET JAN
JASPE ET JAN

Le fait d'exécuter plusieurs fois la même instruction signifie que le programme tourne
en boucle. D'où la terminologie "boucle".

EXEMPLE 6 :

1. public class Boucles6


2. {
3. public static void main (String [] args)
4. {
5.
6. for(int i = 0; i <=5 ; i++)
7. {
8. System.out.println("2 fois " + i + " = " + 2 * i);
9. }
10.
11. }
12. }

Compilez puis exécutez ce programme, il sera affiché :

2 fois 0 = 0
2 fois 1 = 2
2 fois 2 = 4
2 fois 3 = 6
2 fois 4 = 8
2 fois 5 = 10

La boucle est une notion vraiment très puissante en programmation. A partir d’une
seule ligne de code, on peut avoir un nombre infiniment grand de lignes.

16
Ici, pour i = 0, affichage de 2 fois parce c’est entre doubles crochets. Ensuite, affichage
de i, donc affichage du contenu de la variable i puisque i n’est pas entre crochets. Puis
affichage d’un espace, suivi du signe =, suivi d’une autre espace. Parce que ces 3
caractères se trouvent entre crochets. Puis affichage l’opération 2 * i est effectuée.
Donc la multiplication de 2 par zéro. Ce qui donne 0. D' où l’affichage de 0. Même
explication pour les autres lignes. Ce qui change, c’est affichage de i et du produit de i
par 2

Lorsqu' on ne connaît pas le nombre exact de fois où une action doit être répétée, on
utilise la boucle while ou la boucle do...while.

EXEMPLE 8 :

1. public class Boucles8


2. {
3. public static void main (String [] args)
4. {
5. int a = 0;
6. while(a < 5)
7. {
8. System.out.println("Camille Likotelo");
9. a++;
10. }
11.
12. }
13. }
compilez puis exécutez, il sera affiché :

Camille Likotelo
Camille Likotelo
Camille Likotelo
Camille Likotelo

ligne 5 : valeur initiale de a = 0. Ensuite, ligne 6 veut dire, tant que a < 5. Cette
condition booléenne est vérifie puisque a = 0. ligne 8 : afficher le mot java puis placer
le curseur sur la ligne suivante. ligne 9 : incrémenter la variable a de 1 (a++ <=> a =
a + 1). Puisque a = 0 + 1 donc a = 1, on voit que la condition booléenne (a < 5) est
encore vérifiée. On retourne dans la boucle. on affiche le mot java. Puis on incrémente
a. Donc nouvelle valeur de a = 2. Ainsi de suite. Pour i = 5. La condition n' est plus
vérifiée. Alors, on sort de la boucle.

17
EXEMPLE 9 :

1. public class Boucles9


2. {
3. public static void main (String [] args)
4. {
5. int a = 0;
6. while(a < 5)
7. {
8. System.out.println("L2 GENIE");
9. a++;
10. }
11. System.out.println("valeur de a en sortie de boucle = " + a);
12. }
13. }
compilez puis exécutez, il sera affiché :

L2 GENIE
L2 GENIE
L2 GENIE
L2 GENIE

valeur de a en sortie de boucle = 5 Une autre différence entre for et while. Dans les
parenthèses de for, c' est toujours une condition booléenne. Il n' y a jamais d'
affectation de variable. Lorsque la condition booléenne repose sur une valeur de
variable, celle-ci aura été déclarée et affectée auparavant.

EXEMPLE 10 :
1. public class Boucles10
2. {
3. public static void main (String [] args)
4. {
5. int a = 0;
6. do
7. {
8. System.out.println("java");
9. a++;
10. }
11. while(a < 5);
12. }
13. }
compilez puis exécutez, il sera affiché :

18
java
java

java

a = 0; on exécute les instructions de la boucle. Affichage du mot java puis


incrémentation de a dont la valeur est maintenant = 1. Puis on vérifie la condition
booléenne. a = 1 donc a < 5. Condition vérifiée. Puis on exécute à nouveau les
instructions de la boucle. Ainsi de suite.

6.Classe MATH

Cette classe contient des fonctions permettant d'effectuer des opérations


mathématiques élémentaires telles que l'exponentiel, le logarithme, la racine carrée, les
fonctions trigonométriques, les minimums et les maximums, etc...

EXEMPLE 1 :

1. public class FonctionsMaths1


2. {
3. public static void main (String [] args)
4. {
5. double d1 = 6524.13; double d2 = - 6524.13;
6. float f1 = 25.11f; float f2 = - 25.11f;
7. long l1 = 36254789541l; long l2 = - 36254789541l;
8. int i1 = 23541; int i2 = - 23541;
9. System.out.println("valeur absolue de d1 = " + Math.abs(d1));
10.System.out.println("valeur absolue de d2 = " + Math.abs(d2));
11.System.out.println("valeur absolue de f1 = " + Math.abs(f1));
12.System.out.println("valeur absolue de f2 = " + Math.abs(f2));
13.System.out.println("valeur absolue de l1 = " + Math.abs(l1));
14.System.out.println("valeur absolue de l2 = " + Math.abs(l2));
15.System.out.println("valeur absolue de i1 = " + Math.abs(i1));
16. System.out.println("valeur absolue de i2 = " + Math.abs(i2));
17. }
18. }
Compilez puis exécutez ce programme, il sera affiché :

valeur absolue de d1 = 6524.13


valeur absolue de d2 = 6524.13
valeur absolue de f1 = 25.11
valeur absolue de f2 = 25.11
valeur absolue de l1 = 36254789541l
valeur absolue de l2 = 36254789541l
19
valeur absolue de i1 = 23541
valeur absolue de i2 = 23541

EXEMPLE 5 :
1. public class FonctionsMaths5
2. {
3. public static void main (String [] args)
4. {
5. double a = 24.253; double b = 35.14;
6. System.out.println("le plus grand nombre entre a et b = " + Math.max(a, b) );
8. System.out.println("le plus petit nombre entre a et b = " + Math.min(a, b) );
7.
8.
9. }
10. }
compilez puis exécutez ce programme, il sera affiché :

le plus grand nombre entre a et b = 35.14 le plus petit nombre entre a et b =


24.253

La fonction max() de la classe Math requiert deux arguments de type double et


fournit le plus grand des deux.
La fonction min() de la classe Math requiert deux arguments de type double et
fournit le plus petit des deux.

EXEMPLE 7:

1. public class FonctionsMaths7


2. {
3. public static void main (String [] args)
4. {
5. double a = 2.0; double b = 3.0; double c = 16.0;
6. System.out.println("a puissance b = " + Math.pow(a, b) );
7. System.out.println("b puissance a = " + Math.pow(b, a) );
8. System.out.println("racine carrée de c = " + Math.sqrt(c) );
9.
10. }
11. }

compilez puis exécutez, il sera affiché :

a puissance b = 8.0
b puissance a = 6.0 racine carrée de c = 4.0

20
La fonction pow() de la classe Math requiert 2 arguments de type double et fournit
un nombre de type double égal au premier nombre élevé à la puissance du deuxième.
Remarquez la différence dans les 2 premiers résultats.

La fonction sqrt() de la classe Math requiert un seul argument de type double et


fournit un nombre de type double égal à la racine carrée de l' argument .

EXEMPLE 8:

1. public class FonctionsMaths8


2. {
3. public static void main (String [] args)
4. {
5. System.out.println("un nombre au hasard compris entre 0 et 1 = " +
Math.random());
6.
7. }
8. }

compilez puis exécutez, il sera affiché :


un nombre au hasard compris entre 0 et 1 = ?

7. La bibliothèque Scanner

Exemple1 :
Import java.util.Scanner ;
Class Insésernonmbre{
Public static void main(String []args)
}
Int x,y,z;
System.out.println(‘’entrer deux entiers et calculer leur somme’’) ;
Scanner in=new Scanner(System.in);
X=in.nextInt();
y=in.nextInt();
z=x+y;
System.out.println(‘‘la somme de deux entiers est=’’+Z) ;
}
}
Exemple2
Import java.util.Scanner ;
class Pairetimpair{
Public static void main(String []args){
Int x ;
System.out.println(‘vérifier si un entier est pair ou impair ‘’) ;
21
Scanner in=new Scanner(System.in);
X=in.nextInt();
if(x%2==0)
System.out.println(‘’ce nombre est pair ‘’) ;
else
System.out.println(‘’ce nombre est impair ‘’) ;
}
}

8.LES INTERFACES GRAPHIQUES

Retenons que depuis qu’on na commencé le point, l’affichage des données se fait
toujours en mode console avec le System.out.println.

L’affichage en mode graphique se fait avec :

JOptionPane.swowMessageDialog (null, " votre message")

Exemple

import javax.swing.JOptionPane;
public class Jaspeluz {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null," JE RESTE DEBOUT " );

Après exécution :

Demandez à l’utilisateur d’introduire un caractère :

JOptionPane.showInputDialog ("Veuillez saisir votre nom")

Après exécution :
22
NB :Le java ne reconnait que le STRING. Si vous souhaitez manipuler les entiers,le
double… on convertit le String en entier ou en double.

Int c ;
Ex : int c=Integer.parseInt(JOptionPane.showInputDialog(" saisir un entier")

Integer.parseInt
Double K,

Double K=Integer.parseDouble(JOptionPane.showInputDialog(" saisir un entier")

Double.parseDouble

8.2.Netbeans et Interfaces
Le logiciel Netbeans nous fournit des interfaces plus conviviales pour réaliser un
projet :

23
24
25
26
9. LA MANIPULATION DES OBJETS AVEC DES CLASSES

 Structure de base

Une classe peut être comparée à un moule qui, lorsque nous le remplissons, nous
donne un objet ayant la forme du moule ainsi que toutes ses caractéristiques. Comme
quand vous étiez enfants, lorsque vous vous amusiez avec de la pâte à modeler.
vous devriez savoir que notre classe contenant la méthode main ressemble à ceci :
1 class MaclassMain{
2
3 public static void main(String[ ] args){
4 //Vos données, variables, différents traitements…
5 }//Fin de la méthode main

7 }//Fin de votre classe


Créez cette classe et cette méthode main (vous savez le faire, maintenant). Puisque
nous allons faire de la POO (Programmation Orientée Objet), nous allons créer une
seconde classe dans ce fameux projet ! Créons sans plus tarder une classe Ville. Allez
dans File > New > Class ou utilisez le raccourci dans la barre d'outils, comme sur la
figure suivante :
- Création d'une nouvelle classe Java dans Netbeans
Nommez votre classe « Ville » (avec un « V » majuscule, convention de nommage
oblige). Cette fois, vous ne devez pas y créer la méthode main.
Il ne peut y avoir qu'une seule méthode main active par projet ! Souvenez-vous que
celle-ci est le point de départ de votre programme. Pour être tout à fait précis, plusieurs
méthodes main peuvent cohabiter dans votre projet, mais une seule sera considérée
comme le point de départ de votre programme !

- Classe Ville
Ici, notre classe Ville est précédée du mot clé public. Vous devez savoir que lorsque
nous créons une classe comme nous l'avons fait, le netbeans nous facilite la tâche en
ajoutant automatiquement ce mot clé, qui correspond à la portée de la classe. Retenons
pour l'instant que public class Une Classe{ } et class Une Classe{} sont presque
équivalents !
En programmation, la portée détermine qui peut faire appel à une classe, une méthode
ou une variable. Vous avez déjà rencontré la portée public : cela signifie que tout le
monde peut faire appel à l'élément. Ici dans le cas qui nous intéresse il s'agit d'une
méthode. Une méthode marquée comme public peut donc être appelée depuis
n'importe quel endroit du programme.
Nous allons ici utiliser une autre portée : private. Elle signifie que notre méthode ne
pourra être appelée que depuis l'intérieur de la classe dans laquelle elle se trouve ! Les
27
méthodes déclarées private correspondent souvent à des mécanismes internes à une
classe que les développeurs souhaitent « cacher » ou simplement ne pas rendre
accessibles de l'extérieur de la classe…
Il en va de même pour les variables. Nous allons voir que nous pouvons protéger des
variables grâce au mot clé private. Le principe sera le même que pour les méthodes.
Ces variables ne seront alors accessibles que dans la classe où elles seront nées…
Bon. Toutes les conditions sont réunies pour commencer activement la
programmation orientée objet ! Et si nous allions créer notre première ville ?

 Les constructeurs

Vu que notre objectif dans cette partie est de construire un objet Ville, il va falloir
définir les données qu'on va lui attribuer. Nous dirons qu'un objet Ville possède :
un nom, sous la forme d'une chaîne de caractères ;
un nombre d'habitants, sous la forme d'un entier ;
un pays apparenté, sous la forme d'une chaîne de caractères.
Nous allons faire ceci en mettant des variables d'instance (de simples variables
identiques à celles que vous manipulez habituellement) dans notre classe. Celle-ci va
contenir une variable dont le rôle sera de stocker le nom, une autre stockera le nombre
d'habitants et la dernière se chargera du pays ! Voici à quoi ressemble notre
classe Ville à présent :
1 public class Ville{
2 String nomVille;
3 String nomPays;
4 int nbreHabitants;
5 }
Contrairement aux classes, les variables d'instance présentes dans une classe
sont public si vous ne leur spécifiez pas de portée. Alors, on parle de variable
d'instance, parce que dans nos futures classes Java qui définiront des objets, il y aura
plusieurs types de variables. Pour le moment, sachez qu'il y a trois grands types de
variables dans une classe objet :

a) Les variables d'instance : ce sont elles qui définiront les caractéristiques de


notre objet.
b) Les variables de classe : celles-ci sont communes à toutes les instances de
votre classe.
c) Les variables locales : ce sont des variables que nous utiliserons pour travailler
dans notre objet.
Dans l'immédiat, nous allons travailler avec des variables d'instance afin de créer des
objets différents. Il ne nous reste plus qu'à créer notre premier objet, pour ce faire,
nous allons devoir utiliser ce qu'on appelle des constructeurs.

28
Un constructeur est une méthode d'instance qui va se charger de créer un objet et, le
cas échéant, d'initialiser ses variables de classe ! Cette méthode a pour rôle de signaler
à la JVM (Java Virtual Machine) qu'il faut réserver de la mémoire pour notre futur
objet et donc, par extension, d'en réserver pour toutes ses variables.
Notre premier constructeur sera ce qu'on appelle communément un constructeur par
défaut, c'est-à-dire qu'il ne prendra aucun paramètre, mais permettra tout de même
d'instancier un objet, et vu que nous sommes perfectionnistes, nous allons y initialiser
nos variables d'instance. Voici votre premier constructeur :
1 public class Ville{
2 //Stocke le nom de notre ville
3 String nomVille;
4 //Stocke le nom du pays de notre ville
5 String nomPays;
6 //Stocke le nombre d'habitants de notre ville
7 int nbreHabitants;
8
9 //Constructeur par défaut
10 public Ville(){
11 System.out.println("Création d'une ville !");
12 nomVille = "Inconnu";
13 nomPays = "Inconnu";
14 nbreHabitants = 0;
15 }
16 }
Nous avons remarqué que le 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 ! Ceci est une
règle immuable : le (les) constructeur(s) d'une classe doit (doivent) porter le même nom que la classe
!
Son corollaire est qu'un objet peut avoir plusieurs constructeurs. Il s'agit de la même
méthode, mais surchargée ! Dans notre premier constructeur, nous n'avons passé
aucun paramètre, mais nous allons bientôt en mettre.
Vous pouvez d'ores et déjà créer une instance de Ville. Cependant, commencez par
vous rappeler qu'une instance d'objet se fait grâce au mot clé new, comme lorsque
vous créez une variable de type String.
Maintenant, vu que nous allons créer des objets Ville, nous allons procéder comme
avec les String. Vérifions que l'instanciation s’effectue comme il faut. Allons dans
notre classe contenant la méthode main et instancions un objet Ville. Je suppose que
vous avez deviné que le type de notre objet sera Ville !
1 public class Maville{
2 public static void main(String[] args){
3 Ville ville = new Ville();

29
4 }
5 }
Exécutez ce code, vous devriez avoir l'équivalent de la figure suivante sous les yeux :
Création d'un objet Ville
Maintenant, nous devons mettre des données dans notre objet, ceci afin de pouvoir
commencer à travailler… Le but sera de parvenir à une déclaration d'objet se faisant
comme ceci :
1 Ville ville1 = new Ville("Kinshasa", 458555, "RDC");
Vous avez remarqué qu'ici, les paramètres sont renseignés : eh bien il suffit de créer
une méthode qui récupère ces paramètres et initialise les variables de notre objet, ce
qui achèvera notre constructeur d'initialisation.
Voici le constructeur de notre objet Ville, celui qui permet d'avoir des objets avec des
paramètres différents :
1 public class Ville {
2
3 //Stocke le nom de notre ville
4 String nomVille;
5 //Stocke le nom du pays de notre ville
6 String nomPays;
7 //Stocke le nombre d'habitants de notre ville
8 int nbreHabitants;
9
10 //Constructeur par défaut
11 public Ville(){
12 System.out.println("Création d'une ville !");
13 nomVille = "Inconnu";
14 nomPays = "Inconnu";
15 nbreHabitants = 0;
16 }
17
18 //Constructeur avec paramètres
19 //J'ai ajouté un « p » en première lettre des paramètres.
20 //Ce n'est pas une convention, mais ça peut être un bon moyen de les repérer.
21 public Ville(String pNom, int pNbre, String pPays)
22 {
23 System.out.println("Création d'une ville avec des paramètres !");
24 nomVille = pNom;
25 nomPays = pPays;
26 nbreHabitants = pNbre;

30
27 }
28 }
Dans ce cas, l'exemple de déclaration et d'initialisation d'un objet Ville que je vous ai
montré un peu plus haut fonctionne sans aucun souci ! Mais il vous faudra respecter
scrupuleusement l'ordre des paramètres passés lors de l'initialisation de votre objet :
sinon, c'est l'erreur de compilation à coup sûr ! Ainsi :
1 //L'ordre est respecté -> aucun souci
2 Ville ville1 = new Ville("Kinshasa", 123456789, "France");
3 //Erreur dans l'ordre des paramètres -> erreur de compilation au final
4 Ville ville2 = new Ville(12456, "France", "Lille");
Par contre, notre objet présente un gros défaut : les variables d'instance qui le
caractérisent sont accessibles dans votre classe contenant votre main ! Ceci implique
que vous pouvez directement modifier les attributs de la classe. Testez ce code et vous
verrez que le résultat est identique à la figure suivante :
1 public class Sdz1 {
2
3 public static void main(String[] args)
4 {
5 Ville ville = new Ville();
6 System.out.println(ville.nomVille);
7 ville.nomVille = " Kinshasa la belle! ! ! !";
8 System.out.println(ville.nomVille);
9
10 Ville ville2 = new Ville("Kinshasa", 458555, "RDC");
11 ville2.nomPays = "Kinshasa la belle ! ! ! ! ";
12 System.out.println(ville2.nomPays);
13 }
14
15 }

Modification des données de notre objet

Vous constatez que nous pouvons accéder aux variables d'instance en utilisant le « . »,
comme lorsque vous appelez la méthode subString() de l'objet String. C'est très risqué,
et la plupart des programmeurs Java vous le diront. Dans la majorité des cas, nous
allons contrôler les modifications des variables de classe, de manière à ce qu'un code
extérieur ne fasse pas n'importe quoi avec nos objets ! En plus de ça, imaginez que
vous souhaitiez faire quelque chose à chaque fois qu'une valeur change ; si vous ne
protégez pas vos données, ce sera impossible à réaliser… C'est pour cela que nous
protégeons nos variables d'instance en les déclarant private, comme ceci :
31
1 public class Ville {
2
3 private String nomVille;
4 private String nomPays;
5 private int nbreHabitants;
6
7 //…
8 }
Désormais, ces attributs ne sont plus accessibles en dehors de la classe où ils sont
déclarés ! Nous allons maintenant voir comment accéder tout de même à nos données.
 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 nous permettra d'en faire de même en écriture ! Grâce
aux accesseurs, vous pourrez afficher les variables de vos objets, et grâce aux
mutateurs, vous pourrez les modifier :
1 public class Ville {
2
3 //Les variables et les constructeurs n'ont pas changé…
4
5 //************* ACCESSEURS *************
6
7 //Retourne le nom de la ville
8 public String getNom() {
9 return nomVille;
10 }
11
12 //Retourne le nom du pays
13 public String getNomPays()
14 {
15 return nomPays;
16 }
17
18 // Retourne le nombre d'habitants
19 public int getNombreHabitants()
20 {
21 return nbreHabitants;
22 }
23
24 //************* MUTATEURS *************
25

32
26 //Définit le nom de la ville
27 public void setNom(String pNom)
28 {
29 nomVille = pNom;
30 }
31
32 //Définit le nom du pays
33 public void setNomPays(String pPays)
34 {
35 nomPays = pPays;
36 }
37
38 //Définit le nombre d'habitants
39 public void setNombreHabitants(int nbre)
40 {
41 nbreHabitants = nbre;
42 }
43 }
Nos accesseurs sont bien des méthodes, et elles sont public pour que vous puissiez y
accéder depuis une autre classe que celle-ci : depuis le main, par exemple. 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.
Je vous ai fait faire la différence entre accesseurs et mutateurs, mais généralement,
lorsqu'on parle d'accesseurs, ce terme inclut également les mutateurs. Autre chose : il
s'agit ici d'une question de convention de nommage. Les accesseurs commencent
par get et les mutateurs par set, comme vous pouvez le voir ici. On parle d'ailleurs
parfois de Getters et de Setters.
À présent, essayez ce code dans votre méthode main :
1 Ville v = new Ville();
2 Ville v1 = new Ville("Matadi", 123456, "RDC");
3 Ville v2 = new Ville("Lubumbashi", 321654, "RDC");
4 System.out.println("\n v = "+v.getNom()+" ville de "+v.getNombreHabitants()+
5 " habitants se situant en "+v.getNomPays());
6 System.out.println(" v1 = "+v1.getNom()+" ville de "+v1.getNombreHabitants()+
7 " habitants se situant en "+v1.getNomPays());
8 System.out.println(" v2 = "+v2.getNom()+" ville de "+v2.getNombreHabitants()+
9 " habitants se situant en "+v2.getNomPays()+"\n\n");
10
11 /*
12 Nous allons interchanger les Villes v1 et v2

33
13 tout ça par l'intermédiaire d'un autre objet Ville.
14 */
15 Ville temp = new Ville();
16 temp = v1;
17 v1 = v2;
18 v2 = temp;
19
20 System.out.println(" v1 = "+v1.getNom()+" ville de "+v1.getNombreHabitants()+
21 " habitants se situant en "+v1.getNomPays());
22 System.out.println(" v2 = "+v2.getNom()+" ville de "+v2.getNombreHabitants()+
23 " habitants se situant en "+v2.getNomPays()+"\n\n");
24
25 /*
26 Nous allons maintenant interchanger leurs noms
27 cette fois par le biais de leurs mutateurs.
28 */
29 v1.setNom("Paris");
v2.setNom("brazza");

System.out.println(" v1 = "+v1.getNom()+" ville de "+v1.getNombreHabitants()+


" habitants se situant en "+v1.getNomPays());
System.out.println(" v2 = "+v2.getNom()+" ville de "+v2.getNombreHabitants()+
" habitants se situant en "+v2.getNomPays()+"\n\n");
À la compilation, vous devriez obtenir la figure suivante :
Essai des accesseurs

Nous voulons que la classe Ville gère la façon de déterminer la catégorie elle-même,
et non que cette action puisse être opérée de l'extérieur. La méthode qui fera ceci sera
donc déclarée private.
Par contre, un problème va se poser ! Vous savez déjà qu'en Java, on appelle les
méthodes d'un objet comme ceci : monString.subString;. Cependant, vu qu'il va falloir
qu'on travaille depuis l'intérieur de notre objet, vous allez encore avoir un mot clé à
retenir…

Cette fois, il s'agit du mot clé this. Voici tout d'abord le code de notre classe Ville en
entier, c'est-à-dire comportant les méthodes dont on vient de parler :
1 public class Ville {

34
2
3 private String nomVille;
4 private String nomPays;
5 private int nbreHabitants;
6 private char categorie;
7
8 public Ville(){
9 System.out.println("Création d'une ville !");
10 nomVille = "Inconnu";
11 nomPays = "Inconnu";
12 nbreHabitants = 0;
13 this.setCategorie();
14 }
15
16 public Ville(String pNom, int pNbre, String pPays)
17 {
18 System.out.println("Création d'une ville avec des paramètres !");
19 nomVille = pNom;
20 nomPays = pPays;
21 nbreHabitants = pNbre;
22 this.setCategorie();
23 }
24
25 //Retourne le nom de la ville
26 public String getNom() {
27 return nomVille;
28 }
29
30 //Retourne le nom du pays
31 public String getNomPays()
32 {
33 return nomPays;
34 }
35
36 // Retourne le nombre d'habitants
37 public int getNombreHabitants()
38 {
39 return nbreHabitants;
40 }
41
42 //Retourne la catégorie de la ville
43 public char getCategorie()
44 {

35
45 return categorie;
46 }
47
48 //Définit le nom de la ville
49 public void setNom(String pNom)
50 {
51 nomVille = pNom;
52 }
53
54 //Définit le nom du pays
55 public void setNomPays(String pPays)
56 {
57 nomPays = pPays;
58 }
59
60 //Définit le nombre d'habitants
61 public void setNombreHabitants(int nbre)
62 {
63 nbreHabitants = nbre;
64 this.setCategorie();
65 }
66
67 //Définit la catégorie de la ville
68 private void setCategorie() {
69
70 int bornesSuperieures[ ] = {0, 1000, 10000, 100000, 500000, 1000000, 5000000, 10000000};
71 char categories[ ] = {'?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
72
73 int i = 0;
74 while (i < bornesSuperieures.length && this.nbreHabitants >
75 bornesSuperieures[ i])
76 i++;
77
78 this.categorie = categories[ i];
79 }
80
81 //Retourne la description de la ville
82 public String decrisToi(){
83 return "\t"+this.nomVille+" est une ville de "+this.nomPays+ ", elle comporte
84 : "+this.nbreHabitants+" habitant(s) => elle est donc de catégorie :
85 "+this.categorie;
86 }
87

36
88 //Retourne une chaîne de caractères selon le résultat de la comparaison
89 public String comparer(Ville v1){
90 String str = new String();
91
92 if (v1.getNombreHabitants() > this.nbreHabitants)
93 str = v1.getNom()+" est une ville plus peuplée que "+this.nomVille;
94
95 else
96 str = this.nomVille+" est une ville plus peuplée que "+v1.getNom();
97
return str;
}
}
Pour simplifier, this fait référence à l'objet courant ! Bien que la traduction anglaise
exacte soit « ceci », il faut comprendre « moi ». À l'intérieur d'un objet, ce mot clé
permet de désigner une de ses variables ou une de ses méthodes.

AUTRES EXERCICES SUR LES OBJETS


package solutionboucle;
import javax.swing.JOptionPane;

public class Operation{

private double a, b;
public void recupererAttributs(double a, double b){
this.a = a;
this.b = b;
}
public double addition(){
double somme = (a + b);
return somme;
}
public double soustraction(){
double difference = (a - b);
return difference;
}
public double multiplication(){
double produit = (a * b);
return produit;
}
public double division(){
37
double quotient = (float)a / b;
return quotient;
}
public double moyenne(){
double moy = (float)(a + b)/2;
return moy;
}
public void afficherAddition(){
JOptionPane.showMessageDialog(null,""+addition());
}
public void afficherSoustraction(){
JOptionPane.showMessageDialog(null,""+soustraction());
}
public void afficherMultiplication(){
JOptionPane.showMessageDialog(null,""+multiplication());
}
public void afficherDivision(){
JOptionPane.showMessageDialog(null,""+division());
}
public void afficherMoyenne(){
JOptionPane.showMessageDialog(null,""+moyenne());
}
}

 Classe Principale package


solutionboucle; import
javax.swing.JOptionPane; public class
SolutionBoucle {
public static void main(String[ ] args) {
Class1 calculatrice = new Class1();
int ch=0;
do{
String choix = JOptionPane.showInputDialog ("\n 1: Addition \n 2 : Soustraction
\n 3 : Multiplication \n 4 : Division \n 5 : Moyenne");
int chx=Integer.parseInt(choix);
String strnombre1 = JOptionPane.showInputDialog("Entrer le premier nombre"); int
nombre1 = Integer.parseInt(strnombre1);
38
String strnombre2 = JOptionPane.showInputDialog("Entrer le deuxieme nombre");
int nombre2 = Integer.parseInt(strnombre2);

switch (chx){
case 1:{
calculatrice.recuperer Attributs(nombre1,nombre2);
calculatrice.addition(); calculatrice.afficherAddition();
}
break;
case 2 :
{

calculatrice.recupererAttributs(nombre1, nombre2);
calculatrice.soustraction();
calculatrice.afficherSoustraction();
}
break;
case 3 :
{
calculatrice.recupererAttributs(nombre1, nombre2);
calculatrice.multiplication();
calculatrice.afficherMultiplication();
}
break;
case 4 :
{
calculatrice.recupererAttributs(nombre1, nombre2);
calculatrice.division();
calculatrice.afficherDivision();
}
39
{

break;

case 5 :
calculatrice.recupererAttributs(nombre1, nombre2);
calculatrice.moyenne();
calculatrice.afficherMoyenne();
}
break;
}
}while(ch!=6);System.exit(0);
}
}

Exemple 2 public class Connexion {


public static void main(String[] args) {
// TODO code application logic here
String id="MPEMBA";
String demande=JOptionPane.showInputDialog(null, "Veuillez introduire votre
identifiant:");
if(demande.equals("MPEMBA")||demande.equals("mpemba"))
{
JOptionPane.showMessageDialog(null, "Vous êtes Identifié");
JOptionPane.showMessageDialog(null, "Luz y fuerza para to dos");
}
else
{
JOptionPane.showMessageDialog(null,"Erreur Vous n\'êtes pas");
JOptionPane.showMessageDialog(null,"tapez un bon mot de pass");

40
}}}
AUTRE EXEMPLE

Soit le scénario suivant : dans une société, un employé est décrit par les éléments
suivants :Nom,Age ?salaire
Un technicien est décrit en plus par l’attribut grade et la méthode prime() et la
redéfinition de la méthode toString() et la méthode calculeSalaire().
- Si grade =1 alors Prime = 100
- Si grade =2 alors Prime = 200
- Si grade =3 alors Prime = 300
Travail à faire
1 Ecrire la classe employée
2. Ecrire la classe technicien
3 .Ecrire un programme qui saisit un employé puis un technicien et affiche leurs
informations avant et après augmentation de leurs salaires

Emplo

Nom
Age
string
Salaire
int
- float
Augmentation()
Afficher()
void
Calculesalaire()
void
float

Technicie
n
Grad:byt
e e
Prime(:in
package prime; toString
) ;Strin
t
Calculesalaire()
() g
float
public class Employe {
private String nom; private
int age; private int salaire;
private int salairenet; //
Constructeur par défaut
public Employe(String nom, int age, int salaire)
{

41
this.nom= nom;
this.age= age;
this.salaire=salaire;
}

public float getSalaire()


{// recupérateur

return(this.salaire);
}
public String view(){
return nom+"\t"+age+"\t"+ salaire;
}
public void afficher(){
System.out.println(view());
}

public void augmentation(int a){ salairenet=salaire+a;


System.out.println(salairenet);
}
public float query(){
return salaire;
}
public void affiche5()
{
System.out.println( view()+ "\t" + salairenet);
// System.out.println(query());
}

Autre classe (Principale)


package prime;

import java.util.Scanner;

public class Prime {

public static void main(String[] args) {


int
i=1;

42
int ii=1;
String nom =null;
int age=0; int
salaire=0; byte
gr=0;

do{

Scanner jan= new Scanner(System.in);


Scanner jaspe=new Scanner(System.in);

System.out.println("======MENU D'APPLICATION======\n"
+"1 Enregistrement\n"
+"2 afficher \n"
+"3 Quitter\n"); int
v=jaspe.nextInt();
switch(v){
case 1:{

System.out.println("Veuillez saisir le nom");


nom= jan.nextLine();
System.out.println("Veuillez saisir age");
age= jan.nextInt();
System.out.println("Veuillez saisir le salaire");
salaire= jan.nextInt();
System.out.println("Veuillez saisir le grade");
gr= jan.nextByte();
Employe k = new Employe(nom,age,salaire);
Techn ol=new Techn (nom,age,salaire,gr);

}break;
case 2:{

Employe k = new Employe(nom,age,salaire);


Techn ol=new Techn (nom,age,salaire,gr);

k.getSalaire();
k.affiche5();
ol.afficher4();

}break;

43
case 3:System.exit(0);break;
default: break;
}
}while(ii!=3);

}
}

Héritage
package prime; public class Techn extends Employe{
private byte grade; public Techn(String nom, int age, int
salaire, byte grade)
{
super(nom,age,salaire); this.grade=grade;
}
public int prime3()
{
switch(grade)
{ case 1:
return 100; case 2:
return 200; case 3:
return 300;
}
return 0;
}
public float calculSalaire()
{
return getSalaire()+prime3();

44
}
public void primer()
{
System.out.println(calculSalaire());
}
public String view(){ return
super.view()+"\t"+grade;
}
public void afficher4(){
System.out.println(view()+"\t"+calculSalaire());
}
// public void affiche5(){
// System.out.println( view()+"\t"+ calculSalaire());
// }

45
VI. Java et le JDBC

La présentation des classes de l'API JDBC

Toutes les classes de JDBC sont dans le package java.sql. Il faut donc l'importer dans
tous les programmes devant utiliser JDBC.

Exemple :
1.import java.sql.*;

Il y a 4 classes importantes : DriverManager, Connection, Statement (et PreparedStatement), et


ResultSet, chacune correspondant à une étape de l'accès aux données :

Classe Rôle
DriverManager Charger et configurer le driver de la base de données.

Connection Réaliser la connexion et l'authentification à la base de


données.
Statement (et PreparedStatement) Contenir la requête SQL et la transmettre à la base de
données.
ResultSet Parcourir les informations retournées par la base de
données dans le cas d'une sélection de données

Chacune de ces classes dépend de l'instanciation d'un objet de la précédente classe.

2.. La connexion à une base de données

La connexion à une base de données requiert au préalable le chargement du pilote JDBC qui sera
utilisé pour communiquer avec la base de données. Une fabrique permet alors de créer une instance
de type Connection qui va encapsuler la connexion à la base de données.

3.Le chargement du pilote

Pour se connecter à une base de données via ODBC, il faut tout d'abord charger le pilote JDBC-
ODBC qui fait le lien entre les deux.

Exemple ( code Java 1.1 ) :


1.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Pour se connecter à une base en utilisant un driver spécifique, la documentation du driver fournit le
nom de la classe à utiliser. Par exemple, si le nom de la classe est jdbc.DriverXXX, le chargement du
driver se fera avec le code suivant :

Class.forName("jdbc.DriverXXX");

Exemple : Chargement du pilote pour une base PostgreSQL sous Linux


1.Class.forName("postgresql.Driver");

46
Exemple : Chargement du pilote pour une base Mysql sous Windows
1.Class.forName("sql.Driver");

Il n'est pas nécessaire de créer une instance de cette classe et de l'enregistrer avec le DriverManager
car l'appel à Class.forName le fait automatiquement : ce traitement charge le pilote et crée une
instance de cette classe.

La méthode static forName() de la classe Class peut lever l'exception


java.lang.ClassNotFoundException.

4. L'établissement de la connexion

Pour se connecter à une base de données, il faut instancier un objet de la classe Connection en lui
précisant sous forme d'URL la base à accéder.

Exemple ( code Java 1.1 ) : Etablir une connexion sur la base testDB via ODBC
1.String DBurl = "jdbc:odbc:testDB";

2.con = DriverManager.getConnection(DBurl);

La syntaxe URL peut varier d'un type de base de données à l'autre mais elle est toujours de la forme
: protocole:sous_protocole:nom

"jbdc" désigne le protocole et vaut toujours "jdbc". "odbc" désigne le sous protocole qui définit le
mécanisme de connexion pour un type de base de données.

Le nom de la base de données doit être celui saisi dans le nom de la source sous ODBC. La méthode
getConnection() peut lever une exception de la classe java.sql.SQLException.

Le code suivant décrit la création d'une connexion avec un user et un mot de passe :

Exemple ( code Java 1.1 ) :


1.Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");

A la place de " myLogin " ; il faut mettre le nom du user qui se connecte à la base et mettre son mot
de passe à la place de "myPassword "

Exemple ( code Java 1.1 ) :


1.String url = "jdbc:odbc:factures";

3.Connection con = DriverManager.getConnection(url, "toto", "passwd");

La documentation d'un autre driver indiquera le sous-protocole à utiliser (le protocole à mettre
derrière jdbc dans l'URL).

Exemple : Connection à la base Mysql nommée getionpaie avec le user root et le mot de
passe jaspe sur la machine locale et comme port : 3306

47
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/getionpaie","root","ja
spe");

5. L'exécution de requêtes SQL

Les requêtes d'interrogation SQL sont exécutées avec les méthodes d'un objet Statement que l'on
obtient à partir d'un objet Connection

Exemple ( code Java 1.1 ) :


01.ResultSet résultats = null;
02.String requete = "SELECT * FROM client";
03.
04.try {
05.Statement stmt = con.createStatement();
06.résultats = stmt.executeQuery(requete);
07.} catch (SQLException e) {
08.//traitement de l'exception
09.}

48
Exemple complet

QUELQUES REQUETES SQL

 L'exécution de requêtes SQL

Les requêtes d'interrogation SQL sont exécutées avec les méthodes d'un objet Statement que l'on
obtient à partir d'un objet Connection

Exemple ( code Java 1.1 ) :


01.ResultSet résultats = null;
02.String requete = "SELECT * FROM client";
04.try {
05.Statement stmt = con.createStatement();
06.résultats = stmt.executeQuery(requete);
07.} catch (SQLException e) {
08.//traitement de l'exception
09.}

49
Un objet de la classe Statement permet d'envoyer des requêtes SQL à la base. La création
d'un objet Statement s'effectue à partir d'une instance de la classe Connection :

Exemple ( code Java 1.1 ) :


1.Statement stmt = con.createStatement();

Pour une requête de type interrogation (SELECT), la méthode à utiliser de la classe Statement est
executeQuery(). Pour des traitements de mise à jour, il faut utiliser la méthode executeUpdate().
Lors de l'appel à la méthode d'exécution, il est nécessaire de lui fournir en paramètre la requête
SQL sous forme de chaine.

Le résultat d'une requête d'interrogation est renvoyé dans un objet de la classe ResultSet par la
méthode executeQuery().

Exemple ( code Java 1.1 ) :


1.ResultSet rs = stmt.executeQuery("SELECT * FROM employe");

La méthode executeUpdate() retourne le nombre d'enregistrements qui ont été mis à jour

Exemple ( code Java 1.1 ) :


01....
02.
03.//insertion d'un enregistrement dans la table client
04.
05.requete = "INSERT INTO client VALUES (3,'client 3','prenom 3')";
06.try {
07.Statement stmt = con.createStatement();
08.int nbMaj = stmt.executeUpdate(requete);
09.affiche("nb mise a jour = "+nbMaj);
10.} catch (SQLException e) {
11.e.printStackTrace();
12.}
13.
14....

Lorsque la méthode executeUpdate() est utilisée pour exécuter un traitement de type DDL ( Data
Definition Langage : définition de données ) comme la création d'un table, elle retourne 0. Si la
méthode retourne 0, cela peut signifier deux choses : le traitement de mise à jour n'a affecté aucun
enregistrement ou le traitement concernait un traitement de type DDL.

Si l'on utilise executeQuery() pour exécuter une requête SQL ne contenant pas d'ordre SELECT,
alors une exception de type SQLException est levée.

Exemple ( code Java 1.1 ) :


01....
02.
03.requete = "INSERT INTO client VALUES (4,'client 4','prenom 4')";
04.try {
05.Statement stmt = con.createStatement();
06.ResultSet résultats = stmt.executeQuery(requete);

50
07.} catch (SQLException e) {
08.e.printStackTrace();
09.}
10.
11....

Travaux

51
Le programme fonctionne comme le module de la pile CMOS
--------------------------
package joursemaine;
import java.util.Calendar;
import javax.swing.JOptionPane;
//* @author MPEMBA NGOMA
public class Joursemaine {

public static void main(String[] args) {


// TODO code application logic here
Calendar c=Calendar.getInstance();
if(c.get(Calendar.DAY_OF_WEEK)= = Calendar.MONDAY)
JOptionPane.showMessageDialog(null, "Nous sommes Lundi");
if(c.get(Calendar.DAY_OF_WEEK)= = Calendar.TUESDAY)
JOptionPane.showMessageDialog(null, "Nous sommes Mardi");

//continuer avec wednesday,thursday,friday,saturday et sunday


}
}

String Nomduclient;
String Designation;
int Prixunitaire;
int Quantité;
int Netàpayer;
Nomduclient=jTextField1.getText ();
Designation=jTextField2.getText ();
Prixunitaire=Integer.parseInt(jTextField3.getText());
Quantité=Integer.parseInt(jTextField4.getText());
Netàpayer=Prixunitaire*Quantité;
Lab.setText(Integer.toString(Netàpayer));

52
if(jTextField1.getText().equals("luz")&jPasswordField1.getText().equals("machine"))

menu3 luz=new menu3();


luz.setVisible(true);
this.setVisible(false);
}

Facture JAN=new Facture();


JAN.setVisible(true);

Les trois interfaces précédentes se trouvent dans un seul package

53
public void CurrentDate()
{
Thread clock= new Thread()
{
public void run()
{
for(;;)
{

//Date
Calendar cal= new GregorianCalendar();

//heure
int second=cal.get(Calendar.SECOND);
int minute =cal.get(Calendar.MINUTE);
int hour =cal.get(Calendar.HOUR);
jaspe.setText( hour+" : "+minute+" : "+second);

try{
sleep(1000);

}catch(Exception ex){}
}

}
};
clock.start();
}
Après exécution

package reduction;
import javax.swing.JOptionPane;
* @author mpemba
public class Reduction {
* @param args the command line arguments
*/
public static void main(String[] args) {
try{
// TODO code application logic here
int montant=Integer.parseInt(JOptionPane.showInputDialog("Veuillez saisir votre Nom"));
if (montant>10000)
{
JOptionPane.showMessageDialog(null,"vous avez une réduction de 5% et vous
payez"+(montant-(montant*0.05)+"Fc"));
}
else
{
JOptionPane.showMessageDialog(null,"vous avez une réduction de 2% et vous
payez"+(montant-(montant*0.02))+"Fc"+"TVA de"+(montant-(montant*1.5))+"Fc");
54
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"donnée erronée"+e);
}
}
}

BOUTON ENREGISTRER

public class Con_Etudiants


{
ResultSet Rs;
Statement St;
Etudiants parent;
public Con_Etudiants(Etudiants parent)
{
this.parent = parent;
}
public void save()
{
Connection con =getConnectionDataBase.getConnection();
String E1= parent.Label3.getText().toUpperCase();
String E2= parent.Text1.getText().toUpperCase();
String E3= parent.Text2.getText().toUpperCase();
String E4= parent.Combo1.getSelectedItem().toString().toUpperCase();
String E5= parent.Combo2.getSelectedItem().toString().toUpperCase();
String E6= parent.Combo3.getSelectedItem().toString().toUpperCase();
String E7= parent.Combo4.getSelectedItem().toString().toUpperCase();
try{
55
St= con.createStatement();
int x = St.executeUpdate("insert into etudiants values('"
+E1+"','"
+E2+"','"
+E3+"','"
+E4+"','"
+E5+"','"
+E6+"','"
+E7+"')");
St.close();
if(x==1)
{

JOptionPane.showMessageDialog(null,"ENREGISTREMENT REUSSI AVEC


SUCCE!","L'I.S.P/MBANZA-NGUNGU",JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception e){JOptionPane.showMessageDialog(null,"Ce numéro existe
déjà,veuillez introduire "+e,"Etudiant ISP",JOptionPane.ERROR_MESSAGE);}
}

=========================================================
======
AFFICHAGE GRILLE
public void grille1()
{
Connection con =getConnectionDataBase.getConnection();
try {
// String dt=parent.Label6.getText().toUpperCase();
JTable tb;
tb=parent.messii;
St =con.createStatement();
Rs = St.executeQuery("select*from etudiants");
int i = 0;
while (Rs.next())
{
tb.setValueAt(Rs.getString(1), i, 0);
tb.setValueAt(Rs.getString(2), i, 1);
tb.setValueAt(Rs.getString(3), i, 2);
tb.setValueAt(Rs.getString(4), i, 3);
tb.setValueAt(Rs.getString(5), i, 4);
tb.setValueAt(Rs.getString(6), i, 5);
tb.setValueAt(Rs.getString(7), i, 6);

i++;
} St.close();

} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Ce Problème ci est survenu: "+e);
}
}

56
Exercices
int nbre1;
int nbre2;
int nbre3;
nbre1=Integer.parseInt(A.getText());
nbre2=Integer.parseInt(B.getText());
nbre3=Integer.parseInt(C.getText());
if(nbre1<nbre2 & nbre2<nbre3){
LUZ.setText(" ces nombres sont croissants");
LUZ.setBackground(Color.red);
LUZ.setForeground(Color.WHITE);
}
else if(nbre1>nbre2 & nbre2>nbre3){
LUZ.setText(" ces nombres sont décroissants");
LUZ.setBackground(Color.BLUE);
LUZ.setForeground(Color.WHITE);
}
else if(nbre1==nbre2 & nbre2==nbre3){
LUZ.setText(" ces nombres sont indentiques");
LUZ.setBackground(Color.ORANGE);
LUZ.setForeground(Color.WHITE);
}
else {
LUZ.setText(" ces nombres sont en desordre");
LUZ.setBackground(Color.BLACK);
LUZ.setForeground(Color.WHITE);
}
}

57
EXERCICE

String Numero;
Numero=jTextField1.getText();
if(Numero.equals("089")){
jLabel3.setText("tigo");
jLabel3.setBackground(Color.PINK);
jLabel3.setForeground(Color.WHITE);
}
else if(Numero.equals("09")){
jLabel3.setText("Airtel");
jLabel3.setBackground(Color.RED);
jLabel3.setForeground(Color.WHITE);
}
else if(Numero.equals("081")){
jLabel3.setText("Vodacom");
jLabel3.setBackground(Color.blue);
jLabel3.setForeground(Color.WHITE);

}
else if(Numero.equals("084")){
jLabel3.setText("Orange");
jLabel3.setBackground(Color.ORANGE);
jLabel3.setForeground(Color.WHITE);

}
else if(Numero.equals("090")||Numero.equals("099")){
jLabel3.setText("Africell");
jLabel3.setBackground(Color.ORANGE);
jLabel3.setForeground(Color.WHITE);

}
else if(Numero.equals("085")){
jLabel3.setText("Orange");
jLabel3.setBackground(Color.black);
jLabel3.setForeground(Color.ORANGE);

}
else if(Numero.equals("081")){
jLabel3.setText("Vodacom");
jLabel3.setBackground(Color.blue);
jLabel3.setForeground(Color.WHITE);

58
package MPSA;

import java.awt.HeadlessException;

import static java.lang.System.exit;

import javax.swing.JOptionPane;

/**

* @author MPEMBA

*/

public class TP_code_pin {

private static int i;

private static String a;

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

try{

int Mont=0; int solde=0;

for(i=1;i<=4;i++){

int pin=Integer.parseInt(JOptionPane.showInputDialog("Saisissez le code pine avec 4


Chiffres"));

if((pin==1122)||(pin==1234)){

JOptionPane.showMessageDialog(null, "Code pin correct");

int b=0;

do{

String code=JOptionPane.showInputDialog("G3IG Com \n 1.Infos App\n


2.Dépôt\n 3.Retrait\n 4.Solde\n 5.Quitter");

59
int donnee=Integer.parseInt(code);

switch(donnee){

case 1:

JOptionPane.showMessageDialog(null,"Application résalisé par\n G3 M I ISP");

break;

case 2:

int numt=Integer.parseInt(JOptionPane.showInputDialog("Saisir le numéro de


l'agent"));

int depot=Integer.parseInt(JOptionPane.showInputDialog("Saisir le Montant"));

JOptionPane.showMessageDialog(null, "Dépôt confirmé");

Mont=Mont+depot;

break;

case 3:

int num=Integer.parseInt(JOptionPane.showInputDialog("Saisir le numéro"));

int retrait=Integer.parseInt(JOptionPane.showInputDialog("Saisir le Montant"));

if(retrait<Mont){

JOptionPane.showMessageDialog(null, "Retrait confirmé");

Mont=Mont-retrait;

break;

else if(retrait==Mont){

JOptionPane.showMessageDialog(null, "Transaction non effectuée, Montant


Supérieur au solde");

else{

JOptionPane.showMessageDialog(null, "Transaction non effectuée, Montant


Supérieur au solde");

case 4:
60
solde=Mont;

JOptionPane.showMessageDialog(null, "Votre solde est de "+solde);

break;

case 5:

exit(0);

}while(b!=6);

exit(0);

else{

JOptionPane.showMessageDialog(null, i+"e tentative sur 4");

JOptionPane.showMessageDialog(null, "Au revoir!");

System.exit(0);

catch(HeadlessException | NumberFormatException e){

JOptionPane.showMessageDialog(null, "Ne saisissez que des chiffres"+e);

Package tp_code_pin;

import java.awt.HeadlessException;
import static java.lang.System.exit;
import javax.swing.JOptionPane;

/**
*
* @author MPEMBA
*/
public class TP_code_pin {
private static int i;
61
private static String a;

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
try{
int Mont=0; int solde=0;
for(i=1;i<=4;i++){
int pin=Integer.parseInt(JOptionPane.showInputDialog("Saisissez le code pine avec 4
Chiffres"));
if((pin==1122)||(pin==1234)){
JOptionPane.showMessageDialog(null, "Code pin correct");
int b=0;
do{
String code=JOptionPane.showInputDialog("G3IG Com \n 1.Infos App\n
2.Dépôt\n 3.Retrait\n 4.Solde\n 5.Quitter");
int donnee=Integer.parseInt(code);
switch(donnee){
case 1:
JOptionPane.showMessageDialog(null,"Application résalisé par\n G3 M I ISP");
break;
case 2:
int numt=Integer.parseInt(JOptionPane.showInputDialog("Saisir le numéro de l'agent"));
int depot=Integer.parseInt(JOptionPane.showInputDialog("Saisir le Montant"));
JOptionPane.showMessageDialog(null, "Dépôt confirmé");
Mont=Mont+depot;
break;
case 3:
int num=Integer.parseInt(JOptionPane.showInputDialog("Saisir le numéro"));
int retrait=Integer.parseInt(JOptionPane.showInputDialog("Saisir le Montant"));
if(retrait<Mont){
JOptionPane.showMessageDialog(null, "Retrait confirmé");
Mont=Mont-retrait;
break;
}
else if(retrait==Mont)
JOptionPane.showMessageDialog(null, "Transaction non effectuée, Montant Supérieur au
solde");
}
else{
JOptionPane.showMessageDialog(null, "Transaction non effectuée, Montant Supérieur au
solde");
}
case 4:
solde=Mont;
JOptionPane.showMessageDialog(null, "Votre solde est de "+solde);
break;
case 5:
exit(0);

62
}
}while(b!=6);
exit(0);
}
else{
JOptionPane.showMessageDialog(null, i+"e tentative sur 4");
}
}
JOptionPane.showMessageDialog(null, "Au revoir!");
System.exit(0);
}
catch(HeadlessException | NumberFormatException e){
JOptionPane.showMessageDialog(null, "Ne saisissez que des chiffres"+e);
}
}
}
import java.util.*;

class Equation
{

public static void main(String [] args)

Scanner eq=new Scanner(System.in);

System.out.println("entre le prefixe de ton Equation,AX²+BX+C=0");

System.out.println("entre la valeur de A:");

int a=eq.nextInt();

System.out.println("entre la valeur de B:");

int b=eq.nextInt();

System.out.println("entre la valeur de C:");

int c=eq.nextInt();

System.out.println(a+" X² +"+b+" X+ "+c+" = 0 ");

double delta;

System.out.println("delta ="+(delta = ((b*b) - (4)*(a*c))));

if ( ((b*b) - (4)*(a*c))>0)

63
System.out.println("X1 ="+((-b + Math.sqrt(delta)) / (2*a)));

System.out.println("X2 ="+((-b - Math.sqrt(delta)) / (2*a)));

}
else if(((b*b) - (4)*(a*c))==0)
{
System.out.println("X1=X2="+((-b)/(2*a)));
}

else System.out.println("delta inferieur a zero pas de racine reel");

}
Exemple d 1 programme de vente d’article

import java.util.*;
public class facture{
public static void main(String args[]){
Scanner cl=new Scanner(System.in);
String art1,art2;
int qt1,qt2,pu1,pu2;
System.out.println("BIENVENUE DANS LE MENU VENTE");
System.out.println(" ");
System.out.println(" TARIFICATION DES ARTICLES");
System.out.println(" *************************");
System.out.print(" ");
System.out.println(" ++==========================++");
System.out.println(" == 1.clavier 2500Fc ==");
System.out.println(" == 2.Pc 10000Fc ==");
System.out.println(" == 3.Ecran 5000Fc ==");
System.out.println(" == 4.Souris 2000Fc ==");
System.out.println(" == 5.DVD 500 Fc ==");
System.out.println(" == 6.flash 4500Fc ==");
System.out.println(" ++---------------------++");
System.out.println(" ");
System.out.print(" ");
System.out.println(" ACTIVER LA LETTRE MAJUSCULE! ");
System.out.print(" ");
System.out.print(" entrer 1er art :");
art1 = cl.nextLine();
System.out.print(" entrer 2em art :");
art2 = cl.nextLine();
System.out.print(" entrer ler qtes :");
qt1=cl.nextInt();
System.out.print(" entrer 2em qtes :");
qt2 = cl.nextInt();
System.out.print(" entrer le p.u1 :");
64
pu1 = cl.nextInt();
System.out.print(" entrer le p.u2 :");
pu2 = cl.nextInt();
System.out.println("JASPE=================================JAN");
System.out.print(" ");
if ( art1.equals("CLAVIER"))
if ( art2.equals("PC"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("PC"))
if ( art2.equals("CLAVIER"))
System.out.print("le prix total vaut:"+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("CLAVIER"))
if ( art2.equals("ECRAN"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("ECRAN"))
if ( art2.equals("CLAVIER"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("SOURI"))
if ( art2.equals("CLAVIER"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("CLAVIER"))
if ( art2.equals("SOURIS"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("CLAVIER"))
if ( art2.equals("DVD"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("DVD"))
if ( art2.equals("CLAVIER"))
System.out.print(" prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("CLAVIER"))
if ( art2.equals("FLASH"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("PC"))
if ( art2.equals("ECRAN"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("ECRAN"))
if ( art2.equals("PC"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("PC"))
if ( art2.equals("SOURIS"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("SOURIS"))
if ( art2.equals("PC"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("PC"))
if ( art2.equals("DVD"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("DVD"))
if ( art2.equals("PC"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("PC"))
if ( art2.equals("FLASH"))
65
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("FLASH"))
if ( art2.equals("PC"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("ECRAN"))
if ( art2.equals("SOURIS"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("SOURIS"))
if ( art2.equals("ECRAN"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("ECRAN"))
if ( art2.equals("DVD"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("DVD"))
if ( art2.equals("ECRAN"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("ECRAN"))
if ( art2.equals("FLASH"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("FLASH"))
if ( art2.equals("ECRAN"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("SOURIS"))
if ( art2.equals("DVD"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("DVD"))
if ( art2.equals("SOURI"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("SOURI"))
if ( art2.equals("FLASH"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("FLASH"))
if ( art2.equals("SOURI"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("DVD"))
if ( art2.equals("FLASH"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
if ( art1.equals("FLASH"))
if ( art2.equals("DVD"))
System.out.print("prix total vaut: "+(qt1*pu1 +qt2*pu2)+"Fc");
else
System.out.print("erreur voir menu");

package equation.du.second.degré;

import javax.swing.JOptionPane;

* @author Luz Mpemba


*/
public class EquationDuSecondDegré {

66
public static void main(String[] args) {
// TODO code application logic here
String nbre1,nbre2, nbre3 ;
double a,b,c,D, x1,x2,x;
nbre1= JOptionPane.showInputDialog("Saisissez la valeur de a");
nbre2=JOptionPane.showInputDialog("Saisissez la valeur de b") ;
nbre3=JOptionPane.showInputDialog("’Saisissez la valeur de c") ;

a= Double.parseDouble(nbre1) ;
b= Double.parseDouble(nbre2) ;
c= Double.parseDouble(nbre3) ;
D=b*b-4*a*c ;
JOptionPane.showMessageDialog(null,"la valeur de delta est:"+D);
if (D>0){
x1=(-b+Math.sqrt(D))/(2*a);
x2=(-b-Math.sqrt(D))/(2*a);
JOptionPane.showMessageDialog(null,"la valeur de x1 est : \n "+x1+"+") ;
JOptionPane.showMessageDialog(null,"la valeur de x2 est : \n "+x2+"+") ;
}
else if (D==0){
x=-b/2*a ;

JOptionPane.showMessageDialog(null,"la valeur de x est : \n "+x);


}
else if (D<0){

JOptionPane.showMessageDialog(null,"pas de solution réelle");


}
}
}

67
@author mpemba
*/
public class Surface {
private static int a;

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int y=0;
Integer x;
//JOptionPane.showMessageDialog(null,"Calcul de la surface d'une figure géométrique");
Integer a=Integer.parseInt(JOptionPane.showInputDialog("Choisir le nombre correspond à
votre figure\n\n1. Carré\n2. Rectangle\n3. Triangle\n4. Cercle\n5. Losange \n6.Trapèze\n7.
Parallélogramme\n8.pentagone régulier \n9. Couronne (anneau)\n10. Demi-cercle\n11.
Ellipse\n12. Hexagone régulier\n\n\n"));
if (a==1){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir le côté"));

x=b*b;
JOptionPane.showMessageDialog(null,"La surface du carré est:"+x);
}
if (a==2){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir la longueur"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir la largeur"));
x=b*c;
JOptionPane.showMessageDialog(null,"La surface du rectangle est: "+x);
}
if (a==3){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir la base"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir l'hauteur"));
x=(b*c)/2;
JOptionPane.showMessageDialog(null,"La surface du triangle est: "+x);
}
if (a==4){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir le rayon"));
Double r;
r=(3.14)*b*b;
JOptionPane.showMessageDialog(null,"La surface du cercle est: "+r);

}
if (a==5){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir le grand
diagonal"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir le petit
diagonal"));
x=(b*c)/2;
JOptionPane.showMessageDialog(null,"La surface du losange est: "+x);
}
if (a==6){

68
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir la grande base"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir la petite base"));
Integer d=Integer.parseInt(JOptionPane.showInputDialog("Saisir l'hauteur"));
x=((b+c)*d)/2;
JOptionPane.showMessageDialog(null,"La surface du trapèze est: "+x);
}
if (a==7){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir la base"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir l'hauteur"));

x=b*c;
JOptionPane.showMessageDialog(null,"La surface du parallélogramme est: "+x);
}
if (a==8){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir la base"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir l'hauteur"));

x=5*((b*c)/2);
JOptionPane.showMessageDialog(null,"La surface du pentagone régulier est: "+x);
}
if (a==9){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir le grand cercle"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir le petit cercle"));
Double t;
t=(3.14*(b*b*c*c));
JOptionPane.showMessageDialog(null,"La surface de la couronne(anneau) est: "+t);
}
if (a==10){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir le rayon"));
Double t;

t=(3.14*(b*b))/2;
JOptionPane.showMessageDialog(null,"La surface du demi-cercle est: "+t);
}
if (a==11){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir la moitié du grand
axe"));
Integer c=Integer.parseInt(JOptionPane.showInputDialog("Saisir la moitié du petit
axe"));
Double t;
t=(3.14*(b*c));
JOptionPane.showMessageDialog(null,"La surface de l'ellipse est: "+t);
}
if (a==12){
Integer b=Integer.parseInt(JOptionPane.showInputDialog("Saisir le côté"));
Double t;

t=((3*Math.sqrt(3)*b*b)/2);
JOptionPane.showMessageDialog(null,"La surface de hexagone régulier est: "+t);
}
else{

69
JOptionPane.showMessageDialog(null,"aaaa");
}
while(y!=12);System.exit(0);
}
}

import javax.swing.JOptionPane;

public class Opération{

public static void main(String[] args) {


int i=0;
do {

String mer = JOptionPane.showInputDialog(null,"Mes opérations\n CHOISIR VOTRE OPERATEUR\n


1.addition\n 2.soustractio\n 3.multiplication\n4.division Quitter")
int x=Integer.parseInt(mer);
switch(x){
case 1:
int a=Integer.parseInt(JOptionPane.showInputDialog("nombre 1"));
int b=Integer.parseInt(JOptionPane.showInputDialog("nomb5re 2"));
JOptionPane.showMessageDialog(null,a+"+"+b+"="+(a+b));

break;
case 2:
int c=Integer.parseInt(JOptionPane.showInputDialog("nombre 1"));
int d=Integer.parseInt(JOptionPane.showInputDialog("nombre 2"));
JOptionPane.showMessageDialog(null,c+"-"+d+"="+(c-d));
break;
case 3:
int e=Integer.parseInt(JOptionPane.showInputDialog("nombre 1"));
int f=Integer.parseInt(JOptionPane.showInputDialog("nombre 2"));
JOptionPane.showMessageDialog(null,e+"*"+f+"="+(e*f));
break;
case 4:
int g=Integer.parseInt(JOptionPane.showInputDialog("nombre 1"));
int h=Integer.parseInt(JOptionPane.showInputDialog("nombre 2"));
JOptionPane.showMessageDialog(null,g+"/"+h+"="+(float)g/h);
break;
case 5:
System.exit(0);
break;

}
}while(i!=5);

}
}
==+++===

70
Exercices
Gestion des ventes

71
72
73
Codes sources interfaces vente : méthodes

package Base_de_donn;

import Utilisateur.Vente;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;

public class Ventes // la classe ventes est différente de l'interface vente


{
Vente parent;// l'objet de l'interface vente est parent

Statement St; // gestion de query sql


ResultSet Rs; // gestion de manipulation du tableau

public Ventes(Vente parent)


{
this.parent = parent;// this fait l'appel à l'interface vente via l'obje parent
}

public void ChargerProduit()


{
Connection con =Singletons.getConnection();
try {

St=con.createStatement();
Rs=St.executeQuery("select libelle from produit");
DefaultListModel mdl = new DefaultListModel();
while(Rs.next())
{
mdl.addElement(Rs.getString("libelle"));
}
parent.Ls.setModel(mdl);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Ce Problème ci est survenu: "+e);
}
}
public void ListeProduit()
{
Connection con =Singletons.getConnection();
try{
String liste=parent.Ls.getSelectedValue().toString();

St=con.createStatement();
Rs=St.executeQuery("select*from produit where libelle='"+liste+"'");
while(Rs.next())
{
74
parent.Label1.setText(Rs.getString("libelle"));
parent.Label2.setText(Rs.getString("qtes"));
parent.tempot.setText(Rs.getString("PU"));

}
St.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Cliquer sur Nouveau Pour Continuer
svp!","Erreur de Clique",JOptionPane.INFORMATION_MESSAGE);

}
}

public void taux_du_jours()


{
Connection con =Singletons.getConnection();
try{
St=con.createStatement();
Rs=St.executeQuery("SELECT montant FROM taux ");
while(Rs.next())
{
parent.taux.setText(Rs.getString("montant"));
}
St.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Ce Problème ci est survenu: "+e);
}
}
public void ACTIVITE_VENTE()
{
Connection con =Singletons.getConnection();
try{
St= con.createStatement();
int x = St.executeUpdate("INSERT INTO Vente values(null,'"
+parent.Label1.getText().toUpperCase().trim()+"','"
+parent.Text.getText().toUpperCase().trim()+"','"
+parent.Label3.getText().toUpperCase().trim()+"','"
+parent.usd.getText().toUpperCase().trim()+"','"
+parent.date.getText().trim()+"','"
+parent.user.getText().trim()+"')");
St.close();
if(x==1)
{
JOptionPane.showMessageDialog(null,"VENTE ENREGISTRER!","VENTE
ENREGISTRER",JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception e){JOptionPane.showMessageDialog(null,"Ce Fichier existe
déjà,veuillez introduir un nouveau \n Et si cette erreur persiste,Veillez Contactez le
Fabriquant"+e,"ERREUR",JOptionPane.ERROR_MESSAGE);}
}

75
Code sources interfaces produit :Méthodes

package Base_de_donn;

import Utilisateur.Produits;
import java.sql.Connection;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class produits


{
Produits parent; // objet de l'interface produit
Statement St;

public produits (Produits parent) // constructeur/jaspe


{

this.parent = parent;

public void Enregistrement()


{
Connection con =Singletons.getConnection();

try{
St= con.createStatement();
int x = St.executeUpdate("INSERT INTO PRODUIT VALUES(null,'"
+parent.Text1.getText().toUpperCase().replace("'", "''")+"','"
+parent.Text2.getText().toUpperCase().replace("'", "''")+"','"
+parent.Text3.getText().toUpperCase().replace("'", "''")+"','"
+parent.Text4.getText().replace("'","''").replace("'", "''")+"','"
+parent.Text5.getSelectedItem().toString().replace("'", "''")+"','"
+((JTextField)parent.Dates.getDateEditor().getUiComponent()).getText()+"')");
St.close();
if(x==1)
{
JOptionPane.showMessageDialog(null,"Un produit vient d'etre enregistrer avec
succès!","Courrier enregistrer",JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception e){JOptionPane.showMessageDialog(null,"Ce courrier
"+e,"ERREUR",JOptionPane.ERROR_MESSAGE);}
}

76
}

Les états de sortie avec IREPORT

77
78
Un algorithme de cryptage

import java.util.*;
public class Main {
public static void Recherche(char c,char Cle[][])
{
int trouve=0;
VG.i=0;
while ((trouve==0) && (VG.i<VG.Nmax)){
VG.j=0;
while ((trouve==0) && (VG.j<VG.Nmax)) {
if (Cle[VG.i][VG.j]==c) trouve=1;
else {
VG.j=VG.j+1;
}
}
VG.i=VG.i+1;
}
}
public static char toChar(int codeASCII) {
return (char)codeASCII;
}
public static int toASCII(char lettre) {
return (int)lettre;
}
public static void main(String[] args) {
char Cle[][]=new char [VG.Nmax][VG.Nmax];
int i,j,k;
for (i=0;i<VG.Nmax;i++)
for (j=0;j<VG.Nmax;j++){
if ((i<=1)&& (j<=3))
Cle[i][j]=toChar(toASCII('a')+VG.Nmax*i+j);
else Cle[i][j]=toChar(toASCII('b')+VG.Nmax*i+j);
}
Cle[0][4]='e';
/* Affichage de la clé */
for (i=0;i<VG.Nmax;i++){
for (j=0;j<VG.Nmax;j++)
System.out.print(Cle[i][j]);
System.out.println();
}
char c;
int msgCrypter[]= new int[200];
int LongMsg;
Scanner in = new Scanner (System.in);
System.out.println("\n Donnez le message à crypter : ");
String msgInitial= in.nextLine();
LongMsg=msgInitial.length();
int l=0;

79
for (k=0;k<LongMsg;k++) {
c=msgInitial.charAt(k);
Recherche(c,Cle);
msgCrypter[l]=VG.i;
msgCrypter[l+1]=VG.j+1;
l=l+2;
}
System.out.println(" \n bonjour : voici le message crypte ");
for (k=0; k<2*LongMsg;k++)
System.out.print(msgCrypter[k]);
System.out.println(" \n bonjour : voici le message decrypte ");
for (k=0; k<2*LongMsg;k=k+2){
i=msgCrypter[k]-1;
j=msgCrypter[k+1]-1;
System.out.print(Cle[i][j]);
}
in.close();
}
}

=============================================

public static void main(String[] args)


{
char Cle[][]=new char [VG.Nmax][VG.Nmax];
int i,j,k;
for (i=0;i<VG.Nmax;i++)
for (j=0;j<VG.Nmax;j++){
if ((i<=1)&& (j<=3))
Cle[i][j]=toChar(toASCII('a')+VG.Nmax*i+j);
else Cle[i][j]=toChar(toASCII('b')+VG.Nmax*i+j);
}
Cle[0][4]='e';
/* Affichage de la clé */
for (i=0;i<VG.Nmax;i++){
for (j=0;j<VG.Nmax;j++)
System.out.print(Cle[i][j]);
System.out.println();
}
char c;
int msgCrypter[]= new int[200];
int LongMsg;
Scanner in = new Scanner (System.in);
System.out.println("\n CRYPTO 3 Donnez le message à crypter : ");
String msgInitial= in.nextLine();
80
LongMsg=msgInitial.length();
int l=0;
for (k=0;k<LongMsg;k++)
{
c=msgInitial.charAt(k);
if(c=='j') {
msgCrypter[l]=0;
msgCrypter[l+1]=0;
}
else {
Recherche(c,Cle);
msgCrypter[l]=VG.i;
msgCrypter[l+1]=VG.j+1;
}
l=l+2;
}
System.out.println(" \n bonjour : voici le message crypte ");
for (k=0; k<2*LongMsg;k++)
System.out.print(msgCrypter[k]);
System.out.println(" \n bonjour : voici le message decrypte ");
for (k=0; k<2*LongMsg;k=k+2){
if ((msgCrypter[k]==0)&&(msgCrypter[k+1]==0))
System.out.print("j");
else {
i=msgCrypter[k]-1;
j=msgCrypter[k+1]-1;
System.out.print(Cle[i][j]);
}
}
in.close();
}
}

81
Autres exercices
EXERCICES 1
1.1. Ecrire un programme qui demande à l’utilisateur d’insérer le Nom, Postnom, Sexe,
Grade, Année de naissance et contact d’utilisateur et après l’exécution dans la console,
le programme affiche les résultats suivants :
Identification
+-----------------------------------------------------------------+
Nom : xxxxxxxxxx
PostNom : xxxxxxxxxx
Sexe : M ou F
Grade : xxxxxxxxxxxx
Age : (ici le programme calcul et affiche l’âge)
Téléphone : xxxxxxxxxx
+----------------------------------------------------------------+
1.2. Ecrire un programme qui calcul la valeur de a et b sur les 4 opérations arithmétiques :
Addition, Soustraction, Multiplication, Division. Le programme doit calcul aussi la
moyenne de a, b et le double de moyenne.
1.3. Ecrire un programme qui affiche le code produit, désignation, Quantité, Prix Unitaire,
Montant total, TVA (16%), Montant Hors TVA, Montant Total à payer en Dollar et
en Franc.
1.4. La bureautique tout est grâce imprime un fichier de travail de fin de cycle (TFC) 100Fc
par page et l’Etudiant propriétaire du fichier négocie pour 35,5Fc par page sur 95 Pages
de totalités et le département de l’Informatique de Gestion demande aux étudiants de
multiplier 5 exemplaires pour un travail de 95 pages et 6 exemplaires pour un travail de
75 pages.
a) Ecrire un programme qui lire le nombre de page pour 5 exemplaires et Affiche
l’occurrence de propriétaire du fichier, le nombre de papier et le montant total pour
chaque exemplaire ainsi que le montant total à payer en Dollar et en Franc Congolais.
b) Le Professeur Emérite ENGOMBE WEDI est le propriétaire de la bureautique tout
est grâce. Apres l’impression des fichiers de 75 pages pour 10 Etudiant, il demande
que le programme affiche le Nom & PostNon des Etudiants propriétaires des
fichiers, les nombres des pages pour chaque fichier, la quantité fichier (ici il faut
préciser le nombre d’exemplaire pour chacun), Montant total pour un exemplaire et
Total à payer en Dollar et Franc Congolais.
c) La bureautique tout est grâce Paye à la SNL 25,550Fc par fichier et Afficher le
Montant total que la bureautique doive payée à la SNL en Dollar et en Franc
Congolais pour tous les fichiers et Montant disponible à la caisse de bureautique.

82
Solutions exercices 2
Exercice 1.1
import java.util.*; // importation de package utilitaire
public class identite{
public static void main(String[] args) {
//Instatiation de la classe Scanner
Scanner cl = new Scanner(System.in);
System.out.println("");
System.out.println(" Creer votre identite");
System.out.println("+--------------------+");
System.out.print(" Entrer votre Nom :");
// Manipulation de la méthode nextLine() pour la chaine de caractère String
String nom = cl.nextLine();
System.out.print(" Votre PostNom :");
String postnom = cl.nextLine();
System.out.print(" Sexe :");
String sexe = cl.nextLine();
System.out.print(" Grade :");
String gd = cl.nextLine();
System.out.print(" Annee de naissance:");
int an = cl.nextInt();
// Calcul de l'âge d'Utilisateur
int ag = (2021 - an);
System.out.print(" Telephone :");
int tel = cl.nextInt();
System.out.println("+----------------------+");
System.out.println(" Identite ");
System.out.println("+---------------------+");
System.out.println(" Nom :"+nom);
System.out.println(" PostNom :"+postnom);
System.out.println(" Sexe :"+sexe);
System.out.println(" Grade :"+gd);
System.out.println(" Age :"+ag+"ans");
System.out.println(" Telephone :"+tel);
System.out.println("+---------------------+");
}
}

83
Résultat avec la console

84
TDs
TP (Projets)
INTERROs

85
Bibliographies

Bibliographie
- Delannoy C. Programmer en Java. Java 5 et 6. N°12232, 5e édition, 2007, 800
pages avec CD-Rom.
- Delannoy C., Exercices en Java, Eyrolles, Paris (2001)
- Horstmann,G.Cornell, au coeur de Java2 notions fondamentales Vol1, Campus
press, Paris (2001).
- Horstmann,G.Cornell, au coeur de Java2 fonctions avancées Vol2, Campus press,
B.Aumaille, J2SE les fondamentaux de la programmation Java, Ed.ENI, Nantes
(2002)
- Boichat J.-B.. – Apprendre Java et C++ en parallèle. N° 12403, 4e édition, 2008,
600 pages avec CD-Rom.
- Tasso A.. – Le livre de Java premier langage. Avec 80 exercices corrigés. N°12376, 5e
édition, 2008, 520 pages avec CD-Rom.
- Dabancourt C.. – Apprendre à programmer. Algorithmes et conception objet - BTS, Deug,
IUT, licence N°12350, 2e édition, 2008, 296.
- Roques. P.– UML 2 par la pratique. Étude de cas et exercices corrigés. N°12322, 6e
édition, 2008, 368.Tasso A.. – Apprendre à programmer en ActionScript 3.
N°12199, 2008, 438 pages.
- Flanagan David Java in a nutshell, 5th edition, O’Reilly, 2005
- Java in a Nutshell, Fourth Edition - D. Flanagan - O'Reilly, 2002 - j - Java in a
- Nutshell, manuel de référence pour Java 2 (SDK 1.4) 4e _edition - D. Flanagan -
O'Reilly,2002

Webographie
- http://www.labo-sum.com
- http://careers.accenture.com/fr-fr
- http://sitezero.com/fr-fr
- http://penserenjava.free.fr
- Le site officiel Java, http://www.oracle.com/technetwork/java/index.html
- Le tutorial Java, http://docs.oracle.com/javase/tutorial/
- l’API du JDK 1.7, http://docs.oracle.com/javase/7/docs/api/
- Un site (français) de développeurs, http://www.javafr.com/
- Le site JavaWorld, http://www.javaworld.com
-

86
87

Vous aimerez peut-être aussi