Académique Documents
Professionnel Documents
Culture Documents
EZZATI
FST SETTAT
JAVA
Contrairement au C/C++, le compilateur Java ne gnre pas de fichier excutable. Il cre pour chacune des classes (tp.java) d'un fichier Java un fichier .class (tp.class) qui sera interprt par la Machine Virtuelle Java.
Ensemble doutils (java, javac, jdb, javadoc, jar)
JAVA 3
JAVA
Le paramtre args de la mthode main() est un tableau dobjets de type String. Il nest pas utilis mais, il est exig par le compilateur Java. La classe contenant la mthode main() doit obligatoirement tre public afin que la machine virtuelle y accs. Notre premier exemple TP1 est rduit la dfinition dune mthode main().
JAVA 7
JAVA
JAVA
JAVA
10
break
byte case catch char class const*
double
else enum extends final finally float
implements protected
throw
throws transient try void volatile while
JAVA
11
Type
byte short int long
Valeur maximale
127 32 767 2 147 483 647
-923372036854775808 -923372036854775807
JAVA
12
JAVA
13
JAVA
14
JAVA
15
JAVA
16
JAVA
17
JAVA
18
Lecture au clavier
Laffichage (Java) ne pose pas de problme on peut toujours
Clavier.java
import java.io.* ; public class Clavier { public static String lireString () // lecture dune chaine { String ligne_lue = null ; try{InputStreamReader lecteur = new InputStreamReader(System.in); BufferedReader entree = new BufferedReader (lecteur) ; ligne_lue = entree.readLine() ; } catch (IOException err) { System.exit(0) ; } return ligne_lue ; } public static float lireFloat () // lecture dun float { float x=0 ; // valeur a lire try { String ligne_lue = lireString() ; x = Float.parseFloat(ligne_lue) ; } catch (NumberFormatException err) { System.out.println ("*** Erreur de donnee ***") ; System.exit(0) ; } return x ; }
JAVA 20
Clavier.java (suite)
public static double lireDouble () // lecture dun double { double x=0 ; // valeur a lire try { String ligne_lue = lireString() ; x = Double.parseDouble(ligne_lue) ; } catch (NumberFormatException err) { System.out.println ("*** Erreur de donnee ***") ; System.exit(0) ; } return x ; } public static int lireInt () // lecture dun int { int n=0 ; // valeur a lire try { String ligne_lue = lireString() ; n = Integer.parseInt(ligne_lue) ; } catch (NumberFormatException err) { System.out.println ("*** Erreur de donnee ***") ; System.exit(0) ; } return n ; }
JAVA
21
JAVA
22
JAVA
23
JAVA
24
En Java loprateur dexponentiation nexiste pas : pour calculer a pow b en utilise la fonction prdfinie : Math.pow(a, b) Oppos de a est a.
JAVA 25
JAVA
26
<
<= > >= == !=
Infrieur
infrieur ou gale Suprieur Suprieur ou gale gal diffrent
JAVA
27
!
&
Ngation
Et
^
| && ||
ou exclusif
Ou inclusif Et avec court circuit Ou inclusif avec court circuit
JAVA
28
Nb oprande 1 1 1 1
exemple ++i i+ +
-- i
i --
JAVA
29
JAVA
30
Instructions de contrle
Instruction if Syntaxe: if (condition) bloc_instruction1 else bloc_instruction2
JAVA
31
Instructions de contrle
instruction switch
Syntaxe:
switch(expression) {case constante1 : case constante2 : case constanteN : default: }
JAVA 32
bloc dinstructions1; break; bloc dinstructions2; break; bloc dinstructionsN; break; bloc dinstructions;
Instructions de contrle
instruction for Syntaxe: for(initialisation; condition; incrmentation) { bloc dinstructions;} Exemple:
for(i=1;i<=3;i++) system.out.println(i+, );
Rsultat: 1, 2, 3,
JAVA
33
Instructions de contrle
instruction while Syntaxe: while (condition) { bloc dinstructions; } Exemple i=1; while(i<=3) { system.out.println(i+, ); i++; }
Rsultat: 1, 2, 3,
JAVA 34
Instructions de contrle
instruction do while Syntaxe: do { bloc d instructions; } while (condition); Exemple i=1; do {system.out.println(i+, ); i++; } while(i<=3); Rsultat: 1, 2, 3,
JAVA
35
Exercice
3- utiliser do while
JAVA
36
JAVA
37
JAVA
38
JAVA
39
JAVA
40
Attributs Variable global de la classe Accessible depuis toutes les mthodes de la classe Mthode Les mthodes ne peuvent tre crer que comme des composante dune classe. Une mthode ne peut tre appele que pour un objet.
Lappel dune mthode pour un objet se ralise en nommant lobjet suivi dun point suivi du nom de la mthode et de sa liste darguments:
nomObjet.nomMethode(arg1, arg2, .)
JAVA
41
Classe On utilise les classes exactement de la mme manire que les types de donnes prdfinis. On peut crer des variables dune classe (appels objets ou instances) et les manipuler comme des variables dun type prdfini. Les objets d'une mme classe partagent des caractristiques communes, mais chaque objet a son propre tat.
JAVA
43
Constructeurs
On peut garantir linitialisation dun objet grce une mthode spciale appele constructeur qui permet dautomatiser le mcanisme dinitialisation dun objet. Un constructeur est une mthode appele au moment de la cration de lobjet. La cration dun objet passe par lapplication de loprateur new sur les constructeurs de la classe. Exemple: Voiture BM=new Voiture(2, false,44.50f); Voiture Ford; Ford = new Voiture(3, true, 55.88f);
JAVA 44
Exemple : Constructeurs
JAVA
45
Exemple : Constructeurs
JAVA
46
Exemple : Constructeurs
JAVA
47
Le destructeur
Un destructeur (et un seul) peut tre dfini, pour tre utilis lors de la destruction de l'objet. Celui-ci doit forcment se nommer finalize, il ne prend aucun paramtre et ne renvoie aucun type (void). Exemple :
JAVA
48
Les modificateurs
Les modificateurs sont des mots-cl spciaux du langage qui modifient la dfinition et le comportement dune classe, dune mthode ou dune variable. On peut les classer en quatre grandes catgories : les modificateurs permettant de contrler laccs une classe, une mthode ou une variable : public, private et protected ; le modificateur static utilis pour les variables et les mthodes de classe ; le modificateur final permettant de figer limplmentation dune classe, dune mthode ou dune variable ;
Les modificateurs
Il existe dautres modificateurs que nous allons voir plus tard tels que : synchronized et volatile (utiliss pour les threads) et native (utilis pour la cration de mthodes natives). public On utilise le mot cl public pour signifier quune classe, une mthode ou une variable sont accessibles nimporte o dans lunivers des classes Java (mme dans dautres packages). Le mot-cl public est le mode par dfaut.
JAVA
50
Les modificateurs
private personne ne peut accder ces dfinitions part les mthodes interne (Il limite la visibilit des mthodes et des variables dinstance la classe dans laquelle elles sont dfinies) les sous-classes ne peuvent hriter ni de variables prives, ni de mthodes prives. Protected forme de protection entre classe et sous-classes. les mthodes et les variables dune classe donne restent accessibles toute classe du mme package (diffrence avec C++), mais ne sont accessibles, en dehors du package, quaux sous-classes de la classe laquelle elles appartiennent.
JAVA 51
Les modificateurs
static est utilis pour dfinir des variables ou des mthodes de classe. Le mot-cl static indique que llment est stock dans la classe. final sapplique aux classes, aux mthodes et aux variables : empche le sous-classement de la classe ;
final signifie que la mthode ne peut pas tre redfinie par les sousclasses ;
final indique que la variable est constante. modificateur class NomClass [extends ClassMere] [implemenents Interfaces] {// champs et les mthodes }
JAVA 52
Imbrication de classe
Dans java une classe est dite interne lorsque sa dnition est situe lintrieur de la dnition dune autre classe. Exemple:
JAVA
53
JAVA
54
JAVA
55
JAVA
56
Tableaux
Les tableaux sont considrs comme des objets
Cration
Dclaration Dimensionnement
Initialisation
Attention: En java il n'est pas possible de dfinir des tableaux de taille statique la dclaration: float[7] Tab; //erreur de compilation
JAVA 57
Tableaux : Exemple 1
JAVA
58
Tableaux : Exemple 2
JAVA
59
JAVA
60
JAVA
61
Mthodes
main la premire mthode excute par une application Java lors de son lancement.
JAVA
62
Mthodes : main
JAVA
63
Mthodes
Les mthodes implmentent les traitements de la classe Nimporte quelle excution fait intervenir des mthodes Une mthode a deux parties : dclaration & corps Le type retourn peut tre lmentaire ou un objet. Si la mthode ne retourne rien on utilise void. syntaxe : modificateurs type_retourn nom_mthode (arg1, ... ) { // dfinition des variables locales et du bloc d'instructions }
JAVA 64
Mthodes : Exemple
JAVA
65
Rfrence dobjets
Personne p1=p2 ; // cela signifie que p1 et p2 rfrencent le mme objet Personne p3=new Personne(p1) ;// P 3 est une copie de p1 Exercice : Dans le programme dj fait tester la
rfrence dobjets
JAVA
66
Un objet n'est manipul que via une rfrence (un pointeur) sur lui. Ce qui est donc transmis une fonction, n'est pas l'objet lui-mme mais une rfrence sur cet objet. C'est donc la valeur de la rfrence et non la valeur de l'objet lui-mme qui est duplique dans le paramtre formel : il n'y a pas construction d'un nouvel objet.
JAVA
67
JAVA
68
JAVA
69
Mthodes : surcharge
La surcharge d'une mthode permet de dfinir plusieurs fois une mme mthode avec des arguments diffrents.
Le compilateur choisi la mthode qui doit tre appele en fonction du nombre et du type des arguments.
La signature d'une mthode comprend le nom de la classe, le nom de la mthode, le nombre et les types des paramtres. Il est possible de donner le mme nom deux mthodes diffrentes condition que les signatures de ces deux mthodes soient diffrentes.
JAVA
EZZATI
70
Mthodes : surcharge
JAVA
71
Les paquetages
Les classes Java sont regroupes en paquetages (packages en anglais) comparables aux bibliothques des autres langages comme le langage C++, ... Linstruction : import MesClasses ; permet lutilisation de toutes les classes dont les paquetage MesClasses est engendr. Exemple: import nomClasse; import nomPack.*; // Importe une classe // Importe toutes les classes de nomPack import nomPack.nomClasse; // Importe une classe de nomPack Le package par dfaut : cest le package qui na pas de nom, et auquel appartiennent toutes les classes dun mme rpertoire.
JAVA 72
Les paquetages
Quelques paquetages du SDK (Software Development Kit) java.lang : classes de base de Java java.util : utilitaires java.io : entres-sorties java.awt : interface graphique javax.swing : interface graphique avance java.applet : applets java.net : rseau java.rmi : distribution des objets
JAVA
EZZATI
73
JAVA
74
JAVA
75
HRITAGE
La notion dhritage constitue lun des fondements de la programmation OO. L'hritage est un mcanisme qui permet une classe d'hriter l'ensemble du comportement et des attributs d'une autre classe. Permet de dfinir une nouvelle classe, dite classe drive, partir dune classe existante dite classe de base (super classe). La classe driv se comporte comme la classe de base mais avec quelques diffrences. on a seulement besoin du code compil de la clase de base.
JAVA
76
HRITAGE
On peut par exemple: ajouter de nouvelles mthodes adapter (modifier) certaines mthodes Syntaxe: class <ClasseDerivee> extends <ClasseDeBase> Interprtation: Permet de dfinir un lien d'hritage entre deux classes: La classe <ClasseDeBase> est le nom de la classe de base. Elle s'appelle une classe mre, une classe parente ou une super-classe. La classe <ClasseDerivee> est le nom de la classe drive Par dfaut il ny a pas de extends dans la dfinition dune classe: toutes les classes hritent de la classe Object.
JAVA 77
JAVA
78
HRITAGE : CONSTRUCTEURS
Possibilit comme les mthodes de rutiliser le code des constructeurs de la super-classe. Lappel au constructeur de la super-classe doit se faire absolument en premire instruction. La premire instruction dun constructeur peut tre un appel un constructeur de la classe mre : super(...) ou un autre constructeur de la classe : this(...) Interdit de placer this() ou super() ailleurs quen premire instruction dun constructeur.
JAVA 79
HRITAGE : CONSTRUCTEURS
Le constructeur de la classe drive complte la construction de lobjet driv, et ce, en appelant en premier lieu le constructeur de la classe de base. Toutefois, il existe des cas particuliers qui sont : cas1 : La classe de base ne possde aucun constructeur Dans ce cas, si la classe drive veut dfinir son propre constructeur, elle peut optionnellement appeler dans la 1re instruction de constructeur la clause super () pour dsigner le constructeur par dfaut de la classe de base. Cas2 : La classe drive ne possde pas un constructeur Dans ce cas, le constructeur par dfaut de la classe drive doit initialiser les attributs de la classe drive et appeler :
JAVA
80
HRITAGE : CONSTRUCTEURS
Le constructeur par dfaut de la classe de base si elle ne possde aucun constructeur. Le constructeur sans argument si elle possde au moins un constructeur. Dans le cas o il n y a pas un constructeur sans argument et il y a dautres constructeurs avec arguments, le compilateur gnre des erreurs.
JAVA
81
HRITAGE : CONSTRUCTEURS
Exemple1 (cas1) Class A { // pas de constructeur } class B extends A { public B(.) {super() ; //appel de constructeur par dfaut de A } B b = new B(); // Appel de constructeur1 de A
82
JAVA
HRITAGE : CONSTRUCTEURS
Exemple2 (cas2) Class A { public A() {.} //constructeur1 public A ( int n) {..} //constructeur2 } class B extends A { // ..pas de constructeur } B b = new B(); // Appel de constructeur1 de A
JAVA 83
HRITAGE : CONSTRUCTEURS
Exemple3 (cas 2) Class A { public A ( int n) {..} //constructeur1 } class B extends A { // ..pas de constructeur } B b = new B(); /* On obtient une erreur de compilation car A ne dispose pas un constructeurs sans argument et possde un autre constructeur*/
JAVA 84
HRITAGE : CONSTRUCTEURS
class graphiques { private x, y ; public graphiques (int x1, int y1) {x = x1 ; y=y1 ;} //autres mthodes } class cercle extends graphiques { private double rayon ; cercle ( int a, int b, double r) { super (a, b) ; //appelle le constructeur de la classe de base rayon = r ; } //autres mthodes }
JAVA
85
HRITAGE
L'hritage successif de classes permet de dfinir une hirarchie de classe qui se compose de super classes et de sous classes. Une classe ne peut avoir qu'une seule classe mre : il n'y a pas d'hritage multiple en java.
Polymorphisme
Soit B une classe qui hrite dune autre classe A. f( ) une mthode de A qui redfinie dans B. g( ) une mthode de A. h( ) une mthode de B.
JAVA
87
Polymorphisme
JAVA
88
Polymorphisme
Lappel se fond sur le type effectif de lobjet rfrenc par ab au moment de lappel et non sur le type de la variable ab. Il faut noter que la mme criture a.f(); peut correspondre des appels diffrents de la mthode f(). Ceci est ralis grce au polymorphisme. Le Polymorphisme veut dire que le mme service peut avoir un comportement diffrent suivant la classe dans laquelle il est utilis. Cest un concept fondamental de la programmation objet, indispensable pour une utilisation efficace de lhritage. Pour lobjet ab si f( ) est redfinie dans B, alors cest cette mthode qui sera excute sinon, la recherche de f() se poursuit dans la classe mre de B, puis dans la classe mre de cette classe mre, et ainsi de suite, jusqu trouver f() qui sera alors excute.
JAVA 89
Polymorphisme
Le polymorphisme permet dviter les codes qui comportent de nombreux embranchements et tests. Exemple : Considrons une classe TerreVhicule. Supposons que les classes Voiture et Camion hritent de la super classe TerreVhicule. Dans un tableau htrogne, on ranges des objets de type Voiture , Camion . Ensuite on affiche le contenu du tableau :
JAVA
90
JAVA
91
Polymorphisme
instanceof: Voiture instanceof Vhicule retourne true
Inconvnients : Si on veut rajouter un Fourgon, on est obliger de: changer dans le code source aux niveaux dfinition de la classe Vhicule (rajouter la mthode public void appelfourgon() {}) En exploitant le polymorphisme, on peut : Eviter les tests Rendre le code extensible Exemple:
JAVA
92
JAVA
93
Cast (transtypage)
Le cast est le fait de forcer le compilateur considrer un objet comme tant dun type qui nest pas le type dclar ou rel de lobjet. Les seuls casts autoriss entre classes sont les casts entre classe mre et classes filles. UpCast : classe fille classe mre implicite DownCast : classe mre classe fille explicite Toujours accept par le compilateur, mais peut provoquer une erreur lexcution ;
JAVA
94
Cast (transtypage)
JAVA
95
JAVA
97
JAVA
98
JAVA
99
JAVA
100
JAVA
101
JAVA
102