Vous êtes sur la page 1sur 5

Universite Paris Diderot

Licence Informatique

Programmation Orientee Objet


Annee 2008-2009

TD n5
Classes imbriquees, Interfaces

Exercice 1 (Classification)
Considerez les categories suivantes : Nourriture, Boisson, Crepe, Habitation, Soupe,
et MaisonDeMassepain. Choisissez lesquelles seront implementees comme interfaces, et lesquelles comme classes, en justifiant votre choix. O`
u se situeront les methodes suivantes : cuire,
rechauffer, hasSorciere, hasAmandes, getSaveur.
Exercice 2 (Classes imbriquees)
Les exemples suivants sont-ils corrects ? Justifiez.
1. class A {
public int x;
class B {
public int f() {return this.x;}
}
}
2. class A {
class B
}
public
A a
B b
}
}

{
static void main (String[] args) {
= new A();
= new B();

3. class A {
public class B {
private int x=0;
public void f() {
System.out.print(x);
}
}
public static void main (String[] args) {
new A().new B().f();
}
}
4. class A {
static class B {
}
public static void main (String[] args) {
A a = new A();
1

B b = new B();
}
}
5. class A {
private int x=0;
class B {
public int f() {
A a = new A();
return a.x;
}
}
}
6. class A {
class B {
private int x;
}
class C {
public int f() {
B b = new B();
return b.x;
}
}
}
7. class A {
public int f() {
return 42;
}
class B {
}
public static void main (String[] args) {
A a = new A();
B b = a.new B();
System.out.print(b.f());
}
}
Exercice 3 (Interfaces - 1)
Les exemples suivants sont-ils corrects ? Justifiez.
1. interface Vehicule {
public void accelerer ();
public void freiner ();
public boolean hasEssence ();
public int getNombrePassagers ();
}
class Voiture {
2

private int essence;


private int passagers;
public boolean hasEssence() {
return (essence > 0);
}
public int getNombrePassagers() {
return passagers;
}
}
class VoitureQuiBouge extends Voiture implements Vehicule {
public void accelerer () {
System.out.println("Vrooom");
}
public void freiner () {
System.out.println("Skreeee");
}
}
` lexemple ci-dessus, on ajoute
2. A
interface Habitation {
public boolean isMeublee();
public int getNombrePieces ();
}
class CampingCar extends VoitureQuiBouge implements Habitation {
public boolean isMeublee() {
return true;
}
public int getNombrePieces () {
return 1;
}
public static void main (String [] args){
Vehicule v = new CampingCar();
v.accelerer();
}
}

Exercice 4 (Interfaces et classes abstraites)


Dans les exemples ci dessous, quest-ce que vous mettriez `a la place de xxx ? (Il peut sagir dune
chane quelconque.)
1. xxx A {
xxx void hallo() {
System.out.println("Hallo");
}
3

xxx String ciao();


}
xxx B xxx A {
xxx void hallo() {
System.out.println("Hallo World");
}
xxx String ciao(){
return ("ciao");
}
}
2. xxx A {
xxx static void hallo ();
xxx void ciao ();
}
xxx B xxx A {
xxx static void hallo () {
System.out.println("Hallo World");
}
xxx String ciao(){
return ("ciao");
}
}
3. xxx A1 {
xxx void hallo ();
}
xxx A2 {
xxx void ciao ();
}
xxx B xxx A1 xxx A2 {
xxx void hallo () {
System.out.println("Hallo World");
}
xxx String ciao(){
return ("ciao");
}
}
xxx C xxx B {
xxx String ciao(){
return ("ciao amici");
}
}
Exercice 5 (Interfaces - 2)

On veut construire un programme capable dafficher et de deplacer des figures geometriques


colorees et dafficher du texte colore. On aura les classes Figure, Carre, Rectangle et Texte.
1. Chaque classe sera dotee dune methode pour etre affichee (dessinee).
2. Figure a des attributs abscisse et ordonnee, ainsi quune couleur (encodee par un entier),
et une methode pour se deplacer.
3. Carre et Rectangle heritent de Figure, mais ont en plus une ou deux longueur pour les
cotes.
4. Texte a un attribut String, ainsi quune couleur.
Un graphique est un ensemble de figures et de textes
Pour traiter ensemble texte et figures nous decidons dutiliser des interfaces pour decrire
leurs comportements communs.
Apr`es avoir etudie les differences et les points communs entre les classes, decrivez l`a o`
u les
interfaces peuvent etre utiles et precisez les classes qui les implementeront.
Decrivez en detail les classes mentionnees ci-dessus. Decrivez en particulier la methode de la
classe Graphique qui permettra dafficher un tableau dobjets dessinables (ce qui permettra de
bien nous convaincre que la reponse `
a la question precedente est un choix judicieux).