Vous êtes sur la page 1sur 4

Projet JAVA

Exercice 1 :
Vous devez développer pour une chaîne de télévision un logiciel permettant de gérer
la programmation journalière d’émissions télévisuelles. Pour simplifier le problème,
toutes les heures ou les durées des émissions sont représentées par des valeurs
entières (13h, 15h, 22h,…). Une émission peut être de trois types : divertissement,
fiction et reportage. Une émission de type divertissement dure obligatoirement 2
heures, possède un nom et est systématiquement présentée par un animateur. Une
fiction se définit par le nom du film, l’année de sa réalisation, le nom du réalisateur
et s’il s’agit ou non d’une rediffusion. Enfin un reportage est défini par un nom, un
thème (fixé parmi les trois thèmes : information, animalier, culturel) et une durée.
1. Proposer une solution fondée sur les héritages entre classe pour représenter
toutes les émissions possibles. Donner pour chaque classe, la liste de ses
attributs et les paramètres de ses constructeurs.
2. Implanter et tester les classes en instanciant différents objets de votre choix
(avec les constructeurs) pour chacune de celles-ci.

Exercice 2 :
Il s'agit dans cet exercice de permettre la création de points, cercles et cylindres. Pour
cela, on considère qu'un cercle étend la notion de point pour caractériser son rayon.
De même, un cylindre étend la notion de cercle.
1. Vous devez implémenter une classe Forme qui sera la super classe de la
classe Point et donc transitivement des classes Cercle et Cylindre. La classe
Forme comporte 3 méthodes :
Calcul de l'aire de la forme, calcul du volume de la forme et affichage du nom
de la forme, respectivement point, cercle et cylindre pour nos 3 classes.
2. La classe Point est caractérisée par 2 coordonnées réelles : x, y. La classe doit
permettre d'accéder et de modifier ces coordonnées. Elle implémente
également une méthode toString() affichant les coordonnées du point.
3. La classe Cercle étend la classe Point, elle comporte également une valeur
réelle pour son rayon. Vous devez écrire un constructeur pour cette classe
comportant des paramètres pour les coordonnées du centre et le rayon.
De même que pour le point, vous devez proposer une méthode toString()
affichant toutes les informations sur le cercle (coordonnées du centre, valeur
du rayon). Enfin le cercle propose une méthode pour le calcul de l'aire
(3.14158 * rayon * rayon)
4. La classe Cylindre étend la classe Cercle et comporte une valeur réelle
hauteur.

1/2
 Implémenter un get et un set pour la hauteur.
 Implémenter les méthodes aire() et volume() pour le cylindre, respectivement
2*aire du cercle + 2 * 3.14159 * rayon * hauteur et : aire du cercle * hauteur.
 La méthode toString() permet d'obtenir toutes les informations sur le cylindre
: centre du cercle, rayon du cercle et hauteur.

Exercice 3
Une médiathèque contient différents types de médias. Mais quel que soit le média,
celui-ci possède un titre. Quand un média est créé, son titre est donné à la création et
par la suite, il ne change plus.
1. Définissez la classe Media avec un constructeur, un champ titre privé et son
accesseur.
2. On veut attribuer un numéro d’enregistrement unique dès que l’on crée un objet
Media : le premier média créé doit avoir le numéro 0, puis ce numéro s’incrémente de
1 à chaque création de média. Ajoutez les champs nécessaires à la classe Media,
modifiez le constructeur puis ajoutez une méthode getNumero renvoyant le numéro
d’enregistrement du média.
3. Définissez la méthode toString renvoyant la chaîne de caractères constituée du
numéro d’enregistrement et du titre du média.
4. Définissez la méthode plusPetit(int) qui vérifie que le numéro d’enregistrement de
l’instance courante est plus petit qu’un entier donné.

