Aller au contenu principal

🧪 Labo 10.1A – Classes Planète et Satellite


danger

Ce laboratoire doit être développé à l'aide du logiciel Git. Vous devrez créer un nouveau dépôt dans GitHub et inviter votre professeur en tant que collaborateur.

Voici le format du dépôt exigé: H26-2P6-Integration-MATRICULE

Il devrait y avoir un commit pour chaque exercice.


Exercice 1 – Implémentation des classes Planete & Satellite

🎯 Objectif

L’objectif de cet exercice est d'implémenter des classes et une énumération à l'aide des diagrammes et descriptions de classes fournis. Vous aurez à manipuler :

  • des champs
  • des propriétés (incluant des propriétés de navigation, des propriétés calculées et des propriétés automatiques)
  • des constructeurs
  • des méthodes
  • une énumération
  • des exceptions

🛠️ Instructions

Commençez par créer un nouveau projet d’application console. Dans la même solution, ajoutez une bibliothèque de classe. À l’aide des diagrammes de classes suivants, implémentez les classes Planete et Satellite, ainsi que l’énumération TypePlanete. Placez-les dans votre bibliothèque de classe.

Diagrammes de classes

Diagrammes de classes

Diagrammes de classes

Classe Planete

Attributs

La classe doit contenir les attributs privés suivants :

  • m_nom : nom de la planète, sous forme de chaîne de caractères.
  • m_masse : masse de la planète, sous forme de nombre décimal.

Ces attributs doivent être accessibles en lecture et en écriture à l’aide de propriétés publiques. L’accès en écriture doit être restreinte aux limites de la classe.

Propriétés

Nom

Représente le nom de la planète.

Validation à faire :
  • Si la valeur reçue est null, vide ou constituée uniquement d’espaces, vous devez lever une exception :
ArgumentException

Masse

Représente la masse de la planète.

Validation à faire :
  • Si la valeur reçue est inférieure ou égal à 0, vous devez lever une exception :
ArgumentException

Type : propriété automatique

Satellites : propriété (automatique) de navigation

NombreDeSatellites : propriété calculée

Retourne le nombre de satellites associés à la planète.

Constructeur

Implémentez le constructeur suivant :

public Planete(string nom, double masse, TypePlanete type)

Ce constructeur initialise une nouvelle planète à partir des informations fournies.

Méthodes

SatelliteEstDejaDansLaListe(string nom)

Parcourt la liste des satellites de la planète afin de vérifier si un satellite portant ce nom est déjà présent.

Retourne true si le satellite existe déjà, sinon false.

AjouterSatellite(Satellite satellite)

Ajoute un objet Satellite à la liste de satellites.

Validations à faire :
  • Si l’objet à ajouter est null, vous devez lever l’exception :
ArgumentNullException
  • Si un satellite du même nom que celui qu'on tente d'ajouter existe déjà, vous devez lever l’exception :
InvalidOperationException

ToString()

Retourne une chaîne de caractères indiquant le nom, le type, la masse et le nombre de satellites de la planète.


Classe Satellite

Attributs

La classe doit contenir les attributs privés suivants :

  • m_nom : nom du satellite, sous forme de chaîne de caractères.
  • m_masse : masse du satellite, sous forme de nombre décimal.

Ces attributs doivent être accessibles en lecture et en écriture à l’aide de propriétés publiques. L’accès en écriture doit être restreinte aux limites de la classe.

Propriétés

Nom

Représente le nom du satellite.

Validation à faire :
  • Si la valeur reçue est null, vide ou constituée uniquement d’espaces, vous devez lever une exception :
ArgumentException

Masse

Représente la masse du satellite.

Validation à faire :
  • Si la valeur reçue est inférieure ou égal à 0, vous devez lever une exception :
ArgumentException

Constructeur

Implémentez le constructeur suivant :

public Satellite(string nom, double masse)

Ce constructeur initialise un nouveau satellite à partir des informations fournies.

Méthodes

ToString()

Retourne une chaîne de caractères indiquant le nom et la masse du satellite.


Exercice 2 – Relation entre les classes Planete et Satellite

🎯 Objectif

L’objectif de cet exercice est d'illustrer adéquatement une relation entre deux classes.

🛠️ Instructions

D’après les informations fournies à l’exercice précédent, illustrez la relation entre les classes Planete et Satellite. Expliquez vos choix concernant 1) la direction et 2) la cardinalité de cette relation. Vous pouvez utiliser votre logiciel de prédilection (drawio, visio, etc.).


Exercice 3 – Navigation entre les objets des classes Planete et Satellite

🎯 Objectif

L’objectif de cet exercice est de tester l'implémentation de vos classes et d'utiliser efficacement les propriétés de navigation.

🛠️ Instructions

Dans une application console, écrivez un programme qui demande à l'utilisateur d'entrer le nom d'un satellite.

Le programme doit lui retourner :

  • La description du satellite (son nom et sa masse, faites appel à la méthode appropriée);
  • La planète qui lui est associée (son nom, son type, sa masse et son nombre de satellites).
astuce

Exigences : Vous devez utiliser adéquatement les boucles for/foreach. L'utilisation d'un switch-case est déconseillée.

Utilisez les tableaux suivants pour construire votre jeu de données :

Tableau des planètes du système solaire

NomMasse (kg)TypeSatellites
Mercure3.30 e23TelluriqueAucun
Vénus4.87e24TelluriqueAucun
Terre5.97e24TelluriqueLune
Mars6.42 e23TelluriquePhobos, Deimos
Jupiter1.9e27GazeuseIo, Europe, Ganymède, Callisto
Saturne5.68e26GazeuseTitan, Encelade, Rhéa
Uranus8.68e25GazeuseTitania, Obéron, Ariel
Neptune1.02e26GazeuseTriton, Néréide
Pluton1.30e22NaineCharon

Tableau des satellites du système solaire

NomMasse (kg)
Lune7.35e22
Phobos1.07e16
Deimos1.48e15
Io8.93e22
Europe4.80e22
Ganymède1.48e23
Callisto1.08e23
Titan1.34e23
Encelade1.08e20
Rhéa2.31e21
Titania3.53e21
Obéron3.01e21
Ariel1.35e21
Triton2.14e22
Néréide3.1e19
Charon1.59e21

Exemple de résultat attendu dans la console:

Entrez le nom d'un satellite : io

Description du satellite :
Io - Masse: 8,93E+22 kg

Planète associée :
Jupiter - Type: Gazeuse - Masse: 1,9E+27 kg - Satellites: 4