Software">
Cours Java Débutant Gratuit PDF
Cours Java Débutant Gratuit PDF
Objectifs : Java est l’une des technologies les plus répandues pour le développement des applications.
Notre formation java commence par une présentation du langage et des concepts objets puis la
conception et réalisation de fenêtre java enfin l’interfaçage d’une base de données à l’aide de la
technologie JAVA
Volume 20 heures
Progression
CHAPITRE 1 : Notions du langage 3h
I- Présentation du langage
II- La structure d’un programme java
III- Les instructions élémentaires
a. Variables
b. Opérateurs
c. Instruction d’entrées/sortie
d. Les fonctions
e. Les tableaux
I- La classe
II- Les objets
III- L’héritage
IV- Le polymorphisme
V-
1
Chapitre I : Notions du langage
I- Présentation de JAVA
a. Historique
Le langage Java est un langage de programmationinformatiqueorienté objet créé par James Gosling et Patrick
Naughton, employés de Sun Microsystems, avec le soutien de Bill Joy (cofondateur de Sun Microsystems en
1982), présenté officiellement le 23 mai 1995 au SunWorld.
La particularité principale de Java est que les logiciels écrits dans ce langage sont très facilement portables sur
plusieurs systèmes d’exploitation tels que UNIX, Windows, Mac OS ou GNU/Linux, avec peu ou pas de
modifications. C’est la plate-forme qui garantit la portabilité des applications développées en Java.
Le langage reprend en grande partie la syntaxe du langage C++, très utilisé par les informaticiens. Néanmoins,
Java a été épuré des concepts les plus subtils du C++ tels que les pointeurs et références, et l’héritage multiple
remplacé par l’implémentation des interfaces. Les concepteurs ont privilégié l’approche orientée objet de sorte
qu’en Java, tout est objet à l’exception des types primitifs (nombres entiers, nombres à virgule flottante, etc.)
- Java SE (standard edition) : J2SE (Java 2 Standard Edition) est l'une des éditions (ou
distribution) du framework 'Plate-forme Java' d'Oracle, destinée plus particulièrement aux applications
pour poste de [Link] plateforme contient outre toutes les API de base:
o toutes les API spécialisées dans le poste client (JFC et donc Swing, AWT et Java2D),
o ainsi que des API d'usage général comme JAXP (pour le parsingXML)
o et JDBC (pour la gestion des bases de données).
Il a été renommé Java SE par Sun Microsystems juste après son rachat par Oracle Corporation en
2009 pour 7 milliards de dollars.
o d'une KVM (Kilobyte Virtual Machine), une machine virtuelle capable d'exécuter une
application Java
o d'une « configuration », une API donnant accès aux fonctions de base du système
o d'un « profil », une API donnant accès aux fonctions spécifiques de la plate-forme.
3
Les plus utilisés sont Eclipse, NetBeans
L5- }
L6- }
b. Commentaire
1- On appelle package le dossier qui contient les fichiers, les fichiers du même package peuvent
se partager des données. Dans un programme java, on peut ajouter un package si on a
plusieurs fichiers à créer mais si on a un seul fichier on peut s’en passer.
2- A la ligne 2 on importe une classe si on doit utiiser une fonction qui existe dans cette classe par
defaut on a le JDK standard mais il faut ajouter certaines classes pour benéficier des fonctions
de ces classes.
3- A la ligne 3 tout programme java est une classe dont la classe public est celle qui donne son
nom au fichier. Cette classe peut avoir des arguments.
4- Tout bloc java est delimité par {…}
5- La fonction principale est main(), toute classe qui a la fonction main() peut être executée sinon
pas.
6- Java est sensible à la classe
4
7- Les commentaires son // pour une ligne ou /* */ sur plusieurs lignes
compiler
.jar
b. Les opérateurs
- Arithmétique :+,-,*,/,%(reste de la division entière)
- Affectation : =
- Comparaison : <, <=, >, >=, ==, !=
- Logique : || (ou), && (et), !(non)
- Concaténation : +
5
c. Les instructions d’entrée et de sortie
i. Instruction de sortie
Syntaxe
[Link](<message>) ;
Exemple
Afficher "bonjour Reséau Telecom"
package exemple;
public class Exemple {
exemple : ecrire un programme java qui affiche la somme de deux nombres entiers saisis.
package exemple;
//on ajoute la classe au programme
import [Link];
public class Exemple {
public static void main(String[] args) {
//on créer une instance de flux d'entrée sur la console
Scanner sc= new Scanner([Link]);
[Link]("Entrez le premier nombre");
//on saisit le premier nombre
int nbre1= [Link]();
[Link]("Entrez le second nombre");
int nbre2= [Link]();
// on effectue l'operation
int somme= nbre1+nbre2;
// on affiche le resultat
[Link]("la somme est "+somme);
//on affiche sous la forme 1+2=3
[Link](nbre1+" + "+ nbre2+" = "+ somme);
6
}
}
Exemple : ecrire un programme java qui affiche dans l’ordre croissant 2 entiers saisis
b. Le choix
Algorithme Java
Suivant <expression> faire switch(<expression>){
Cas <val1> : action1 case <val1> : action1 ;
Cas <val2> : action2 break ;
…. case <val2> : action2 ;
Sinon : action_defaut break ;
FinSuivant …
default : action_defaut ;
}
Exemple : ecrire un programme java qui affiche la facture d’un article dont on saisit la catégorie, le prix unitaire
et la quantité.Sachant que le client bénéficie d’une remise suivant la catégorie
7
Catégorie Taux de remise
1 et 3 5%
2 8%
4 et 5 2%
c. Les itérations
Algorithme Java
TantQue (<condition>) Faire while(<condition>){
Action Action
FTQ }
Repeter do{
Action Action
JQA(<condition>) }while(<conditon>
Pour <cp><-init à final [pas for(<initialisation> ;<test> ;<incr
<increment>] ementation>){
Action action
FPour }
8
Exemple : ecrire un programme java qui affiche le montant d’une facture dont on saisit pour une ligne le prix
unitaire et la quantité tant que l’operateur saisisse N ou n à la question "ajouter un nouvel article o ou n"
V- Les tableaux
a. Syntaxe
<type>[] <identifiant> = new <type>[<taille>] ;
Exemple
Exemple : la valeur de mesNom à l’indice 2 est mesNom[2] sachant qu’on compte les indice à partir de 0.
9
- Saisir successive des éléments du tableau
o Exemple : soit le tableau des recettes journalières qui est un
tableau de 7 éléments entiers
Recettes[0]=[Link]()
Exemple :WoroWoro
écrire un programme qui affiche la recette hebdomadaire, le jour où le chauffeur a le mieux travaillé.
Fin
Exemple
[Link](message);
Afficher(“mon soleil”);
returna+b;
Exemple
Ecrire un programme java qui affiche les n premiers nombres de la suite de fibonacci.
11
VII- Les boîtes
Pour créer une interaction avec l’utilisateur on peut utiliser des boites.
- La boîte de message
Syntaxe
[Link](null, "<message>");
Exemple
[Link](null, "bonjour");
- La boîte de saisie
Illustration
Exemple
String sn="2";
int n = [Link](sn);
- Un string en double
Syntaxe
Double <var>= [Link](String <var2>) ;
Exemple
String sn="2";
double n = [Link](sn);
12
exemple
ecrire un programme java qui affiche dans une boîte la somme de nombres entiers saisis à l’aide de
boîte.
package exemple;
import [Link];
public class Exemple {
public static void main(String[] args) {
String sn1= [Link]("Entrez le nombre 1");
int n1= [Link](sn1);
String sn2= [Link]("Entrez le nombre 2");
int n2= [Link](sn2);
intsom=n1+n2;
[Link](null, "la somme de "+n1+ " et de "+n2+" est
"+ som);
}
}
13
Atelier N°1 : Edition – compilation – Exécution
Enoncé
Cet atelier doit permettre à l’étudiant de créer un projet Java sous NetBeans, éditer une classe , la compiler
enfin l’exécuter
TAF
1- Téléchargerjdk et netBeans vous trouverez le lien
[Link]
[Link]
2- Installer le JDK
3- Installer NetBeans
4- Lancer NetBeans (demarrer ->NetBeans ->NetBeans)
5- Créer un projet
1. File ->new project ->java -> java application ->
14
1
2. Editer le programme
3. Compiler le runcompile file
4. Executer le fichier runrun file
5. Ajouter une nouvelle classe dans ce projet . pour ajouter une nouvelle classe
cliquer droit sur le package 1 nouvelle classe et donner un nom à la
classe.
15
Chapitre II : Programmation Orientée Objet
I- La classe
Une classe java a la syntaxe suivante :
II- L’instanciation
On crée une instance de classe à l’aide de la syntaxe
<classe><instance>= new <constructeur> ;
III- Exemple
Enoncé
On souhaite écrire un programme java qui nous permettra de créer une facture . cette facture
comporte des lignes.
TAF
1- Créer un projet java , nommer le prjFacture
2- Ajouter une classe java et définir la classe Ligne dont le modèle est le suivant
16
a. Ajouter une classe nommer la Ligne dans le package prjfacture
b. Ajouter les attributs de la classe , les attributs etant privés on leur precede du mot clé
private
/**
* le nimero de la ligne
*/
private int numero;
/**
* la designation de l'article de la ligne
*/
private String designation;
/**
* le prix unitaire de l'article pour cette facture
*/
private double prixUnitaire;
/**
* la quantité d'article commandée pour cette facture
*/
private int quantité;
c. Ajouter le constructeur de la classe. Ce constructeur doit nous permettre de saisir les
valeurs des attributs d’un objet lors de sa création.
17
public Ligne(){
/**
* definition du constructeur qui doit permettre de saisir le
numero,
* la designation, le prix unitaire et la quantité
*/
/**
* on crée un objet de scanner qui va nous permettre de
recuperé le resultat
* du flux entrant
*/
Scanner sc = new Scanner([Link]);
[Link]("***Entrez les données de la ligne SVP***");
[Link]("Numero: "); numero=[Link]();
[Link]("Designation: "); designation=[Link]();
[Link]("Prix Unitaire: ");
prixUnitaire=[Link]();
[Link]("Quantité: "); quantité=[Link]();
[Link]("***MERCI***");
f. Ajouter les operations. Total() retourne la quantité fois le prix unitaire, remise()
retourne 1000FCFA si le total est superieur à 100000FCFA sinon retourne 0FCFA. Le
netAPayer() retourne la somme de total() et remise().
import [Link];
public class Ligne {
/**
* le nimero de la ligne
*/
private int numero;
/**
* la designation de l'article de la ligne
*/
private String designation;
/**
* le prix unitaire de l'article pour cette facture
*/
private double prixUnitaire;
/**
* la quantité d'article commandée pour cette facture
*/
private int quantité;
/**
* Constructeur de la classe
*/
public Ligne(){
/**
* definition du constructeur qui doit permettre de saisir
le numero,
* la designation, le prix unitaire et la quantité
*/
/**
* on crée un objet de scanner qui va nous permettre de
recuperé le resultat
* du flux entrant
*/
Scanner sc = new Scanner([Link]);
[Link]("***Entrez les données de la ligne
SVP***");
[Link]("Numero: "); numero=[Link]();
[Link]("Designation: "); designation=[Link]();
[Link]("Prix Unitaire: ");
prixUnitaire=[Link]();
[Link]("Quantité: "); quantité=[Link]();
[Link]("***MERCI***");
}
/**
* les accesseurs de la classe
* @return
*/
public int getNumero(){
return numero;
}
public String getDesignation(){
return designation;
19
}
public double getPrixUnitaire(){
return prixUnitaire;
}
public int getQuantité(){
return quantité;
}
/**
* les accesseurs de la classe
* @param numero
*/
public void setNumero(int numero){
[Link]=numero;
}
/**
* modifieurs de la designation
* @param designation
*/
public void setDesignation(String designation){
[Link]=designation;
}
/**
* modifieur du prix unitaire
* @param prixUnitaire
*/
public void setPrixUnitaire(double prixUnitaire){
[Link]=prixUnitaire;
}
/**
* modifieur de la quantité de la ligne
* @param quantité
*/
public void setQuantité(int quantité){
[Link]é=quantité;
}
/**
* le total d'un article le nombre acheté par le prix unitaire
* @return
*/
public double total(){
return prixUnitaire*quantité;
}
/**
* la remise sachant qu'il est de 1000 FCFA si le total de
l'article e
* est superieur à 100000 FCFA
* @return
*/
public double remise(){
if (total()>100000) return 1000;
else return 0;
}
/**
* le net à payer pour l'article
* @return
*/
public double netAPayer(){
return total()+remise();
}
}
3- Dans la classe principale , crée 2 objets de Lignes
20
Ligne ligne1= new Ligne();
- afficher la désignation la quantité le prix unitaire, la quantité , le net à payer de chaque ligne
- Afficher le total de la facture qui est la somme des nets à payer de chaque facture puis la tva qui est
18% de ce total enfin le ttc de la facture
4- Les vecteurs
Définition
une tableau est un objet java de longueur statique, c'est-à-dire que le nombre d'éléments qu'il peut contenir
est fixe !!!
un Vector est un tableau dynamique (genre liste chainée ou autre), c'est à dire que sa longueur fixée
initialement à 10 est variable et non statique. ceci implique qu'il est conseillé d'utiliser des Vector plutôt
que des tableaux. En effet dans un tableau on est obligé de fixer une longueur optimale et donc réserver un
espace mémoire conséquent, avec un Vector cet allocation est minimale et réajustable à tout moment !!!
De plus l'utilisation de tableaux est déconseillée car elle ne s'inscrit pas dans la philosophie de l'approche
objet (tout objet) de Java.
Utilisation
Parmi les constructeurs disponibles, l'un n'attend aucun paramètre, l'autre attend une taille initiale en
paramètre. On construira donc un objet vect de la classe Vector en écrivant simplement:
21
Vector <identifiant_vect>=new Vector();
ou
Ajouter un objet
On ajoute un objet à la fin du Vector en utilisant la méthode addElement. Par exemple, pour ajouter
l'objet o, on écrira :
[Link](o);
Le premier élément ajouté a l'indice 0, le suivant l'indice 1, etc... La méthode size() renvoie le nombre
d'éléments contenus dans le vecteur qui sera aussi l'indice du prochain objet ajouté.
Lire un objet
On retrouve un objet à partir de son indice en utilisant la méthode elementAt. Par exemple on obtient
l'objet d'indice n en écrivant :
o=[Link](n);
Attention, la méthode elementAt renvoie par défaut des objets de type Object, un transtypage est
souvent nécessaire. Par exemple, si l'élément d'indice 2 est de type String, il faudra écrire :
Color c=(Color)[Link](2);
Autres méthodes
La classe Vector contient de nombreuses autres méthodes qui rendent son utilisation très aisée. Notons
:
22
public static void remplir(Vector<Ligne> v){
char rep;
Scanner sc = new Scanner([Link]);
do{
Ligne l= new Ligne();
[Link](l);
do{
[Link]("Voulez vous ajouter une nouvelle ligne
o\n?");
rep=[Link]().charAt(0);
}while (rep!='o'&&rep!='O'&& rep!='n'&&rep!='N');
}
}
d- ecrire une fonction qui retourne le total des lignes d’une facture qui est la somme des net à payer de
chaque ligne.
23
24
g- ecrire une fonction qui retourne le ttc de la facture, dans la fonction principale afficher le ttc de la
facture
h- ecrire une fonction qui retourne la ligne dont l’article a été le moins commandé c'est-à-dire qui la
quantité la plus petite. Dans le programme principal affiche la designation et la quantité de la ligne
i- ecrire une fonction qui supprime une ligne dont ont sait le numero et afficher la liste des lignes puis le
nouveau TTC dans la fonction principale.
25
Chapitre III : Accès aux Base de données cas de MySQL
I- Création de la base de donne bdFacture
a. Soit le shema de la base de données
26
ii. Definir la structure de la table
Entrer le nom du champ , le type si c’est un varchar il faut obligatoirement indiquer la taille de la
colonne.
Dans la colonne Index indiquer si le champ est clé primaire , cocher autoincrement si vous souhaiter que
le sgbd créer la valeur de la colonne. On ne peut faire une colonne autoincrement si elle est clé primaire
et entier.
27
Cliquer sur sauvegarder si vous avez fini la definition de la table pour enregistrer la table.
28
Si on a une clé etrangère comme le cas de numClientdefinir cette clé comme INDEXE.
Faire de même pour créer la table Ligne.
d. Créer les relations
Cliquer sur concepteur pour faire les relations entre les tables.
c.
Enter le nom de la base de base de données bdFacture puis cliquer sur Finish
Vous devez avoir l’arborescence suivante :
30
31
III- Realisation du GUI
a. Créer un projet Java et nommer prjBdFacture
b. Ajouter une fenetre principale à votre paquetage prjbdfacture et nommer le FrmPrincipal
Cliquer droit sur le paquetage new other
32
Modifier les noms pour avoir l’arborescence suivante
33
Pour modifier le contenu de la table cliquer droit table content et modifier les colonnes
et les lignes.
34
g.
IV- Programmer les interfaces
a. Rendre les fenetres internes invisibles
b. A l’evenementactionPerformed du mnuClientEdition, il fautrendre visible la fenetreFrmClient
[Link](true) ;
c. Ajouter une nouvelle classe à votre paquetage et nommer la Mysql. Cette classe nous
permettra de definir notre connection à la source de données.
La source de la page est
import [Link];
import [Link];
import [Link];
public class Mysql {
private String pilote="<driver>";
private String url="<url>";
private String utilisateur="<utilisateur>";
private String password="<motde passé de l’utilisateur>";
public Connectionma_connexion=null;
public Mysql(){
try{
[Link](pilote);
ma_connexion = [Link](url,utilisateur,"");
}
catch(ClassNotFoundException cl){}
catch(SQLException se){}
}
public void fermer() throws SQLException{
ma_connexion.close();
}
}
d. Ajouter une classe metier [Link]. dans cette classe on trouvera toutes les opérations
standards de manipulations de la table Client. Comme insertion, modification, suppression,
liste des données…
package prjbdfacture;
import [Link];
import [Link];
import [Link];
public class Client extends Mysql{
Statement mon_statement=null;
public Client(){ }
public String inserer(String nom, String prenom, String
telephone){
try{
mon_statement = ma_connexion.createStatement();
//definir la requete
String requete= "INSERT INTO
Client(nomClient,prenomClient,telephone) VALUES
('"+nom+"','"+prenom+"','"+telephone+"')";
35
mon_statement.executeUpdate(requete);
return "insertion ok";
}
catch(SQLException se){
return [Link]();
}
}
public ResultSetconsulter(){
ResultSet RS=null;
try{
mon_statement = ma_connexion.createStatement();
String requete="select * from Client";
RS= mon_statement.executeQuery(requete );
}
catch(SQLException se){
RS=null;
}
return RS;
}
public intnombre(){
ResultSet RS=null;
try{
mon_statement = ma_connexion.createStatement();
String requete="select count(*) as nbre from Client";
RS= mon_statement.executeQuery(requete );
[Link]();
return [Link]("nbre");
}
catch(SQLException se){
return 0;
}
}
public String modifier (intnumero, String
nom,Stringprenom,String telephone){
try{
mon_statement = ma_connexion.createStatement();
//definir la requete
String requete= "UPDATE CLIENT SET nomClient='"+ nom
+"',prenomClient='" + prenom+"',telephone='"+telephone+"'
WHERE numClient="+numero ;
mon_statement.executeUpdate(requete);
return "modification réussie";
}
catch(SQLException se){
return [Link]();
}
}
public String Supprimer (intnumero){
try{
mon_statement = ma_connexion.createStatement();
//definir la requete
String requete= "DELETE FROM Client WHERE
numClient="+numero ;
36
mon_statement.executeUpdate(requete);
return "modification réussie";
}
catch(SQLException se){
return [Link]();
}
}
}
String nom=[Link]();
String prenom=[Link]();
37
String telephone=[Link]();
public voidremplir(){
DefaultTableModel md = new DefaultTableModel();
[Link](new String
[]{"Numero","Nom","Prenom","Adresse"});
}
- Appeler cette fonction lorsqu’on finit unenregistrement
38
- A l’evenement click de la table, les champs de texte doivent afficher l’enregistrement
selectionné. C'est-à-dire que txtNumeroClient doit le afficher le numéro, txtNomClient
doit afficher le nom du client …
public ResultSetrechercher(intnumero){
ResultSet RS=null;
try{
mon_statement = ma_connexion.createStatement();
String requete="select * from Client where
numclient="+numero;
RS= mon_statement.executeQuery(requete );
}
catch(SQLException se){
RS=null;
}
return RS;
}
public voidremplirChampsTexte(intnumero){
Client client=new Client();
ResultSetrs= [Link](numero);
try {
if ([Link]()){
[Link](""+[Link]("numClient"));
[Link]([Link]("nomClient"));
[Link]([Link]("prenomClient"));
[Link]([Link]("telephone"));
}
} catch (SQLException ex) {
[Link]([Link]()).log([Link],
null, ex);
}
try {
[Link]();
} catch (SQLException ex) {
[Link]([Link]()).log([Link],
null, ex);
}
39
- A l’evenement click de la jTable, il faut afficher les données de la ligne
introwIndex = [Link]();
//intcolIndex = [Link]();
String selection=[Link](rowIndex, colIndex).toString();
remplirChampsTexte([Link](selection));
//créer l’objet
Client client = new Client();
//recuperer les donnees
String numero=[Link]();
String nom=[Link]();
String prenom=[Link]();
String telephone=[Link]();
int rep;
rep=[Link](this, "Voulez-vous modifier
l'enregistrement");
if (rep==JOptionPane.YES_OPTION){
//on modifie la ligne
[Link]([Link](numero), nom, prenom, telephone);
[Link](this, "modification OK");
//on rafarîchit la grille
remplir();
}
40
modifier les noms pour avoir l’arborescence suivante
41
- rendre la fenetre invisible
- a l’evenementactionPerformed du menu mnuEditionFacture il faut afficher la fenetre
le champs de texte txtNumeroClientFacture doit afficher le numero du client de la fentre Client.
42
Chapitre II : L’héritage
I- Contexte
Enoncé
TAF
1- Définir le package et les classes Cercle et Cylindre.
2- Dans le programme Test, définir les objets suivants
cr : Cercle
Id=1
Rayon=5
cy : Cylindre
Id=2
Rayon=10
Hauteur=5
Remarques
43
La classe Cylindre est entièrement cohérente avec la classe Cercle, elle a les membres que la classe Cercle. On
peut donc créer la classe Cylindre a partir de la classe Cercle. On dira que la classe Cylindre hérite de la classe
Cercle. Le concept POO qu’on définira est l’héritage.
La classe dérivée est entièrement cohérente avec la classe de base. A partir de l’héritage, la classe dérivée a :
Syntaxe Java
44
TAF
1- Redéfinir le modèle précédent
Dans la classe Cylindre on aura seulement les spécificités d’une instance de Cylindre c'est-à-dire
hauteur et volume()
La source de [Link]
45
46
La source de [Link]
3- Tester
a- Créer l’objet de cylindre
47
c- Ajouter la methode toString() à la classe Cylindre et qui doit retourne l’id, le rayon et la hauteur,
n’utiliser pas les getters . Que constatez vous
Nb : les membres privés d’une classe de base ne sont pas accessibles par les classes dérivées.
Nb : pour que les membres que l’on juge privé soient accessibles par les classes dérivées, il faut définir ces
membres protected
Exercice
Définir les classes du modèles avec des constructeurs défauts et initialisation, getter/setter
Dans un programme de test, créer des objets de Ligne et de LigneAvecRemise afficher le total pour chaque
ligne
Source de [Link]
48
Ajouter ici le code source de la classe
Source de [Link]
Source de [Link]
49
- Ajouter la classe Facture. Dans la classe facture
o L’id de la facture doit être automatique, de même que ceux des lignes
o Déclarer un attribut privé lignes qui est de type List<Ligne>
o Initialiser cet attribut dans chaque constructeur de Facture
o L’opération ajouter() : prend une ligne en paramètre et l’ajoute à lignes
o Supprimer() : supprime la ligne passée en argument de lignes
o Modifier() : modifier les valeurs des attributs de l’objet qui a l’id en paramètre
o totalHorsTaxe() retourne la valeur des sommes des total() de toutes les lignes de la facture
o totalRemise() retourne la valeur des sommes des remise() de toutes les lignes avec remise
o tva() retourne la valeur de la Tva de la facture
o ttc() retourne la valeur de l’expression totalHorstaxe+Tva-remise
o getNombreLigneRemise retourne le nombre de lignes qui est de type LigneAvecRemise
o afficher doit afficher la facture suivant le modèle suivant
facture N° [id]
date : [dateFacture]
client : [client]
detail
50
id designation prix unitaire quantité total remise
[id] [designation] [prixUnitaire] [quantité] [total] [remise]
[id] [designation] [prixUnitaire] [quantité] [total] [remise]
[id] [designation] [prixUnitaire] [quantité] [total] [remise]
………
[id] [designation] [prixUnitaire] [quantité] [total] [remise]
Totaux
Total Hors taxe : [totalHorsTaxe]
Tva[TauxTva] : [Tva]
Remise : [remiseTotal]
[Nbre Ar. Remise] : [nombre Article Remise]
51
La classe Final
Définition
Une classe final est une classe qui ne peut avoir de classes dérivées.
Que constatez-vous ?
52
Chapitre III : Le polymorphisme
Exemple
source de A
Et la source de B
Votre résultat
Votre commentaire
53
Test2 : quel est le résultat de la source suivante à l’exécution
54
Test4 : quel est le résultat de la source suivante
Donner le résultat
Donner le résultat
55
Donner votre commentaire
Donner le résultat
56
Test 8 : donner le résultat à la sortie de la source suivante
II- définition
Le polymorphisme désigne la capacité, pour un objet donné, d'invoquer des opérations sur un objet dont il ne
connait pas la nature. Autrement dit, le polymorphisme d'objet consisterait à permettre à des objets de
présenter une interface similaire.
1- Définition
Une fonction ou méthode a 3 temps :
o la déclaration : donner une signature (identifiant, argument, type retourné) ;
o la définition : corps de la fonction ;
o appel : invocation de la fonction par une autre fonction.
Redéfinir une méthode, c’est de récrire une méthode existante dans la classe de base avec la même signature
dans les classes dérivée mais avec une nouvelle définition.
Surcharger une méthode, c’est réécrire une méthode dans la classe de base ou dérivée avec une signature
différente.
2- Exemple
57
Evaluation
Pour la gestion des admissions des étudiants on vous demande de mettre en place une model répondant aux
règles suivantes :
Notre système a deux types d’étudiants ceux inscrits au cycle BTS et ceux du cycle Ingénieur. Un étudiant du
BTS a un id, un matricule, un nom, une date de naissance, une moyenne général et est admis. Il compose et on
souhaite avoir les informations sur l’étudiant comme son id, nom, prénom, date de naissance, la moyenne
général, est admis ou pas. Lorsqu’il compose on passe en argument la moyenne générale. Si cette moyenne
est supérieure ou égale à 10 admis est vrai sinon faux.
L’étudiant du cycle ingénieur a comme celui du BTS un id, un matricule, un nom, une date de naissance, une
moyenne général et est admis mais un sujet de soutenance et la note de soutenance. Il est évalué et on passe
sa moyenne générale en paramètre alors sa moyenne générale est modifiée. Il compose également mais on
passe en argument la note de soutenance et la note de soutenance est modifiée. Si la moyenne de la moyenne
générale et celle de la note de soutenance est supérieure à 10 alors il est admis.
Qu’il soit BTS ou Ingénieur, l’appréciation s’applique sur la moyenne générale et est :
NB : la moyenne générale, la note de soutenance et est admis ne sont modifiés qu’à partir des seuls
traitements validés, composer.
TAF
58
o afficher les informations sur l’ingénieur et le BTS
Recommandation
1- modèle 1
On peut considérer la classe EtudiantBTS comme la classe de base et la classe EtudiantIngenieur comme la
classe dérivée. Proposer un modèle.
Une instance de EtudiantIngenieur compose mais la définition de méthode composer() de la classe de base
sera différente. Alors on redéfinira dans la classe EtudiantIngenieur la methode.
Lorsque l’instance de EtudiantIngenieur invoque la méthode composer(), c’est la méthode qui se trouve dans
la classe EtudiantIngenieur qui est appelé et non celle de la classe de base. On dit que la méthode de la classe
de base est masquée.
Que constatez-vous ?
Lorsque vous souhaitez invoquer dans une classe dérivée un membre de la classe de base masqué. Utilisez le
mot clé super
Syntaxe
59
[Link]
NB : L’annotation @Override permet d’indiquer que la méthode est une méthode redéfinie.
3- La méthode final
Une méthode déclarée final est une méthode qu’on souhaite ne pas redefinir dans les classes dérivées.
Syntaxe
Exemple :
Une méthode abstraite est une méthode d’une classe de base dont l’implémentation sera faite dans les classes
dérivées.
En d’autre terme, on prévoit qu’une méthode doit exister dans une classe mais son implémentation n’est pas
connu donc toutes les classes qui dériveront de cette classe doit obligatoirement implémenter cette méthode.
2- Syntaxe
3- Exemple
60
V- La classe abstraite
1- Définition
Une classe abstraite est une classe qui possède une ou plusieurs méthodes abstraites. S’il existe une seule
méthode abstraite dans une classe alors celle-ci devient abstraite.
2- Syntaxe
…..corps
NB : On utilise souvent les classes abstraites pour regrouper (factoriser) les membres communs de plusieurs
classes.
3- Exemple
- Modifier le modèle,
Créer une classe de base Etudiant qui a les membres communs aux deux classes et dériver cette classe pour
avoir les classes filles Ingenieur et BTS. La classe Etudiant aura la methode abstraite composer() car la
definition de cette methode est differente qu’on soit Ingenieur ou BTS.
61
En UML, la methode et la classe abstraite sont en italique.
NB : la methode toString() doit afficher les valeurs des attributs , la valeur de l’operation estAdmis et
l’appreciation de la moyenne.
62
- Dans la classe Test.
Que constatez-vous ?
- Donner la source de la classe BTS, elle doit obligatoirement redefinir la méthode composer().
- Dans le programme Test , créer un objet de la classe BTS, invoquer sa méthode composer, afficher ses
informations.
- Donner la source de la classe Ingenieur, elle doit obligatoirement redefinir la méthode composer(),
dans la classe ingenieur redefinir la méthode toString() en invoquant la méthode toString() de la classe
de base et la compléter pour retourner les valeurs des attributs spécifiques de la classe Ingenieur
- Dans le programme Test, créer un objet de Ingenieur, invoquer sa méthode composer et afficher ses
informations.
63
Exercice
Les attributs dérivés notés -/ sont des attributs qui sont obtenus à partir d’autres opérations. Concrètement ils
n’auront pas de setter mais les getters retourneront le résultat d’une opération.
Exemple :
Premier n’aura pas de setter mais un getter qui retournera l’étudiant qui la plus faible moyenneGenerale.
TAF
64
65
VI- L’interface
1- Définition
L’interface est une classe abstraite composée uniquement que de méthode abstraite. On dit que c’est une
classe abstraite pure. Elle a toutes les propriétés de la classe abstraite, sauf qu’elle n’utilise pas le mot clé
abstract.
2- Syntaxe
public interface I {
public <type> <identifiant>(<type> <arg>);
…
}
Toutes les méthodes de l’interface étant abstraites, on ajoute plus le mot clé abstract.
3- Héritage d’interface
4- Syntaxe java
Uml
66
En java
5- Exercice
67
L’interface Figure indique que toutes les classes qui vont lui dériver doivent obligatoirement implémenter ses
opérations.
TAF
Source de [Link]
Source de [Link]
Source de [Link]
68
Chapitre IV : java / swing
I- Objectif
Ce chapitre doit permettre de créer des fenêtres Windows, ajouter des composants et programmer les
événements de ces contrôles.
Lien :
II- Atelier 1
Premier page JFrame.
Taf
Source 1 de [Link]
- Executer le propgramme
69
Que constatez vous ?
- La methode setVisible() : elle permet d’afficher une fenetre, ajouter dans la methode initialiser() dans
la classe Fenetre et invoquer l’operation setVisible() avec pour argument true.
Que constatez-vous
Source de [Link]
Executez
Que constatez-vous ?
71
import [Link];
import [Link];
import [Link];
public class Fenetre extends JFrame {
private JButton btn_salut;
private JButton btn_bonsoir;
public Fenetre(){
[Link]();
}
public void initialiser(){
[Link](true); // rendre la fenetre visible
[Link]("Ma premiere page"); // donner un titre à la fenetre
[Link](600, 400); // definir une taille de la fenetre
[Link](null); // centrer la fenetre
//creer un objet de JButton
this.btn_salut= new JButton();
//definir quelque propriété de butons
//creer un objet de JButton
this.btn_bonsoir= new JButton();
this.btn_salut.setText("Bonjour");
// [Link](new Dimension(50,20));
//definir quelque propriété de butons
this.btn_bonsoir.setText("bonsoir");
// [Link](new Dimension(50,20));
//ajouter le bouton à la fenetre
[Link](this.btn_salut);
[Link](this.btn_bonsoir);
[Link]();
Que constatez-vous ?
- Les layoutManagers
Les layoutManager perment de gerer la disposition sur le contrôle. Il existe plusieurs layoutManager . on peut
citer :
o AbsoluteLayout
o BorderLayout
o CardLayout
o FlowLayout
o GridBagLayout
o GridLayout
o NullLayout
72
o OverlayLayout
Dans cet exemple , nous utiliseront GridLayout il place les controles dans les cellules de la lignes donc vous
definirez le nombre de ligne et de colonnes, lorsqu’il remplir une ligne, il passe à la ligne suivantes.
Dans cet exemple on a deux boutons qui met dans chaque cellule de la ligne.
import [Link];
import [Link];
import [Link];
import [Link];
/**
*
* @author GNAGBO
*/
public class Fenetre extends JFrame {
private JButton btn_salut;
private JButton btn_bonsoir;
public Fenetre(){
[Link]();
}
}
73
}
Executez
74
75
Atelier IV : JDBC
I- Objectif du document
Ce document doit permettre d’implémenter un projet JAVA interfaçant une base de données Oracle 10g
express.
Dans cet atelier l’auditeur doit créer un schéma de base de données, créer les objets de la base de données.
Ensuite créer un projet java, ajouter des interfaces utilisateurs , dessiner ces interfaces et programmer ces
instances.
c. Créer l’utilisateur java avec le mot de passe azerty sur les tablespace java_tbs et java_temp
iii. Tb_ligne(id_ligne :int, #id_facture :int, #id_article :int, quantite :int, prix_unitaire :réel)
Ajouter ici la source
76
ii. Seq_article_id
iii. Seq_ligne_id
[Link]
77
Ajouter ici la source
[Link]
[Link]
78
a. Créer les classes du packages
[Link]
[Link]
Tester la connexion
79
Ajouter ici la source
Source de [Link]
Source de [Link]
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
public String ajouter(Article article) {
try{
//charger la requete
CallableStatement cs = [Link](requete);
//passer les valeurs des arguments de la procedure
[Link](1, [Link]());
[Link](2, [Link]());
//executer la procedure
[Link]();
return "Article ajouté";
}
catch(SQLException ex){
return [Link]();
}
80
}
try{
//charger la requete
CallableStatement cs = [Link](requete);
//recuperer la valeur de sortie de la procedure
[Link](1, [Link]);
// executer la procedure
[Link]();
}
catch(SQLException ex){
MSGERROR=[Link]();
return null;
}
}
}
Source de [Link]
Source de [Link]
81
Ajouter ici la source
Source de [Link]
Source de [Link]
b. Programmer l’interface
82
Créer un objet de Article
5-
83
Chapitre II : JAVA / RMI
I- Objectif de l’atelier
Cet atelier nous permettra de présenter la technologie RMI et l’implémenter.
II-A.1-1- Fonctionnement
Afin de pouvoir lier l'implémentation présente sur le serveur avec les interfaces du
client il existe plusieurs alternatives. Nous pouvons générer des classes Java qui vont
implémenter les interfaces, se connecter au serveur, puis déléguer l'appel vers le serveur
au travers d'un socket.
Nous pouvons aussi éviter de générer du code grâce au proxy dynamique pour
rediriger l'appel du code client vers le serveur dynamiquement. Quelle que soit
l'alternative choisie nous voyons là émerger deux agents importants :
L’objet côté client qui va rediriger l'appel vers le serveur (le Stub) ;
L’objet côté serveur qui sera atteint par l'objet dynamique côté client (le
Skeleton).
84
Fonctionnement de RMI
Un annuaire appelé registry nous permettra de publier les services au niveau du
serveur. Il associera une clé (un identifiant) à une instance publiée et accessible au
travers d'un socket.
Source : [Link]
2- Avantages
Les avantages de cet approche sont multiples mais nous en retiendrons principalement
deux :
2- On a le modèle serveur
85
3- Lancer la machine hôte créer un projet et nommer le ProjetRMI
a. Ajouter le package [Link]
86
ii. Ajouter la classe [Link]
87
- Editer la classe ImpRemote qui implémente l’interface TestRemote
88
89
TAF (créer le programme client)
90
Exercice1 : ajouter la méthode additionner(double, double) qui retourne la
somme des arguments passés en argument.
Interface
Implémentation
Client
8- Sérialiser un objet
Si vous devez retourner des objets , il faut que vos classes implemente la classe
[Link]
Source de [Link]
Modifier l’interface
Source de l’interface
Modifier l’implémentation
Capture du client
ajouter la méthode lesLignes() qui retourne une liste de Ligne dans l’interface
source de l’interface
92
Dans le client afficher la somme totale des objets retournées
Capture du client
Source de bd_lignes
Source de bd_lignes
Source de [Link]
Source de [Link]
Source de [Link]
93
Source de LigneHelper
Source de l’interface
- Déployer le service
Source de Client
Source de client
Capture de la ligne
94