Enseignement > Programmation orientée objet > Java > Sujets d'examens et corrigés > Contrôle 2017  

Controle de programmation orientée objet (mise à niveau)

Lundi 25 septembre 2017 - durée : 4 heures 

2 points seront accordés à la lisibilité du code.

Au cours de cet exercice, on cherche à écrire plusieurs classes pour manipuler des données géographiques. Ces classes seront regroupées dans un paquetage geographie.

1. Coordonnées géographiques

Pour repérer un point à la surface de la Terre, on utilise un système de 3 coordonnées appelées latitude, longitude et altitude.

Ecrire une classe Coordonnees permettant de modéliser un point de la surface terrestre, sous la forme de ces trois valeurs ; latitude et longitude seront mesurées en degrés décimaux, altitude sera mesuré en mètres.
Ecrire un contructeur pour cette classe et encapsculer les valeurs de manière à ce qu'on ne puisse pas modifier les coordonnées d'un point après sa création.

Redéfinir
* la méthode ToString() pour permettre d'afficher les coordonnées d'un point
* la methode equals(Object o) : 2 points sont égaux si leurs coordonnées sont égales

2. Lieu géographique

Un lieu est un point qui a un nom.
Ecrire une classe Lieu utilisant la classe Coordonnees. Ecrire un constructeur, encapsuler les paramètres et redéfinir les méthodes ToString et equals.

3. Ville

Une ville possède un nom et un lieu remarquable, appelé Mairie. Une ville est également caractérisée par sa population.
Exemple : Paris, Hôtel de Ville de Paris (latitude : 48.85341°, longitude : 2.3488°, altitude : 42m), population : 2 244 000 habitants,  
Ecrire une classe Ville qui sera définie avec ces 3 caractéristiques. Ecrire un constructeur, redéfinir les méthodes ToString et equals. Justifier le choix de votre critère d'égalité dans le commentaire de la méthode equals.

4. Capitale

Une capitale est une ville qui possède un autre lieu remarquable, appelé Palais.
Ecrire une classe Capitale. Ecrire un constructeur, et redéfinir les méthodes ToString et equals.

5. Devise (monnaie)

Une devise est la monnaie d'un pays. Elle est caractérisée par son nom et par un code de 3 lettres.
Ecrire une classe Monnaie. Ecrire un constructeur, et redéfinir les méthodes ToString et equals.

6. Pays

Un pays est caractérisé par sa capitale, sa devise, sa superficie, sa population et une ou plusieurs langues officielles.
Ecrire une classe abstraite Pays. Ecrire un constructeur, et redéfinir les méthodes ToString et equals.
Vérifier, lors de la création, que la population du pays est supérieure à la population de la capitale, sinon lever une exception.
Ecrire une méthode densitePopulation().
Ecrire une méthode abstraite getChefEtat() qui permet de connaitre le dirigeant du pays.
La classe Pays implémentera l'interface Comparable. On comparera les pays selon leur population.

7. République

Une république est un pays qui est dirigée par un président de la République.
Ecrire une classe République. Ecrire un constructeur, et redéfinir les méthodes ToString et equals.

8. Monarchie

Une monarchie est un pays qui est dirigée par un monarque.
Ecrire une classe Monarchie. Ecrire un constructeur, et redéfinir les méthodes ToString et equals.

9. Programme principal

Ecrire un programme qui crée les 2 pays suivants :

France
superficie : 672 369 km2
population : 67 595 000 habitants
langue officielle : le français
devise : l'Euro (EUR)
présidée par Emmanuel Macron
Capitale Paris, population : 2 244 000 habitants
Hôtel de Ville de Paris (latitude : 48.85341°, longitude : 2.3488°, altitude : 42m)
Palais de l'Elysée (latitude : 48.8669°, longitude : 2.344°, altitude : 44m)

 

Belgique
superficie : 30 528 km2
population : 11 356 000 habitants
langues officielles : le français, le néerlandais et l'allemand
devise : l'Euro (EUR)
Roi : Philippe de Belgique
Capitale Bruxelles, population : 1 181 000 habitants
Hôtel de Ville de Bruxelles (latitude : 50.8433°, longitude : 4.3794°, altitude : 62m)
Palais royal de Bruxelles (latitude : 50.8388°, longitude : 4.3899 °, altitude : 63m)

 

NB : ces 2 pays ont la même monnaie