ING 2 Transmision Du Signal
ING 2 Transmision Du Signal
ING 2 Transmision Du Signal
Le langage JAVA
• Introduction à Java
• La syntaxe
• Les concepts Objet
• Classes, méthodes, attributs
• Héritage, polymorphisme, encapsulation
• Les interfaces
• Les classes de base
• Les exceptions
• Les entrées-sorties
2
Introduction à Java
3
Introduction à Java
Origine du langage
Développé par SunSoft pour réaliser le développement de
systèmes embarqués
Projet « Oak »
Quelques liens
– http://www.javasoft.com/
– http://www.sunsoft.com/
– http://www.developer.com/directories/pages/dir.java.htm/
(anciennement www.gamelan.com)
– http://www.javaworld.com/
– http://tips.iworld.com/ sélectionnez « Java »
4
Introduction à Java
5
Introduction à Java
6
Introduction à Java
8
Introduction à Java
Prog.class Prog.class
Compilateur
MV+
MV
JIT
Code binaire
Code binaire
en mémoire
10
Introduction à Java
Multi-processus Multi-thread
Mémoire Mémoire
P1 P2 T1 T2
Inter-process Synchronisation
11
Introduction à Java
Le JDK
Il contient :
– Un ensemble de classes de base regroupées en packages
• Interface utilisateur, conteneurs, gestion des threads, réseau…
– Des exécutables : machine virtuelle, compilateur…
– Des bibliothèques permettant de coupler du Java et du C
Il est gratuit
12
Introduction à Java
L’offre actuelle
– Jbuilder 4 (Inprise)
– Visual J++ (Microsoft)
– Visual Age (IBM)
– Visual Cafe Pro
– …
13
Introduction à Java
14
Introduction à Java
JDBC
– Accès aux bases de données relationnelles
Beans
– Composant Java
Sécurité
– Cryptage, identification, signature
Internationalisation
– Format de date/heure
– messages localisés
– caractères UNICODE 2
JavaIDL
– Support de CORBA
15
Introduction à Java
Hello Word
class Hello {
int k = 5;
public static void main (String argv[])
{
Hello hello = new Hello();
for (int I = 0; I < hello.k; I++)
hello.SayHello();
}
public void SayHello()
{
System.out.println("Hello Java World !!! ");
}
}
Edit Hello.java
Javac Hello.java
Java Hello
16
La syntaxe
17
La syntaxe
Package
Classe
Attributs
Méthodes
18
La syntaxe
class Test {
19
La syntaxe
20
La syntaxe
Bloc d’instructions
{
int i = 0;
if (i==0)
System.out.println ("Valeur de i : " + i);
}
21
La syntaxe
Instructions possibles
Appel de méthode
Affectation
22
La syntaxe
class Test {
int calculer (int taux, float delta) {
return taux * delta;
}
}
23
La syntaxe
{
int compteur;
int indice = 0;
Voiture golf;
Voiture twingo = new Voiture();
}
24
La syntaxe
{
{
int compteur;
…
// compteur est accessible
}
25
La syntaxe
Les mots réservés (if, class, int…) ne peuvent pas être utilisés
26
La syntaxe
Point d’entrée
class Test {
27
La syntaxe
Type caractère
char 16 bits non signé UNICODE2
Type booléen
boolean 1 bit deux valeurs possibles : true ou false
28
La syntaxe
29
La syntaxe
L’affectation
class Test {
int calculer () {
int i = 0;
int j = 6;
i = (j + 5) * 3;
return i + j;
}
}
30
La syntaxe
x = y * z ; //x vaut 6
x += 2 ; //x vaut 8
y = x / 4 ; //y vaut 2
y =x % 2 ; //y vaut 0
Opérateurs unaires
int x, y;
x = 3;
y = -x ; //y vaut -3
y = ++x ; //y vaut 4, x vaut 4
y = x-- ; //y vaut 4, x vaut 3
Opérateurs de comparaison
{
boolean droitDeVote;
int age;
33
La syntaxe
Opérateurs logiques
S’appliquent au type boolean
– ! (not) , && (and) , II (or)
– &, I
Retournent un type boolean
& renvoie « true » si les deux expressions renvoient
« true »
&& a le même comportement mais n’évalue pas le
seconde expression si la première est « false »
| renvoie « true » si l’une des deux expressions
renvoie « true »
|| a le même comportement mais n’évalue pas le
seconde expression si la première est « true »
34
La syntaxe
35
La syntaxe
36
La syntaxe
Test conditionnel
class Test {
public static void main (String args[]) {
int compteur = 0;
boolean debut;
if (compteur == 0) {
debut = true;
System.out.println("Début de la partie");
}
else if (compteur ==10)
System.out.println("Fin de la partie");
else
System.out.println("Partie en cours");
}
}
37
La syntaxe
Boucles while
class Test {
public static void main (String args[]) {
int i;
do {
System.out.println("Entrez un nombre < 10");
c= lireUnInt();
} while (c>10);
38
La syntaxe
Boucles for
class Test {
public static void main (String args[]) {
int i;
// i est accessible
// j n’est pas accessible
}
}
39
La syntaxe
Switch
class Test {
public static void main (String args[]) {
char c = (char)System.in.read();
switch(c) {
case ‘o’ : case ‘O’ :
System.out.println("Oui");
break;
case ‘n’ : case ‘N’ :
System.out.println("Non");
break;
default :
System.out.println("Mauvaise réponse");
break;
}
}
}
40
La syntaxe
Commentaires (1/2)
L’utilisation de commentaires est fortement
recommandé
42
La syntaxe
43
La syntaxe
Initialisation dynamique :
int[] param = new int[10];
44
Les concepts Objet
45
Les concepts Objet
Simulateur
Abstraction Voiture de circulation
Voiture
Abstraction
Boîte Moteur
Conception
de voiture
47
Les concepts Objet
48
Les concepts Objet
Classes
abstraites Moyen de transport
<<extends>>
Classes
concrètes Tracteur Train Voiture
Monde réel
49
Les concepts Objet
50
Les concepts Objet
51
Les concepts Objet
52
Les concepts Objet
…………
// Utilisation d’un objet
Voiture clio = new Voiture();
clio.accelerer(20);
Passage du paramètre
53
Les concepts Objet
54
Les concepts Objet
<-possède
Voiture 0..* +propriétaire
Personne
Roue Carroserie
55
Les concepts Objet
L’héritage
Mécanisme provenant d’une relation de
Généralisation/Spécialisation
Une sous-classe hérite des attributs, méthodes et
associations de ses super classes
MoyenDeTransport
couleur
vitesse
demarrer()
arreter()
Voiture Moto
typeCarrosserie typeDePot
marcheArriere() faireUneRoueAvant() 56
Les concepts Objet
implémentatio
instruction
interface
instruction
instruction
n
instruction
instruction
instruction
57
Les concepts Objet
Voiture
Demarrer()
Feu
changer (Vert)
Velo
Demarrer()
58
Les concepts Objet
Demarrer()
Feu
changer (Vert)
Velo
- Pédaler
Demarrer()
59
Les concepts Objet
Résumé
60
Classes,méthodes, attributs
61
Classes,méthodes, attributs
62
Classes,méthodes, attributs
64
Classes,méthodes, attributs
class Date {
int _jour; // initialisé à 0
int _mois = 1; // initialisation explicite
int _an = 2000;
final static int max_mois = 12; //Constante
void print () {
System.out.println(_jour + "/" + _mois + "/" + _an);
}
}
………
65
Classes,méthodes, attributs
Le passage de paramètres
66
Classes,méthodes, attributs
Surcharge (1/3)
Une méthode surchargée est une méthode qui peut
être appelée avec plusieurs ensembles de listes de
paramètres
– Permet d’écrire plusieurs versions d’une méthode
Exemple
void print () {…}
void print (int i) {…}
int print (float f) {…}
Surcharge (2/3)
Surcharge (3/3)
Short 10 0 10 1 2 4 5
Char 11 10 0 1 2 4 5
Int 12 11 11 0 1 5 4
Long 12 11 11 10 0 6 5
Float 15 14 13 12 11 0 1
double 16 15 14 13 12 10 0
69
Classes,méthodes, attributs
Constructeurs
Exemple de constructeurs
class Date {
int _jour = 1;
int _mois = 1;
int _an = 2000;
Date() {
_an = 1999;
}
………
71
Classes,méthodes, attributs
Création d’objets
73
Classes,méthodes, attributs
« this »
class Versement {
void valider() {……}
void effectuer(Compte s, Compte d, float montant) {
s.debiter(montant);
d.crediter(montant);
this.valider();
}
}
74
Classes,méthodes, attributs
class Personne {
String _nom ;
String _prenom;
float _taille;
75
Classes,méthodes, attributs
« null »
76
Classes,méthodes, attributs
Méthodes « static »
class MathUtil {
final static double _PI = 3.14 ;
static double PI() {
return _PI;
}
79
Héritage, polymorphisme,
encapsulation
80
Héritage, polymorphisme, encapsulation
Héritage (1/2)
81
Héritage, polymorphisme, encapsulation
Héritage (2/2)
class Felin {
boolean a_faim = true;
void parler() { }
void appeler() {
System.out.println("minou minou,…");
if (a_faim) parler();
}
}
82
Héritage, polymorphisme, encapsulation
83
Héritage, polymorphisme, encapsulation
84
Héritage, polymorphisme, encapsulation
Polymorphisme (1/2)
85
Héritage, polymorphisme, encapsulation
Polymorphisme (2/2)
class Cirque {
Felin f_list[] = new Felin[3];
Cirque() {
f_list[0] = new Lion();
f_list[1] = new Chat();
f_list[2] = new Tigre();
}
void appeler() {
for (int i = 0; i<3 ; i++) {
Felin f = f_list[i];
f.parler();
}
}
}
86
Héritage, polymorphisme, encapsulation
Super (1/2)
class Chat {
Chat() {
super(4);
race = "goutière"; } }
87
Héritage, polymorphisme, encapsulation
89
Héritage, polymorphisme, encapsulation
90
Héritage, polymorphisme, encapsulation
import java.util.*;
91
Héritage, polymorphisme, encapsulation
92
Héritage, polymorphisme, encapsulation
La variable CLASSPATH
Classes publiques
Le mot-clé « public » permet de définir une classe
comme publique
Visibilité - Encapsulation
95
Héritage, polymorphisme, encapsulation
Règles de visibilité
public
protected
private
friendly
(par défaut)
96
Héritage, polymorphisme, encapsulation
Règles de visibilité
97
Héritage, polymorphisme, encapsulation
public estOuverte() {
return (etat == EtatPorte.OUVERTE);
}
}
98
Les interfaces
99
Les interfaces
Définition
101
Les interfaces
Interfaces et types
102
Les interfaces
Variables d’interfaces
int i = MyInterface.MAX;
103
Les interfaces
Personne Persistent
extends
implements
Client
104
Les interfaces
Compte
credit()
Client debit() Banque
balance() ……
…… 0..* 0..*
save()
load()
105
Les interfaces
Client Banque
…… ……
106
Les interfaces
ICompteClient ICompteBanque
implements implements
Compte
credit() save()
credit() load()
debit()
debit()
0..* 0..*
balance()
save()
load()
Client Banque
…… ……
107
Les interfaces
…… ……
108
Les classes de base
109
Les classes de base
112
Les classes de base
114
Les classes de base
Exemples
115
Les classes de base
La classe java.lang.String
116
Les classes de base
String : concaténation
int area = 33;
int prefixe = 1;
int suffixe = 02030405;
117
Les classes de base
String : manipulation
length() : cette méthode permet de connaître le
nombre de caractères d’une chaîne
– Ex : for (int i = 0; i < monTexte.length(); i++) {......}
indexOf(char c, int i) : retourne la position du
caractère “c” à partir de la position “i”
– if (monTexte.indexof(‘$’, 5) <> -1 ) {......}
substring(int i, int j) : extrait de la chaîne les
caractères de la position “i” à la position “j”
– String nouveauMot = ancienMot.substring(2,5);
equals() : retourne un booléan signifiant si les deux
chaînes sont identiques
– Ex : if ( mot1.equals(mot2)) {......}
118
Les classes de base
La classe java.lang.StringBuffer
119
Les classes de base
La classe java.util.Vector
Tableau de références à taille variable
On ne peut y stocker que des références sur les
objets
– Impossible de stocker directement un type de base dans
une collection de type Vector : utiliser pour cela les classes
wrapper
– Souvent utilisé pour coder une relation 1-n entre deux
classes
Possibilité de savoir si un objet est présent dans le
tableau et quelle est sa position
Vous pouvez :
– Insérer ou supprimer des références
– Parcourir le contenu
120
Les classes de base
// 0123456789
// 01234056789
vInt.removeElementAt(0);
// 1234056789
vInt.removeAllElements();
121
Les classes de base
122
Les classes de base
L’interface java.util.Enumeration
Objet permettant de parcourir les éléments d’un conteneur
– Une énumération ne stocke aucune information
– Ne contient qu’une position courante dans le conteneur
– Interface unique pour le parcours de tous les types de conteneurs
– Ne fonctionne que pour un seul parcours
– C’est une interface, pas une classe
Deux méthodes :
– Boolean hasMoreElements() : teste s’il reste des éléments
– Object nextElement() : récupère l’élément courant et
passe au suivant
123
Les classes de base
Enumeration : exemple
Vector vInt = new Vector();
for (int i = 0; i<10 ; i++) {
Integer elt = new Integer(i);
vInt.addElement(elt);
}
// 0123456789
124
Les classes de base
125
Les classes de base
126
Les classes de base
La classe java.util.Hashtable
Tableau associatif permettant :
– D’indexer un objet par une clé
– De retrouver rapidement un objet à partir d’une clé
Les clés des références sont des objets
– Chaînes de caractères, numéros d’identification …
– Elles sont recherchées par valeurs (méthodes equals)
– Les clés doivent implémenter la méthode
Object:hashCode()
Une clé ne peut identifier qu’une seule valeur
– N’accepte pas les doublons
– Pour stocker des relations n-n, il suffit de stocker des
instances de Vector dans une Hashtable
Très performant pour l’accès aux valeurs
127
Les classes de base
La classe java.util.Hashtable
128
Les classes de base
Hashtable : un exemple
Hashtable deptable = new Hashtable();
129
Les classes de base
Choisir un conteneur
Parcourir 10 7 3
Insérer ou 3 10 9
enlever
Rechercher 3 2 10
(5 si trié)
130
Les exceptions
131
Les exceptions
Exemple (1/2)
class Equation {
double _a;
double _b;
double c;
// Constructeur
Equation(double a, double b, double c) {
_a = a;
_b = b;
_c = c; }
// Calcul du delta
public double delta() { return _b*_b – 4*_a*_c; }
// Solution
public double solution() throws PasDeSolution {
double discr = delta();
if (discr<0) throw new PasDeSolution();
return (_b + Math.sqrt(discr))/(2*_a); }
}
133
Les exceptions
Exemple (2/2)
class PasDeSolution extends Exception {
... ...
// Méthode appelante
……
try {
Equation ed = new Equation(1,0,1); // x2 + 1 = 0
double resultat = eq.solution();
……
} Branchement
catch(PasdeSolution p) { vers le catch
System.out.println(p.toString);
}
134
Les exceptions
Throw et throws
135
Les exceptions
136
Les exceptions
Finaly
Throwable
Error Exception
138
Les exceptions
Exception
ConnectionException
InvalidPassword InvalidLogin
139
Les exceptions
140
Les entrées-sorties
141
Les entrées-sorties
Description
InputStreamReader OutputStreamWriter
142
Les entrées-sorties
143
Les entrées-sorties
C
a
Fichier n Filtre
a
l
144
Les entrées-sorties
146
Les entrées-sorties
147
Les entrées-sorties
La classe java.io.PrintWriter
} catch(IOException e) {}
148
Les entrées-sorties
La classe java.io.BufferedReader
149
Les entrées-sorties
La classe java.io.File
La classe java.io.RandomFile
La classe RandomAccessFile permet la lecture et l’écriture à
n’importe quelle position dans le fichier
L’octet est l’unité de mesure des positions et des
déplacements dans le fichier
Constructeurs (throws IOException) :
– Public RandomAccessFile (File file, String mode)
– Public RandomAccessFile (String name, String mode)
– Mode = “r” (lecture seule) ou “rw” (lecture et écriture)
Méthodes :
– ReadInt, readFloat, readBoolean : lecture des types de base
(Interface DataInput)
– WriteInt, writeFloat, writeBoolean : écriture des types de base
(Interface DataOutput)
– Seek(long) : décalage en octets
151