Menu
Coddy logo textTech

Rückblick – Schülerdaten

Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 35 von 70.

challenge icon

Aufgabe

Einfach

Erstellen wir ein System zur Verwaltung von Schülerdaten, das alle in diesem Kapitel erlernten Techniken der Kapselung zusammenführt. Du erstellst ein sicheres System, in dem Schülerdaten ordnungsgemäß geschützt, Noten validiert und bestimmte Informationen nach der Erstellung unveränderlich bleiben.

Du organisierst deinen Code über zwei Dateien:

  • Student.cs: Erstelle eine Student-Klasse im Namespace Records, die eine korrekte Kapselung demonstriert. Deine Schülerklasse sollte Folgendes enthalten:
    • Ein öffentlich zugängliches readonly-Feld Name (string), das jedoch nur während der Konstruktion festgelegt werden kann
    • Ein privates readonly-Feld für die Schüler-ID (string) – dieses sollte von außerhalb niemals direkt zugänglich sein
    • Eine private Liste zum Speichern von Noten (Ganzzahlen)
    • Eine öffentliche schreibgeschützte Eigenschaft Average, die den Durchschnitt aller Noten berechnet und zurückgibt oder 0, wenn keine Noten vorhanden sind
    • Eine öffentliche Methode AddGrade(int grade), die nur Noten zwischen 0 und 100 (einschließlich) akzeptiert – ungültige Noten sollen stillschweigend ignoriert werden
    • Eine öffentliche Methode GetGradeCount(), die zurückgibt, wie viele gültige Noten erfasst wurden
    • Eine öffentliche Methode GetStudentInfo(), die eine Zeichenfolge im Format "{Name} (ID: {last 4 characters of student ID})" zurückgibt – beachte, dass du nur eine maskierte Version der ID preisgibst!
    Der Konstruktor sollte den Namen und die Schüler-ID in dieser Reihenfolge akzeptieren.
  • Program.cs: Erstelle in deiner Hauptdatei einen Schüler und füge mehrere Noten hinzu, um zu demonstrieren, wie die Kapselung funktioniert. Du zeigst, dass gültige Noten akzeptiert, ungültige Noten abgelehnt und der Durchschnitt korrekt berechnet wird.

Du erhältst fünf Eingaben:

  • Name des Schülers
  • Schüler-ID (mindestens 4 Zeichen)
  • Erste hinzuzufügende Note (Ganzzahl)
  • Zweite hinzuzufügende Note (Ganzzahl, möglicherweise ungültig wie -5 oder 150)
  • Dritte hinzuzufügende Note (Ganzzahl)

Gib die Ausgabe in diesem Format aus:

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

Wenn die Eingaben beispielsweise Emma Wilson, STU12345, 85, 150 und 90 lauten, sollte die Ausgabe wie folgt aussehen:

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

Beachte, wie die ungültige Note 150 stillschweigend abgelehnt wurde, sodass nur zwei Noten erfasst wurden. Die Schüler-ID ist geschützt – externer Code kann niemals die vollständige ID sehen, sondern nur die maskierte Version über GetStudentInfo(). Der Name ist lesbar, aber unveränderlich. So arbeitet die Kapselung zusammen, um eine robuste, gut geschützte Klasse zu erstellen!

Probier es selbst

using System;
using Records;

class Program
{
    public static void Main(string[] args)
    {
        // Eingaben lesen
        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: Erstelle ein Student-Objekt mit name und studentId

        // TODO: Füge alle drei Noten mit der Methode AddGrade hinzu

        // TODO: Gib die Ausgabe im erforderlichen Format aus:
        // {GetStudentInfo() result}
        // Grades recorded: {GetGradeCount()}
        // Average: {Average}
    }
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C#-Compiler