0% ont trouvé ce document utile (0 vote)
7 vues2 pages

Création de packages en astrophysique

Transféré par

ratovolova
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues2 pages

Création de packages en astrophysique

Transféré par

ratovolova
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

//

// Vous allez créer un premier niveau de package conforme aux règles


édictées par les concepteurs du langage, à savoir le nom de domaine de notre
compagnie inversé. Nous choisirons :
//
// [Link]
// Puis nous ajouterons un sous-package désignant le projet conforme aux
pratiques communément admises :
//
// decouverte
// HelloUniverse se trouvera à ce niveau.
//
// Créer un sous-package de decouverte nommé objetsastro qui regroupera
les classes qui font référence à des objets en astrophysique, accompagnés des
classes et interfaces associés :
//
// Planete
// PlaneteTellurique
// PlaneteGazeuse
// Habitable
// Galaxie
// Atmosphere
// Créer un sous-package de decouverte nommé enginsspatiaux qui regroupera
les classes qui font référence aux vaisseaux et leurs concepts associés :
//
// TypeVaisseau
// Vaisseau
// VaisseauCivil
// VaisseauDeGuerre
// Vous remarquerez que désormais, la code ne compile plus et plusieurs
classes apparaissent en erreur.
//
// Ajouter le mot clé public devant toute propriété ou méthode qui requiert
un accès à partir d'une classe d'un autre package.
//
// Ajouter également tous les imports suggérés
//

/// imports statiques

//
// Les différents types de Vaisseaux seront importés statiquement. Je vous
laisse le soin cependant de juger s'ils sont utilisés de manière intensive ou pas.
//
// Supprimez dans le code toute référence à la classe TypeVaisseau hormis
au niveau des imports.

// Visibilité et modificateur d'acces

// La valeur de la propriététonnageActuel est modifiée lors de l'ajout de


cargaison. Il pourrait être dangereux de laisser à une autre classe la possibilité
de modifier cette propriété sans passer par la méthode emporterCargaison . En
effet, la méthode vérifie avant toute chose que la nouvelle cargaison peut être
emportée ! Modifiez la visibilité de la propriété en protected afin que seul
Vaisseau et ses héritants puissent accéder à cette propriété.
//
// La méthode desactiverArmes a vocation à passer à true la valeur de la
propriété armesDesactivees de l'objet courant. Ajouter une méthode activerArmes
pour repasser la valeur de la propriété à false . Il semblerait étrange de modifier
la propriété sans passer par ses méthodes. Nous allons modifier la visibilité de la
propriété à private .

// final

// Les méthodes qui nous ont permis de connaître le nombre de rotations ou


de révolutions des planètes sont immuables. Rien ne pourra modifier la méthode de
calcul.
//
// Par ailleurs, étant donnés le nom et l'objectif de ces méthodes, on ne
voit pas très bien ce qu'elles pourraient faire de plus.
//
// Même s'il n'est pas exclu qu'une classe héritant de Planete ait
un intérêt dans la réécriture de ces méthodes, il paraît plus intéressant de les
rendre immuables afin d'empêcher l'altération de la formule de calcul. Vous allez
donc déclarer ces 2 méthodes final .
//
// On voit mal également comment un Vaisseau pourrait changer de type.
Déclarer la propriété final. Vous allez devoir attribuer une valeur à la
construction, ce que nous faisons déjà au niveau des héritants, mais ceux-ci
devront faire explicitement appel à un constructeur parent prenant le même
argument. Ajoutez donc à Vaisseau un constructeur qui prenne en paramètre le type
du vaisseau et adaptez les héritants.

/////// Exception

// Jusqu'à présent nous avons considéré qu'il était possible de charger


partiellement une cargaison.
//
// Nous allons maintenant interdire ceci. Une cargaison trop importante sera
désormais intégralement refusée et la méthode devra rejeter une Exception que nous
appellerons DepassementTonnageException dans le package
[Link] .
//
// Cette exception disposera d'un attribut tonnageEnExces (int )
ainsi qu'un seul et unique constructeur qui :
//
// Prendra en argument tonnageEnExces
// Valorisera le message d'erreur : La cargaison ne peut être chargée car
elle présente un excès de X
// Dans le cas ou cette exception survient, vous aurez alors à traiter 2 cas
de figure. Demandez alors à l'utilisateur :
//
// s'il souhaite emporter une cargaison partielle à hauteur de la place
disponible dans le vaisseau, ou
// s'il souhaite annuler l'opération.

Vous aimerez peut-être aussi