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.
public class Baleine implements Mammifere{
private int poids;
private EspeceBaleines espece;
public Baleine(EspeceBaleines espece, int poids) {
this.espece = espece;
this.poids = poids;
}
public int getNbPattes() {
return 0;
}
public boolean estMarin() {
return false;
}
public EspeceBaleines getEspece() {
return this.espece;
}
public int getPoids() {
return this.poids;
}
}
Exercice 3 : On consid`ere la classe Zoo, sp´ecialis´e dans les mammif`eres, dont le diagramme de classe est :
Zoo
- mesMammiferes : Mammifere[]
- nbMammiferes : int
+ Zoo(capacite : int)
+ compteLesPattes() : int
+ ajouteMammifere(Mammifere m) : boolean
+ getNbMammiferes() : int
+ getMammifere(index : int)
capacite dans le constructeur permet de fixer le nombre de mammif`eres que le zoo peut accueillir au maximum.
nbMammiferes correspond au nombre de mammif`eres effectivement pr´esents dans le zoo. mesMammiferes
contient les mammif`eres pr´esents dans le zoo. ajouteMammifere permet d’ajouter un mammif`ere au zoo et
renvoie false si cet ajout est impossible.
Q 1 . Donnez le code du constructeur de la classe Zoo.
Correction.
public Zoo(int capacite) {
this.nbMammiferes = 0;
this.mesMammiferes = new Mammifere[capacite];
}
Q 2 . Ecrivez la m´ethode compteLesPattes qui retourne le nombre total de pattes pour l’ensemble des
mammif`eres pr´esents dans le zoo.
Correction.
public int compteLesPattes() {
int result = 0;
for(int i = 0 ; i < this.nbMammiferes;i++) {
result = result + this.mesMammiferes[i].getNbPattes();
}
return result;
}
Q 3 . Donnez les lignes de code Java permettant
1. de cr´eer un zoo pouvant accueillir 10 mammif`eres,
2. de cr´eer un lapin de nom roger et d’ˆage 2,
3. d’ajouter ce lapin au zoo,
4. de cr´eer une baleine `a bosses de poids 800,
5. d’ajouter cette baleine au zoo,
6. d’afficher le nombre de pattes poss´ed´ees par les animaux du zoo.
Correction.
1. Zoo z = new Zoo(10);
2. Lapin l = new Lapin("roger",2);
3. z.ajouteMammifere(l);
4. Baleine b = new Baleine(EspeceBaleine.BALEINE A BOSSES,800);
5. z.ajouteMammifere(b);
6. System.out.println(z.compteLesPattes());
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !