Académique Documents
Professionnel Documents
Culture Documents
Par :
MAYALA LEMBA Francis
Professeur Associé
1
ANNEE ACADEMIQUE 2022-2023
OBJECTIF DU COURS
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.
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
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.
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
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. }
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 :
EXEMPLE 5
EXEMPLE 8
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
Bonjour
monsieur
Bonjour
monsieur
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 1 1
2 2 2
3 3 3
4 4 4
5 5 5
EXEMPLE 14
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 :
EXEMPLE 2 :
EXEMPLE 3 :
EXEMPLE 4 :
EXEMPLE 5 :
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 :
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 :
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 :
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 :
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 :
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
6.Classe MATH
EXEMPLE 1 :
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é :
EXEMPLE 7:
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.
EXEMPLE 8:
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 ‘’) ;
}
}
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.
Exemple
import javax.swing.JOptionPane;
public class Jaspeluz {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null," JE RESTE DEBOUT " );
Après exécution :
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.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
- 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 :
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 }
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");
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.
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());
}
}
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);
}
}
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
yé
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;
}
return(this.salaire);
}
public String view(){
return nom+"\t"+age+"\t"+ salaire;
}
public void afficher(){
System.out.println(view());
}
import java.util.Scanner;
42
int ii=1;
String nom =null;
int age=0; int
salaire=0; byte
gr=0;
do{
System.out.println("======MENU D'APPLICATION======\n"
+"1 Enregistrement\n"
+"2 afficher \n"
+"3 Quitter\n"); int
v=jaspe.nextInt();
switch(v){
case 1:{
}break;
case 2:{
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
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.*;
Classe Rôle
DriverManager Charger et configurer le driver de la 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.
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.
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");
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.
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 :
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 "
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");
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
48
Exemple complet
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
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 :
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().
La méthode executeUpdate() retourne le nombre d'enregistrements qui ont été mis à jour
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.
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 {
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"))
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
=========================================================
======
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 javax.swing.JOptionPane;
/**
* @author MPEMBA
*/
/**
*/
try{
for(i=1;i<=4;i++){
if((pin==1122)||(pin==1234)){
int b=0;
do{
59
int donnee=Integer.parseInt(code);
switch(donnee){
case 1:
break;
case 2:
Mont=Mont+depot;
break;
case 3:
if(retrait<Mont){
Mont=Mont-retrait;
break;
else if(retrait==Mont){
else{
case 4:
60
solde=Mont;
break;
case 5:
exit(0);
}while(b!=6);
exit(0);
else{
System.exit(0);
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
{
int a=eq.nextInt();
int b=eq.nextInt();
int c=eq.nextInt();
double delta;
if ( ((b*b) - (4)*(a*c))>0)
63
System.out.println("X1 ="+((-b + Math.sqrt(delta)) / (2*a)));
}
else if(((b*b) - (4)*(a*c))==0)
{
System.out.println("X1=X2="+((-b)/(2*a)));
}
}
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;
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 ;
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;
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;
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);
}
}
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;
this.parent = parent;
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
}
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();
}
}
=============================================
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