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).

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.

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.

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 .

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érialiser l’ensemble des Véhicules dans un fichier vehicules.data.

Produire un fichier jar qui exécutera par défaut la classe Test.