USTL Licence Informatique 2006–2007
UE Programmation Orient´
ee Objet
Devoir Surveill´
e
1 heure 1
4- documents ´ecrits autoris´es
jeudi 22 mars 2007
Pr´ecisez votre num´ero de groupe sur votre copie.
Les interfaces suivantes sont donn´ees :
_____FICHIER Herbivore.java
package animal;
import plante.Plante;
public interface Herbivore {
public void mange(Plante p);
}
_____FICHIER Mammifere.java
package animal;
public interface Mammifere {
/** @return le nombre de pattes du mammifere
*/
public int getNbPattes();
/** @return vrai ssi le mammifere est un mammifere marin
*/
public boolean estMarin();
}
Exercice 1 : On consid`ere le code suivant :
______FICHIER Lapin.java
package animal;
public class Lapin implements Herbivore, Mammifere {
private String nom;
private int age;
// tous les lapins partagent le mˆ
eme clapier
public static final Clapier leClapier = new Clapier();
public Lapin(String nom, int age) { ... }
...
}
R´epondez concis´ement mais pr´ecis´ement aux questions suivantes :
Q 1 . Si tab est un tableau de lapins, comment peut on obtenir sa dimension ?
Correction.tab.length
Q 2 . Quels sont tous les types que peuvent prendre les r´ef´erences qui peuvent ˆetre initialis´ees par une instance
de la classe Lapin ?
Correction.Object,Lapin,Herbivore,Mammifere
Q 3 . Quelles d´efinitions contient au minimum et `
a coup sˆur le corps de la classe Lapin ?
Correction.la m´
ethode de Herbivore et les 2 m´
ethodes de Mammifere
Q 4 . Comment fait on r´ef´erence depuis une classe Ferme du paquetage ferme `a l’attribut leClapier de la
classe Lapin ?
Correction.Lapin.leClapier, apr`
es avoir import´
eanimal, sinon animal.Lapin.leClapier
Q 5 . Comment fait on r´ef´erence depuis une classe Ferme du paquetage ferme `a l’attribut nom de la classe
Lapin ?
Correction.On ne peut pas car nom est priv´
e
Q 6 . Quelle commande permet de g´en´erer la documentation du paquetage animal ?
Correction.depuis le r´
epertoire de sourcejavadoc animal -d ../docs
Q 7 . Que manque-t-il `a la classe Lapin si l’entˆete de la classe Clapier est :
package ferme;
import java.util.*;
public class Clapier {... }
Correction.il manque import ferme.*ou import ferme.Clapier
Q 8 . Deux lapins sont dits ´egaux si ils ont mˆeme nom (attribut nom) et mˆeme ˆage (attribut age), donnez le
code java de la m´ethode equals, de signature habituelle, pour cette classe.
Correction.
public boolean equals(Object o) {
if (o instanceof Lapin) {
Lapin lAutre = (Lapin) o;
return this.nom.equals(lAutre.nom) && this.age == lAutre.age;
}
else {
return false;
}
}
Exercice 2 : On s’int´eresse dans cet exercice aux baleines qui sont, comme chacun le sait, des mammif`eres
marins.
Q 1 . On ne s’int´eresse qu’`a certaines esp`eces de baleines. On va identifier ces esp`eces grˆace au type EspeceBaleines
dont les seules valeurs peuvent ˆetre BALEINE BLEUE,RORQUAL et BALEINE A BOSSES.
Donnez le code java du type EspeceBaleines.
Correction.C’est un type ´
enum´
er´
e.
public class EspeceBaleines {
private String nom;
private EspeceBaleines(String nom) {
this.nom = nom;
}
public static final EspeceBaleines BALEINE BLEUE = new EspeceBaleines("Baleine bleue");
public static final EspeceBaleines RORQUAL = new EspeceBaleines("Rorqual");
public static final EspeceBaleines BALEINE A BOSSES = new EspeceBaleines("Baleine `a bosses");
public String toString() {
return this.nom;
}
}
Q 2 . La classe Baleine impl´emente l’interface Mammifere et appartient au paquetage animal. Un objet
Baleine est caract´eris´e par son esp`ece et son poids. Ces informations sont fournies `a la construction. On
dispose ´egalement des accesseurs associ´es.
Q 2.1. Donnez le diagramme de classe de Baleine.
Correction.
animal::Baleine
- espece : EspeceBaleines
- poids : int
+ Baleine(espece : EspeceBaleines, poids : int)
+ getNbPattes() : int
+ estMarin() : boolean
+ getEspece() : EspeceBaleines
+ getPoids() : int
Q 2.2. Donnez le code java de cette classe.
Correction.