Menu
Coddy logo textTech

Rückblick – Studierendendaten

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 35 von 110.

challenge icon

Aufgabe

Einfach

Lass uns ein System für Schülerdatensätze erstellen, das alle in diesem Kapitel erlernten Konzepte der Kapselung zusammenführt. Du erstellst eine Student-Klasse, die sensible akademische Daten ordnungsgemäß schützt und gleichzeitig kontrollierten Zugriff durch Getter, Setter und berechnete Eigenschaften ermöglicht.

Du organisierst deinen Code in zwei Dateien:

  • student.dart: Definiere eine Student-Klasse, die akademische Datensätze mit ordnungsgemäßer Kapselung verwaltet:
    • Eine final String id – die Schüler-ID sollte sich nach der Erstellung niemals ändern
    • Ein öffentliches String name – Namen können aktualisiert werden
    • Eine private List<int> _grades – die rohe Notenliste sollte geschützt werden
    • Einen Konstruktor, der die ID, den Namen und eine anfängliche Notenliste entgegennimmt
    • Einen Getter gradeCount, der zurückgibt, wie viele Noten erfasst wurden
    • Einen berechneten Getter average, der den Durchschnitt aller Noten berechnet und als double zurückgibt (gib 0.0 zurück, wenn keine Noten vorhanden sind)
    • Einen berechneten Getter letterGrade, der basierend auf dem Durchschnitt eine Buchstabennote zurückgibt: 'A' für 90+, 'B' für 80–89, 'C' für 70–79, 'D' für 60–69 und 'F' für weniger als 60
    • Eine Methode addGrade(int grade), die nur Noten zwischen 0 und 100 (einschließlich) akzeptiert. Wenn die Note gültig ist, füge sie hinzu und gib Grade [grade] added for [name] aus. Wenn sie ungültig ist, gib Invalid grade: [grade] aus
    • Eine Methode getHighestGrade(), die die höchste Note zurückgibt oder 0, wenn keine Noten vorhanden sind
    • Eine Methode displayRecord(), die die akademische Zusammenfassung des Schülers anzeigt
  • main.dart: Importiere deine Student-Klasse und demonstriere die Kapselung in der Praxis:
    • Erstelle einen Schüler mit der ID 'STU001', dem Namen 'Emma' und den Anfangsnoten [85, 92, 78]
    • Rufe displayRecord() auf
    • Füge die Note 95 hinzu
    • Versuche, die ungültige Note 150 hinzuzufügen
    • Füge die Note 88 hinzu
    • Rufe displayRecord() auf
    • Gib Highest grade: [highest] aus

Die Methode displayRecord() sollte in diesem Format ausgeben:

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

Erwartete Ausgabe:

===== 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

Probier es selbst

import 'student.dart';

void main() {
  // TODO: Erstelle einen Studenten mit der ID 'STU001', dem Namen 'Emma' und den Anfangsnoten [85, 92, 78]
  
  // TODO: Rufe displayRecord() auf
  
  // TODO: Füge eine Note von 95 hinzu
  
  // TODO: Versuche, eine ungültige Note von 150 hinzuzufügen
  
  // TODO: Füge eine Note von 88 hinzu
  
  // TODO: Rufe displayRecord() auf
  
  // TODO: Gib "Highest grade: [highest]" aus
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler