Introduction aux Objets et à Java

publicité
Introduction aux Objets et à Java
F. Mallet
[email protected]
http://deptinfo.unice.fr/~fmallet/java/gse.html
2011/2012
F. Mallet - GSE 4
1-1
Introduction aux objets et à Java
Plan du cours
Introduction
oduc o
Créer ses premières classes
Réutilisation: héritage et composition
Patrons de conception: Décoration, MVC
Interface avec le langage C: JNI
Communication avec l’extérieur: sockets
2011/2012
F. Mallet - GSE 4
2
Introduction aux objets et à Java
Chapitre I – Introduction aux objets
Objectifs
Objec s
 Définir la programmation orientéeorientée-objet
• Historique
• Avantages
 Notions
N ti
essentielles
ti ll
• Type, Variable
• Classe, Objet, Référence
• Champ/attribut, méthode
 Eléments syntaxiques du langage
2011/2012
F. Mallet - GSE 4
3
Introduction aux objets et à Java
Types de données (1/2)
Les
es objets
obje s Java
Ja a représentent
ep ése e
 Les objets du système modélisé
• Une personne (nom
(nom, prénom
prénom, date de
naissance…)
• Des formes géométriques (triangle
(triangle, cercle
cercle, …))
• Des portes logiques (et, ou, inverseur, mux, …)
• Des bases de données et fichiers (images
(images, texte
texte,
son, vidéo…)
2011/2012
F. Mallet - GSE 4
4
Introduction aux objets et à Java
Types de données (2/2)
Le type
yp encode les données
 Domaine de valeurs
p
autorisées ((arithmétiques,
q
, booléennes…))
 Opérations
On distingue
g
 Types primitifs (caractères, entiers, réels, booléens)
 Types
yp composés
p
• Image = ensemble de pixels de couleur
• Couleur = Rouge + Vert + Bleu
2011/2012
F. Mallet - GSE 4
5
Introduction aux objets et à Java
Valeurs numériques
Chiffres numériques
q
: BInary
y digiT
g = BIT
 Signaux électriques encodés = valeurs logiques
gq
((0 et 1))
 Binaire: 2 valeurs logiques
Ensembles finis: encodés sur p
plusieurs BITs
 1 octet = 8 bits (28 = 256 valeurs logiques)
 1 mot = 32 bits ((232 valeurs logiques)
gq
)
Ensembles infinis ?
 Entiers naturels, nombres réels, …
2011/2012
F. Mallet - GSE 4
6
Introduction aux objets et à Java
Type primitif boolean
Domaine de valeurs: vrai ou faux

{true, false}
Opérations autorisées
 Affectation
 Comparaison
 Opérations
p
booléennes
=
==, !=
&&, ||, !
Exemples
p


2011/2012
boolean estVisible = true;
if (estVisible) …
F. Mallet - GSE 4
7
Introduction aux objets et à Java
Type primitif char
Domaine de valeurs: Unicode 16 bits
 Code ASCII (7 bits: 128 caractères)
 Code ANSI ((8 bits,, ISO-latin-1,, ISO-8859-1))
Opérations
p
autorisées
 Affectation
 Comparaison
p
=
==, !=
Exemples
p


2011/2012
char c = 'c';
// code ASCII 99
c = '\u00e9';
\u00e9 ;
// code unicode 00e9 =>
> é
F. Mallet - GSE 4
8
Introduction aux objets et à Java
Nombres entiers relatifs 
 Domaine de valeurs




8 bits
16 bits
32 bits
64 bits
[-128,127]
[-128
127]
[-32768, 32767]
[-231, 231-1]
[[-2
263, 263-1]
1]
byte
short
int
long
 Opérations autorisées




Affectation
Comparaison
Opérations arithmétiques
Opérations
p
binaires
=
==, !=
+, -, *, /, %
(int, long)
&,
(int, long)
||, ~, <<, >>
 Division entière: 23 = 3 * 7 + 2
 /
 %
 23 / 0
2011/2012
quotient de la division entière
reste de la division entière
Erreur !
F. Mallet - GSE 4
23/7 → 3
23%7 → 2
9
Introduction aux objets et à Java
Nombres approchés 
 Domaine de valeurs
 32 bit
bits
 64 bits
??
??
floatt
fl
double
 Opérations autorisées




Affectation
Comparaison
p
Opérations arithmétiques
Opérations binaires
=
==, !=
+, -, *, /
&, |, ~, <<, >>
 Particularités
 Division approchée: 23.0 / 0 → +∞
2011/2012
F. Mallet - GSE 4
10
Introduction aux objets et à Java
Nombres approchés – IEEE 754
Codage
Codage sur
su 3
32 b
bits
s => 232 valeurs
a eu s
 Complément à 2 (int)
 Virgule flottante (float)
2011/2012
Signe
Exposant
Mantisse
S
E=]0 255[
E=]0,255[
M
S
0
1
0
1
0
0
0
255
255
255
>0
0
0
>0
0
0
F. Mallet - GSE 4
[-231, 231-1]
[ 2128, 2128]
[-2
Nombre représenté
((-1))Sx2E-127x(1,M)
( , )2
(-1)Sx2-126x(0,M)2
+0
-0
NaN
+

Not a Number !
11
Introduction aux objets et à Java
Variable
Case de la mémoire
 Nom (identifiant): cercle, nom2, _1, …
 Type : primitif ou composé
 Valeur: dans le domaine défini par le type
• Change au cours du programme (#constante)
Déclaration
Initialisation
Utilisation
int premiere;
premiere
i
= 12
12;
premiere = premiere + 1;
Obligatoire: initialisation avant utilisation !
2011/2012
F. Mallet - GSE 4
12
Introduction aux objets et à Java
Affectation =
Pour donner/forcer une valeur à une variable
 <variable> = <expression>;
Asymétrique
 L’expression est évaluée
 puis
i lla variable
i bl est affectée
ff é à ((prend
d comme valeur)
l )
la valeur calculée
Exemples
 premiere = 12 + 6 / 5 * 5;
 premiere = premiere * 2 + 1;
 ppremiere = Math.max(12,
( , p
premiere);
);
2011/2012
F. Mallet - GSE 4
13
Introduction aux objets et à Java
Affectations combinées +=
+
Incrémente une variable
 <variable> += <expression>;
Attention
 Surchargé pour tous les types numériques
• byte,
y , short,, int,, long,
g, float,, double
 Différent d’une addition
• byte b = 127;
• b = b + b;
b += b
Variantes
 -=, *=, /=, <<=, >>=, &=, |=
 b++, ++b
2011/2012
F. Mallet - GSE 4
14
Introduction aux objets et à Java
Classe = Type composé
 Types primitifs normalisés par le langage
 boolean, char, byte, short, int, long, float, double
 Composition = choix des champs/attributs (nom + type)




Couleur: rouge (8 bits) + vert (8 bits) + bleu (8 bits)
Image: ensemble de points de couleur
Nom: séquence/chaîne de caractères
Date: ?
 Compromis espace mémoire/temps de calcul
 C
Couleur:
l
RGB vs. YUV
 Nombre complexe:
ou
2011/2012
c = re + i.im
c=n.e
c
n.ei.φ
F. Mallet - GSE 4
15
Introduction aux objets et à Java
Classe: syntaxe
 Couleur
 Complexe
class CouleurRGB {
byte rouge;
b t vert;
byte
t
byte bleu;
}
class ComplexeCartesien {
double reelle;
d bl i
double
imaginaire;
i i
}
class CouleurYUV {
byte luminance;
byte chrominanceRouge;
b te chrominanceBle
byte
chrominanceBleue;
e
}
class ComplexePolaire {
double norme;
double phase;
}
2011/2012
F. Mallet - GSE 4
16
Introduction aux objets et à Java
Objet = instance d’une
d une classe
Type
yp
→
Classe →
valeurs
objets
Complexe c1; // référence
c1 = new Complexe(1, -1);
c1
2011/2012
→
→
variables
références
Complexe c2; // référence
c2 = new Complexe(2, 0);
c2
F. Mallet - GSE 4
17
Introduction aux objets et à Java
Méthode = opération sur les objets
Norme d’un complexe
p
class ComplexeCartesien {
double re;
double im;
;
class ComplexePolaire {
double norme;
double p
phase;
;
double norme () {
double re2 = re
re*re;
re;
double im2 = im*im;
return Math.sqrt(re2+im2);
}
double norme() {
return norme;
}
double phase () {
return Math
Math.atan2(im,
atan2(im re);
}
double phase() {
return phase;
}
}
2011/2012
}
F. Mallet - GSE 4
18
Introduction aux objets et à Java
Notation pointée
Pour
ou accéde
accéder au
aux membres
e b es d
d’un
u obje
objet
 Membre = champs + méthodes
Exemple



2011/2012
Complexe c1 = new Complexe();
désigne
g le champ
p reelle de c1
c1.norme() désigne la méthode norme de c1
c1.reelle
F. Mallet - GSE 4
19
Introduction aux objets et à Java
Méthodes et paramètres
Données
o ées supplémentaires
supp é e a es
 Le calcul de la norme nécessite seulement la
valeur de ‘reelle’
reelle et de ‘imaginaire’
imaginaire
 Certaines méthodes nécessitent des
paramètres
• Signature
int addition(int x,
x int y);
• Corps
int addition(int x, int y) {
return x + y ;
}
2011/2012
F. Mallet - GSE 4
20
Introduction aux objets et à Java
Classe Registre
class Registre {
// bloc de déclaration de classe
int etat = 0 ;
void decaleAGauche (int poidsFaible) {
etat = etat << 1 + poidsFaible;
}
int getEtat() {
return etat ;
}
}
2011/2012
F. Mallet - GSE 4
21
Introduction aux objets et à Java
Commentaires: Classe Registre
class Registre {
// bloc de déclaration de classe
/* représente l’état
/
l état du registre */
/
int etat = 0 ;
// les champs sont initialisés par défaut (cf. Type)
/** décale à gauche l'état du registre
* @param poidsFaible nouveau bit de poids faible
*/
void decaleAGauche (int poidsFaible) {
etat = etat << 1 + poidsFaible;
}
/** @return la valeur courante du registre */
int getEtat() {
return etat ;
}
}
2011/2012
F. Mallet - GSE 4
22
Introduction aux objets et à Java
BlueJ - http://www.bluej.org
p
j g
Deakin University
University of Southern Danemark
Kent University
RegistreADecalage reg1;
reg1 = new RegistreADecalage();
classes
références
2011/2012
objets
F. Mallet - GSE 4
23
Introduction aux objets et à Java
Vocabulaire
2011/2012
F. Mallet - GSE 4
24
Téléchargement