Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Le constructeur Parking initialise le nombre de place occupé dans le parking à 0, définit le nombre
de place dans le parking et rempli le tableau park avec des valeurs « true » autrement dit que toutes
les places du parking sont libres à l’initialisation (si la valeur du tableau correspond à « false » cela
correspond à une place occupée).
Nous avons choisi de créer un attribut nbPlaceOccupe qui permet de gérer le nombre de places
occupées. De ce fait, la méthode int nombreDePlaceLibre() devient un accesseur.
Nous avons surchargé la méthode @Override public String toString() qui permet d’afficher
les différentes informations concernant l’objet parking. Dans cette méthode, nous avons définis un
StringBuilder qui permet une meilleure concaténation des chaines de caractères. En effet,
contrairement à la concaténation des Strings qui créer à chaque fois un nouveau objet String,
StringBuilder utilise le même objet lors des concaténations.
II. Zoo
1. Interface Animaux
Le but de cet exercice est de définir une hiérarchie de classe pour représenter des animaux. Parmi
ces animaux, il y a des mammifères (félins et singes) et des serpents. Nous avons pensé à créer une
interface Animaux car tous ces êtres vivants sont des animaux et qu’ils possèdent un minimum de
caractéristiques communes. Ces caractéristiques communes se décrivent comme des méthodes
définis dans l’interface Animaux :
De ce fait, les classes Félin et Singe sont des classes qui héritent des méthodes de la classe abstraite
Mammifere autrement dit des mammifères. On définit donc dans la classe Mammifère toutes les
méthodes qu’utiliserons les classes félin et singe. Tous les mammifères possèdent:
protected final String alimentation;
protected double poids;
protected final boolean dangerosite;
protected final String nom;
protected final String type;
protected boolean espece_protected;
C’est pourquoi ces attributs sont définis dans la classe Mammifères car ils seront utilisés par toutes
les sous classes de Mammifere et ces attributs sont du type protected pour que les sous classes
aient accès à ces attributs. De plus, par convention nous avons décidé que le poids et une espèce
protégée pouvaient être des valeurs modifiables.
Nous avons définis un constructeur dans la classe abstraite Mammifere cependant, il ne sera jamais
instancié, il sert uniquement à alléger le code des sous classes en utilisant super. Cela permet de
renseigner les champs d’un mammifère qui sont toujours vrais pour les félins et les singes.
Nous avons aussi définis des accesseurs qui seront utilisés pour la class Zoo.
Le nombre de membre de cette classe est important mais par la suite, on se rend compte que les
sous classes de mammifère sont beaucoup plus allégés.
La classe Serpent est identique à la classe Mammifere cependant, l’intérêt que nous ne voyons pas
dans ce TP est qu’on pourrait créer des différences entre ces deux types d’animaux.
Une spécificité est demandée dans le TP qui est d’afficher ESPECE_PROTEGEE pour le boa. Cette
spécificité sera donc traitée par la méthode toString de la classe Boa.
6. La méthode getMaxWeight
Cette méthode est propre à chaque animal, elle est donc définie dans les classes Felin, Singe et Boa.
Nous avons eu deux possibilités pour implanter cette méthode :
- On aurait pu créer cette méthode en méthode de classe, autrement dit que cette méthode
appartient à la classe et pas à l’objet.
- Nous avons créé un membre static et final qui stocke la valeur du poids maximal
d’un type d’animal. Puis nous avons créé un accesseur pour obtenir cette valeur.
7. Le Zoo
La classe Zoo doit permettre de contenir un ensemble d’animaux sans limite de nombre, c’est
pourquoi nous avons décidé de créer un attribut du type ArrayList car il permet de définir un
tableau de taille indéterminé.
Nous avons donc créé un constructeur qui initialise une ArrayList.
Une fonction qui permet d’ajouter un Animal dans l’ArrayList. Nous avons défini l’ArrayList avec
le code générique Animal car l’interface Animal est implémenter par tous les mammifères et les
serpents.
8. La méthode getShortListing
Pour ordonner cette liste, il faut faire appeler à la méthode sort de la classe Collections qui permet
de trier des tableaux. Pour cela, il faut redéfinir la méthode public int compare(Animal a1,
Animal a2) en utilisant l’interface Comparator. Après avoir redéfinit cette méthode, on peut
ordonner l’ArrayList suivant le nom des Animaux puis afficher la liste des animaux dans le zoo trié
suivant leur nom.
Nous allons parcourir l’ArrayList contenant les animaux, et à chaque fois nous allons déléguer le
travail à la méthode getCleaningTime de la classe Mammifère ou Serpent.
La méthode getCleaningTime de la classe Zoo va comptabiliser le total de temps renvoyé par
chaque appel à la fonction getCleaningTime des classes Mammifère ou Serpent.
Dans ces dernières le temps est calculé en regardant si les membres « dangerosité » et
« espece_protected » sont « true » ou non, ainsi qu’en regardant le poids de l’animal en question.
Il s’agit maintenant de regrouper les informations d’approvisionnement suivant leur type, comme
par exemple les kilos de canard, les bananes, etc.
Nous avons donc créé une variable pour chaque type de nourriture, en parcourant la ArrayList
contenant les animaux, ces valeurs sont incrémentées suivants le poids de l’animal. Pour savoir le
type de l’animal, nous n’avons pas utilisé la méthode getClass, mais une méthode getType que nous
avons implémenté en supplément.
Une fois la liste des animaux du Zoo parcouru, il ne reste plus qu’à afficher les types de nourritures
requis, précédé du coefficient.
Nous avons encore une fois de plus stocké la chaîne de caractère à retourner dans un StringBuilder.