Menu
Coddy logo textTech

Rückblick – Studierendendaten

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

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Studentenverwaltungssystem erstellen, das alle Kapselungstechniken vereint, die Sie in diesem Kapitel gelernt haben. Sie werden ein sicheres System erstellen, in dem Studentendaten ordnungsgemäß geschützt sind, Noten validiert werden und bestimmte Informationen nach der Erstellung unveränderlich bleiben.

Sie werden Ihren Code auf zwei Dateien aufteilen:

  • Student.cs: Erstellen Sie eine Student-Klasse im Namespace Records, die eine ordnungsgemäße Kapselung demonstriert. Ihr Student sollte Folgendes haben:
    • Ein readonly-Feld Name (string), das öffentlich zugänglich ist, aber nur während der Konstruktion gesetzt werden kann
    • Ein privates readonly-Feld für die Studenten-ID (string) - dieses sollte niemals direkt von außen 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 sollten stillschweigend ignoriert werden
    • Eine öffentliche Methode GetGradeCount(), die zurückgibt, wie viele gültige Noten aufgezeichnet wurden
    • Eine öffentliche Methode GetStudentInfo(), die einen String im Format "{Name} (ID: {last 4 characters of student ID})" zurückgibt - beachten Sie, dass Sie nur eine maskierte Version der ID preisgeben!
    Der Konstruktor sollte den Namen und die Studenten-ID in dieser Reihenfolge akzeptieren.
  • Program.cs: Erstellen Sie in Ihrer Hauptdatei einen Studenten und fügen Sie mehrere Noten hinzu, um zu demonstrieren, wie die Kapselung funktioniert. Sie werden zeigen, dass gültige Noten akzeptiert werden, ungültige Noten abgelehnt werden und der Durchschnitt korrekt berechnet wird.

Sie erhalten fünf Eingaben:

  • Name des Studenten
  • Studenten-ID (mindestens 4 Zeichen)
  • Erste hinzuzufügende Note (Ganzzahl)
  • Zweite hinzuzufügende Note (Ganzzahl, könnte ungültig sein wie -5 oder 150)
  • Dritte hinzuzufügende Note (Ganzzahl)

Geben Sie die Ausgabe in diesem Format aus:

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

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

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

Beachten Sie, dass die ungültige Note von 150 stillschweigend abgelehnt wurde, sodass nur zwei Noten aufgezeichnet wurden. Die Studenten-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. Dies ist das Zusammenspiel der Kapselung, 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