Académique Documents
Professionnel Documents
Culture Documents
Achref El Mouelhi
elmouelhi.achref@gmail.com
1 Classe interne
2 Classe locale
Java
I
c
Classe interne ?
ELH
O U
Une classe définie à l’intérieur d’une autre
L M
f E et méthodes de la classe
Pouvant accéder aux attributs
r e
englobante
A ch
c
Java
Considérant la classe Personne suivante
package org.eclipse.model;
this.age = age;
}
// + getters et setters
}
Java
Hypothèse
I c
majoriteSexuelle : acceptant les valeurs majeur et mineur
H
EL adolescent, et
periode : acceptant les valeurs bébé,U
MO
enfant,
adulte
fE L
c h r e
c
A
Java
Hypothèse
I c
majoriteSexuelle : acceptant les valeurs majeur et mineur
H
EL adolescent, et
periode : acceptant les valeurs bébé,U
MO
enfant,
adulte
fE L
Remarques c h r e
c A
Les deux propriétés dépendent de l’attribut age
On peut donc les regrouper ensemble dans une nouvelle classe
Cette nouvelle classe doit être placée dans Personne pour
qu’elle ait accès à l’attribut age
}
}
@Override
public String toString() {
return "Categorie [majoriteSexuelle = " + majoriteSexuelle + ",
periode = " + periode + "]";
}
}
c
c A
// + getters et setters
@Override
public String toString() {
return "Personne [nom = " + nom + ", prenom = " + prenom + ", age =
" + age + ", categorie = " + categorie + "]";
}
Java
Pour tester
package org.eclipse.test;
Java
Pour tester
package org.eclipse.test;
Java
Remarques
I c
Le premier : Personne
LH
Le deuxième : Personne$CategorieUE
L MO
h r e fE
A c
c
Java
Remarques
I c
Le premier : Personne
LH
Le deuxième : Personne$CategorieUE
L MO
h r e fE
Attention
A c
c
l’age, les valeurs de periode et majoriteSexuelle
En changeant
ne seront pas mises à jour.
Java
Remarques
I c
Le premier : Personne
LH
Le deuxième : Personne$CategorieUE
L MO
h r e fE
Attention
A c
c
l’age, les valeurs de periode et majoriteSexuelle
En changeant
ne seront pas mises à jour.
Solution
Utiliser les classes locales.
Avril 2018, H & H: Research and Training 9 / 15
Classe locale
Java
Classe locale ?
I c
EL H
Une classe définie dans une méthode d’une autre
Pouvant accéder aux attributs etM
U
O de la classe
méthodes
englobante
fE L
h r e
caccéder aux paramètres de la méthode où elle est
c
définie
A
Pouvant aussi
Java
Considérant la classe Personne suivante
package org.eclipse.model;
this.age = age;
}
// + getters et setters
}
Java
Hypothèse
Nous allons garder les attributs de la classe Categorie
majoriteSexuelle : acceptant les mêmes valeurs majeur et
mineur I c
H
EL bébé, enfant,
periode : acceptant aussi les mêmesU
MO
valeurs
adolescent, et adulte
fE L
c h r e
c
A
Java
Hypothèse
Nous allons garder les attributs de la classe Categorie
majoriteSexuelle : acceptant les mêmes valeurs majeur et
mineur I c
H
EL bébé, enfant,
periode : acceptant aussi les mêmesU
MO
valeurs
adolescent, et adulte
fE L
c h r e
c A
Remarques
Java
La méthode afficherDetails() qu’on va ajouter dans Personne
public Categorie() {
if (age >= 18) {
I c
majoriteSexuelle = "majeur";
periode = "adulte";
ELH
} else {
U
MO
majoriteSexuelle = "mineur";
L
if (age < 2)
periode = "bébé";
f E
hre
else if(age < 12)
periode = "enfant";
else
c
c A
periode = "adolescent";
}
}
@Override
public String toString() {
return "majoriteSexuelle=" + majoriteSexuelle + ", periode=" + periode;
}
}
Java
Pour tester
package org.eclipse.test;
Java
Pour tester
package org.eclipse.test;
Java
Remarques
I c
H
À la compilation deux fichiers, relatifs à la classe Personne, ont été
EL
générés (d’extension .class) U
L MO
Le premier : Personne
re f E
Le deuxième : c
A h
Personne$1Categorie ⇒ 1 étant l’indice de la
classe
c (les classes locales seront numérotées dans l’ordre
locale
et la première aura l’indice 1)