Menu
Coddy logo textTech

Récapitulatif - Dossiers d'étudiants

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 35 sur 70.

challenge icon

Défi

Facile

Construisons un système de dossiers d'étudiants qui regroupe toutes les techniques d'encapsulation que vous avez apprises dans ce chapitre. Vous allez créer un système sécurisé où les données des étudiants sont correctement protégées, les notes sont validées et certaines informations restent immuables après leur création.

Vous organiserez votre code sur deux fichiers :

  • Student.cs : Créez une classe Student dans l'espace de noms Records qui démontre une encapsulation appropriée. Votre étudiant doit avoir :
    • Un champ readonly Name (chaîne de caractères) qui est accessible publiquement mais ne peut être défini que lors de la construction
    • Un champ privé readonly pour l'identifiant de l'étudiant (chaîne de caractères) - celui-ci ne doit jamais être directement accessible de l'extérieur
    • Une liste privée pour stocker les notes (entiers)
    • Une propriété publique en lecture seule Average qui calcule et renvoie la moyenne de toutes les notes, ou 0 si aucune note n'existe
    • Une méthode publique AddGrade(int grade) qui n'accepte que des notes comprises entre 0 et 100 (inclus) - les notes invalides doivent être ignorées silencieusement
    • Une méthode publique GetGradeCount() qui renvoie le nombre de notes valides enregistrées
    • Une méthode publique GetStudentInfo() qui renvoie une chaîne au format "{Name} (ID: {last 4 characters of student ID})" - remarquez comment vous n'exposez qu'une version masquée de l'ID !
    Le constructeur doit accepter le nom et l'identifiant de l'étudiant dans cet ordre.
  • Program.cs : Dans votre fichier principal, créez un étudiant et ajoutez plusieurs notes pour démontrer le fonctionnement de l'encapsulation. Vous montrerez que les notes valides sont acceptées, les notes invalides sont rejetées et la moyenne est calculée correctement.

Vous recevrez cinq entrées :

  • Nom de l'étudiant
  • ID de l'étudiant (au moins 4 caractères)
  • Première note à ajouter (entier)
  • Deuxième note à ajouter (entier, peut être invalide comme -5 ou 150)
  • Troisième note à ajouter (entier)

Affichez la sortie dans ce format :

{GetStudentInfo() result}
Grades recorded: {GetGradeCount()}
Average: {Average}

Par exemple, si les entrées sont Emma Wilson, STU12345, 85, 150, et 90, la sortie devrait être :

Emma Wilson (ID: 2345)
Grades recorded: 2
Average: 87.5

Remarquez comment la note invalide de 150 a été silencieusement rejetée, de sorte que seules deux notes ont été enregistrées. L'identifiant de l'étudiant est protégé - le code externe ne peut jamais voir l'identifiant complet, seulement la version masquée via GetStudentInfo(). Le nom est lisible mais immuable. C'est l'encapsulation qui travaille de concert pour créer une classe robuste et bien protégée !

Essayez vous-même

using System;
using Records;

class Program
{
    public static void Main(string[] args)
    {
        // Lire les entrées
        string name = Console.ReadLine();
        string studentId = Console.ReadLine();
        int grade1 = Convert.ToInt32(Console.ReadLine());
        int grade2 = Convert.ToInt32(Console.ReadLine());
        int grade3 = Convert.ToInt32(Console.ReadLine());

        // TODO: Créer un objet Student avec le name et studentId

        // TODO: Ajouter les trois notes en utilisant la méthode AddGrade

        // TODO: Afficher la sortie dans le format requis :
        // {résultat de GetStudentInfo()}
        // Notes enregistrées : {GetGradeCount()}
        // Moyenne : {Average}
    }
}

Toutes les leçons de Programmation Orientée Objet