D14 - Contrôle continu de Java
Important : Lisez tout avant de commencer, il est fortement recommandé de faire un diagramme de classes simple avant de programmer. La seule documentation accessible comprend : la javadoc, vos TP, et les supports.
Tout le code sera commenté brièvement et exécutable via un script ant.
A la fin du TP, le projet complet placé dans une archive nommée votrelogin.zip sera envoyé par mail à bruno@univ-tln.fr avec comme sujet D14
On souhaite représenter dans une même application des véhicules qui ont un nom et un identifiant par défaut de la forme “Vehicule<nombre>”. Il y aura des véhicules motorisés (ils ont une méthode getPuissance()
) et des véhicules volants (getAltitudeMax()
). Plus précisément, il y aura des avions (qui sont motorisés et volants), des planeurs (uniquement volants), des voitures (uniquement motorisées).
Java de base
Proposer une implantation complètes des voitures et des planeurs. Vous porterez attention aux constructeurs, aux
accesseurs/modificateurs, à la visibilité des méthodes et attributs. Les méthodes toString()
, hashcode()
et equals()
devront être redéfinies ou surchargée. Ne programmez pas les avions. .
Créer une classe Test
qui instancie un ensemble (matérialisé par un TreeSet
, si vous n’y arrivez pas utilisez un HashSet
) de véhicules : les voiture v1 et v2 et le planeur p1 et p2. Afficher le nom de tous les véhicules en utilisant un Itérateur sur cet ensemble.
Génération des identifiants
Implanter la génération automatique des identifiants des véhicules en fonction de l’ordre de leur création (vous utilisez une méthode String getNextID()
).
Comment-faire pour que les voitures aient un identifiant de la forme (“Voiture<nombre>”) ? Programmez le.
Les avions
Un avion est à la fois un véhicule motorisé et volant proposer une solution utilisant la délégation par agrégation pour représenter les avions sans dupliquer le code nécessaire pour gérer la puissance et l’altitude. Inutile de modifier les classes Planeur et Voiture, ajouter seulement ce qu’il faut pour les avions .
Version militaire
On veut aussi considérer des voitures militaires et des bunker militaires (qui ne sont pas des véhicules) mais qui partagent une méthode getBlindage()
. Proposer une implantation.
Sérialisation
Sérialiser l’ensemble des Véhicules dans un fichier vehicules.data
.
Distribution
Produire un fichier jar qui exécutera par défaut la classe Test
.