Você está na página 1de 2

UML-P.

Divoux ASTRO

Astronomie

On voudrait créer un catalogue des objets célestes (étoiles,


planètes,...) situés dans notre galaxie et dans d’autres; chaque objet
céleste est identifié par un code numérique (incrémenté automatiquement à
chaque nouvelle découverte) et possède un nom ; il appartient à une
galaxie (dont on veut connaître le nom, le type (« spirale », « lenticulaire »,
…) et son éloignement en années-lumière.

On distinguera 2 grandes catégories d’objets célestes :


• Les étoiles : elles ont une magnitude (un entier), un âge-lettre (« O », « B », « A » , « F », …) et
souvent, des satellites ;
• Les objets froids (on supposera qu’ils sont toujours satellites de quelque chose, cf ci-dessous) :
On mémorise le rayon moyen de leur orbite (en mkm), leur diamètre (enkm), leur période de
révolution (en jours terrestres) et leur type : Depuis le congrès d’astronomie d’avril 2006, on
distingue :
- Type « Planète » : satellite du Soleil et diamètre >= 6000 km (Ex : Mars)
- Type « Planète naine » : satellite du Soleil et diamètre < 6000 km (Ex : Pluton)
- Type « ExoPlanète » : satellite d’une étoile différente du soleil (Ex : BIG1 satellite de Sirius)
- Type « Lune » : Satellite d’un objet différent d’une étoile (Ex : « notre » Lune, ou « Io » satellite
de Jupiter)
NB1 : Une galaxie ne sera pas considérée ici comme un objet céleste observable
NB2 : Un objet froid est obligatoirement dans la même galaxie que « son » étoile : La Terre et la Lune
sont dans la même galaxie que le soleil !

ANALYSE
Faites le DCA (création d’un package « packAstro ») et placez entre autres les informations
suivantes :
• getType() : renvoie le type d’un objet céleste quelconque « Etoile » , « ExoPlanète»,
« Lune »…
• getObjet(num) : renvoie l’objet céleste de code « num »
• getGalaxie() : renvoie la Galaxie d'appartenance d'un objet céleste (cf NB2)
• getGalaxie(nom) : renvoie la Galaxie possédant ce nom
• getTtesGalaxies() : Renvoie toutes les galaxies répertoriées
• getObjets(g :Galaxie) : Liste de tous les objets connus de la galaxie g
• getCentre() : renvoie l’étoile ou la planète autour de laquelle le satellite orbite
• nbDeSatellites() et getSatellites() : évident, renvoient éventuellement 0 et vide
• ListeEtoiles() : liste toutes les étoiles connues d’une galaxie
• nbDetoiles() : renvoie le nombre total d’étoiles répertoriées
• theBigOne() : renvoie le plus gros (en diamètre) objet froid de l’univers

CONCEPTION
Faites les choix de conception (orientation des relations, gestion d’instances, migration…), aboutissant
au DCC.
Ajoutez les méthodes toString() nécessaires pour afficher par exemple :
1 - « Soleil » : Etoile ; galaxie : voie-lactée ; age : F ; 9 satellites
2 - « Terre » : Planète ; galaxie : voie-lactée ; diam : 13000, gravite autour de Soleil à
150000mkm ; 1 satellite
65 - « Io » :Lune ; galaxie : voie-lactée ; diam : 5000; gravite autour de Jupiter à 421 mkm
127 - « Vulcain» : Etoile ; galaxie : M31 ; age : B

Ajoutez les méthodes de création pour chaque Classe


• creerGalaxie(nom, type, eloignement)
• creerEtoile(nom, magnitude, age-lettre, galaxie)
• creerObjetFroid(nom, rayonOrbite, diametre, periode, centreOrbite) : on ne précise pas sa galaxie
puisque c’est obligatoirement la même que celle de son centreOrbite (cf NB2 ci-dessus)
NB : Toutes les valeurs numériques sont entières ;

Placez les constructeurs.


Minipro 2010-11 01/10/10
UML-P. Divoux ASTRO

PROGRAMMATION

Saisissez le code java des méthodes, générez les classes Java, complétez par un main et qui
propose l'interface caractère ci-dessous et implémente le petit jeu d’essai fourni.

IHM : interface caractère (respectez cette numérotation )

0. Initialiser le système avec le jeu d’essai ci-dessous


1. Afficher les caractéristiques (cf toString) de l’objet N° x
2. Lister toutes les galaxies : nom, type, eloignement
3. Lister tous les objets connus de la galaxie de nom « X » avec leurs caractéristiques (cf
toString)
4. Lister les satellites de l’objet (étoile, planète,…) N°X
5. Afficher le nombre total d’étoiles répertoriées dans l’univers
6. Afficher les caractéristiques du plus gros objet froid
7. Ajouter une nouvelle étoile
8. Ajouter un nouvel objet froid (à une étoile ou à un objet froid)
9. Ajouter une galaxie (nom, type, eloign)
10. Quitter

JEU D’ESSAI à exécuter dans cet ordre pour respecter les numéros identifiants et sans changer les valeurs (même pour
en mettre des correctes !)

Galaxie : « VoieLactée » ; type « spirale » ; eloignement : 0


Etoile : 1- Soleil ; magnitude 0 ; age F ; Satellites :
2-Terre ; orbite150000 ; diam 13000 ; periode 365
3-Lune ; orbite 200 ; diam 5000 ; periode 30
4-Mars ; orbite 200000 ; diam 11000 ; periode 750
5-Phobos ; orbite 150 ; diam 500 ; periode 40
6-Pluton ; orbite 1200000 ; diam 4000 ; periode 900
Etoile : 7- Sirius ; magnitude 2 ; age B ; Satellites :
8-BIG1 ; orbite1000 ; diam 50 000 ; periode 333

Galaxie : « M31» ; type « lenticulaire » ; eloignement : 900000


Etoile : 9- XS67 ; magnitude 8 ; age F ; Satellites :
10-XP88 ; orbite160000 ; diam 40 000 ; periode 400

JEU DE TEST pour vérifier la correction de votre programme :

0  rien (initialise le jeu d’essai)


1 (3)  3-Lune lune ; galaxie : voie-lactée ; gravite autour de la Terre à 200 mkm
2  (Voie Lactée, spirale, eloignement 0 ) ; (M31, lenticulaire, eloignement 900 000)
3 (M31)  9-étoile XS67 et 10- exoplanète XP88
3(voie lactée)  les 8 objets de 1 à 8 ci-dessus
4 (Soleil)  Terre, Mars, Pluton
4 (Mars)  Phobos
5 3
6  8-exoPlanète BIG1 ; galaxie :voie lactée ; gravite autour de Sirius à 1000 mkm
7(Antares, 3, M, voie lactée)  N°11, étoile
8(Biggest, 200000, 60 000 , 550, Antares)  N°12, exoplanète
8 (biglune, 500, 3000, 45, Biggest)  N°13, lune
3 (voie lactée)  objets de 1 à 8 et de 11 à 13
5 4
6  12-exoPlanète Biggest ; galaxie :voie lactée ; gravite autour de Antares à
200000mkm

Minipro 2010-11 01/10/10