On veut maintenant définir des médias de natures diverses : des livres, des dictionnaires,
et, plus tard, d’autres types de médias (bandes dessinées, dictionnaires bilingues,...).
A chaque livre sont associés, en plus, un auteur et un nombre de pages. Les dictionnaires
ont, eux, pour attributs supplémentaires une langue et un nombre de tomes. On voudrait
pouvoir manipuler tous les articles (livres, dictionnaires, etc.) au travers de la même
représentation : celle de média.
1. Définissez les classes Livre et Dictionnaire étendant la classe Media. Définissez pour
chacune un constructeur permettant d’initialiser toutes ses variables d’instances
respectives.
2. Redéfinissez la méthode toString() dans les classes Livre et Dictionnaire pour qu’elle
renvoie une chaîne de caractères décrivant un livre ou un dictionnaire, en plus de la
description normale d’un média.

Exercice 4
Nous désirons développer un programme pour la gestion (très simplifiée) d'un parc de
véhicules destinés à la location.

2/2
Pour chaque véhicule, il est demandé de renseigner le modèle, l'année d'achat, le prix
d'achat (capable de gérer les centimes), le numéro d'immatriculation et le permis (une
lettre) nécessaire à la conduite de ce véhicule.
Plusieurs types de véhicules sont possibles à la location, certains ayant des
caractéristiques particulières. Ainsi, il est demandé de représenter l'information comme
quoi une voiture dispose ou non d'un autoradio. Pour la location d'un camion, le volume
de stockage possible du camion doit être précisé. Enfin, des autocars peuvent aussi être
loués, et pour ces véhicules il est nécessaire de connaître leur volume (pas forcément
entier) de stockage possible ainsi que le nombre de passagers qu'ils peuvent transporter.
Codage des méthodes
1. Définir un constructeur qui initialise les différents champs de chacune des
classes.
2. Écrire les méthodes ajouterAutoradio() et enleverAutoradio() qui permettent de fixer
la valeur de l'attribut autoradio d'une voiture.
3. Écrire la méthode age() qui retourne l'âge d'un véhicule (en nombre d'années).
L'année actuelle sera écrite dans le code.
4. Écrire la méthode afficherVoiture() qui affiche une chaîne de caractères caractérisant
une voiture.
5. Écrire une méthode peutTransporterVolume(…) qui, à partir d'un volume donné en
paramètre,
6. retourne vrai ou faux selon que le camion peut ou non permettre le transport de ce
volume.
7. Écrire une méthode coutLocation(…) qui calcule le coût quotidien de location d'un
véhicule. Ce coût est calculé comme suit : pour les véhicules de moins d'un an, le coût
de location est le prix d'achat du véhicule / 200, et pour les véhicules plus anciens, le
coût de location est le prix d'achat / 250.
8. Écrire une méthode peutTransporterPassagers(…) dans la classe adéquate qui, à
partir d'un nombre de passagers et d'un volume moyen par passager (représentant les
bagages), retourne vrai ou faux selon que l'autocar peut ou non transporter ces
passagers.
9. Écrire la méthode afficherCamion() qui affiche une chaîne de caractères caractérisant
un camion.
10.Écrire la méthode afficherAutocar() qui affiche une chaîne de caractères
caractérisant un autocar.
Test
1. Écrire/compléter un programme de test créant une (instance de la classe) voiture
Twingo, achetée cette année 10000 €, immatriculée 1234 AZ 49, avec un autoradio et
nécessitant un permis B. Puis afficher la chaîne de caractères représentant la voiture.
Le résultat est il celui escompté ?
2. Créer un camion J9, acheté 20000€ il y a 5 ans, immatriculé 987 BCD 75, utilisable
avec un permis B, et pouvant transporter 25 m³. Afficher sur la sortie standard la chaîne

3/2
de caractères représentant le camion. Afficher si ce camion peut transporter 7 m³, on
utilisera pour cela un appel à la méthode
peutTransporterVolume(…).
3. Afficher le coût de location de la Twingo précédemment créée, ainsi que celui
du camion de type J9.
4. Créer un autocar de type FRI, acheté 90000€ en 2005, immatriculé
4567WX01, nécessitant un permis D, permettant de transporter 53 passagers
et disposant d'une soute à bagages de 3 m³. Affichez si cet autocar peut transporter 40
passagers ayant chacun 0,1 m³ de bagages.

4/2