Menu
Coddy logo textTech

Récapitulatif - Dossiers d'étudiants

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

challenge icon

Défi

Facile

Construisons un système de dossiers scolaires qui regroupe tous les concepts d'encapsulation que vous avez appris dans ce chapitre. Vous allez créer une classe Student qui protège correctement les données académiques sensibles tout en fournissant un accès contrôlé via des getters, des setters et des propriétés calculées.

Vous organiserez votre code en deux fichiers :

  • student.dart : Définissez une classe Student qui gère les dossiers académiques avec une encapsulation appropriée :
    • Un final String id - l'identifiant de l'étudiant ne doit jamais changer après la création
    • Un String name public - les noms peuvent être mis à jour
    • Une List<int> _grades privée - la liste brute des notes doit être protégée
    • Un constructeur qui prend l'id, le nom et une liste initiale de notes
    • Un getter gradeCount qui retourne le nombre de notes enregistrées
    • Un getter calculé average qui calcule et retourne la moyenne de toutes les notes sous forme de double (retourne 0.0 si aucune note n'existe)
    • Un getter calculé letterGrade qui retourne une lettre basée sur la moyenne : 'A' pour 90+, 'B' pour 80-89, 'C' pour 70-79, 'D' pour 60-69, et 'F' pour moins de 60
    • Une méthode addGrade(int grade) qui n'accepte que des notes entre 0 et 100 (inclus). Si elle est valide, ajoutez la note et affichez Grade [grade] added for [name]. Si elle est invalide, affichez Invalid grade: [grade]
    • Une méthode getHighestGrade() qui retourne la note la plus élevée, ou 0 si aucune note n'existe
    • Une méthode displayRecord() qui affiche le résumé académique de l'étudiant
  • main.dart : Importez votre classe d'étudiant et démontrez l'encapsulation en action :
    • Créez un étudiant avec l'id 'STU001', le nom 'Emma', et les notes initiales [85, 92, 78]
    • Appelez displayRecord()
    • Ajoutez une note de 95
    • Tentez d'ajouter une note invalide de 150
    • Ajoutez une note de 88
    • Appelez displayRecord()
    • Affichez Highest grade: [highest]

La méthode displayRecord() doit afficher les informations dans ce format :

===== Student Record =====
ID: [id]
Name: [name]
Grades Recorded: [gradeCount]
Average: [average]
Letter Grade: [letterGrade]

Sortie attendue :

===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 3
Average: 85.0
Letter Grade: B
Grade 95 added for Emma
Invalid grade: 150
Grade 88 added for Emma
===== Student Record =====
ID: STU001
Name: Emma
Grades Recorded: 5
Average: 87.6
Letter Grade: B
Highest grade: 95

Essayez vous-même

import 'student.dart';

void main() {
  // TODO: Créer un étudiant avec l'id 'STU001', le nom 'Emma', et les notes initiales [85, 92, 78]
  
  // TODO: Appeler displayRecord()
  
  // TODO: Ajouter une note de 95
  
  // TODO: Tenter d'ajouter une note invalide de 150
  
  // TODO: Ajouter une note de 88
  
  // TODO: Appeler displayRecord()
  
  // TODO: Afficher "Highest grade: [highest]"
}

Toutes les leçons de Programmation Orientée Objet