Projektstruktur
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 62 von 70.
Aufgabe
EinfachLegen wir den Grundstein für dein Library System Projekt! Du wirst die grundlegende Dateistruktur erstellen, die in den kommenden Lektionen zu einer vollständigen Bibliotheksverwaltungsanwendung anwachsen wird.
Du wirst deinen Code auf vier Dateien verteilen, von denen jede eine spezifische Aufgabe hat:
Book.cs: Diese Datei wird dein Book-Modell enthalten. Erstelle vorerst eineBook-Klasse im NamespaceLibrarySystemmit drei automatisch implementierten Eigenschaften:Title(string),Author(string) undIsAvailable(bool, standardmäßig auftruegesetzt). Füge einen Konstruktor hinzu, der den Titel und den Autor als Parameter entgegennimmt.User.cs: Diese Datei wird dein User-Modell enthalten. Erstelle eineUser-Klasse im selben Namespace mit zwei Eigenschaften:Name(string) undMemberId(int). Füge einen Konstruktor hinzu, der beide Werte akzeptiert.Library.cs: Hier wird deine Kernlogik beheimatet sein. Erstelle eineLibrary-Klasse mit einerName-Eigenschaft (string) und einem Konstruktor, um diese zu setzen. Füge eine Methode namensGetInfo()hinzu, die einen String im Format"{Name} Library System Initialized"zurückgibt.Program.cs: Hier bringst du alles zusammen. Dies ist dein Einstiegspunkt, an dem du Instanzen deiner Klassen erstellst und überprüfst, ob die Struktur korrekt funktioniert.
Du wirst drei Eingaben erhalten:
- Den Namen der Bibliothek
- Einen Bucheintrag im Format
title|author - Einen Benutzereintrag im Format
name|memberId
Erstelle eine Library-Instanz mit dem angegebenen Namen, ein Book mit dem angegebenen Titel und Autor sowie einen User mit dem angegebenen Namen und der Mitglieds-ID. Gib dann drei Zeilen aus:
- Das Ergebnis des Aufrufs von
GetInfo()für deine Bibliothek - Die Informationen des Buches im Format
Book: {Title} by {Author} - Available: {IsAvailable} - Die Informationen des Benutzers im Format
User: {Name} (ID: {MemberId})
Wenn die Eingaben zum Beispiel wie folgt lauten:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001Sollte die Ausgabe wie folgt aussehen:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)Diese Struktur folgt dem Single Responsibility Principle (Prinzip der Einzelverantwortung) – jede Datei kümmert sich um ein spezifisches Anliegen. In den kommenden Lektionen wirst du diese Klassen um Ausleihlogik, Suchfunktionen und eine vollständige Konsolenschnittstelle erweitern!
Probier es selbst
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Eingaben lesen
string libraryName = Console.ReadLine();
string bookInput = Console.ReadLine();
string userInput = Console.ReadLine();
// Bucheingabe parsen (Format: title|author)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// Benutzereingabe parsen (Format: name|memberId)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: Erstelle eine Library-Instanz mit dem Bibliotheksnamen
// TODO: Erstelle eine Book-Instanz mit dem Titel und Autor
// TODO: Erstelle eine User-Instanz mit dem Namen und der Mitglieds-ID
// TODO: Gib die Bibliotheksinformationen mit GetInfo() aus
// TODO: Gib die Buchinformationen im Format aus: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: Gib die Benutzerinformationen im Format aus: User: {Name} (ID: {MemberId})
}
}
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten9Variable Argumente
Das 'params'-SchlüsselwortOptionale ParameterBenannte ArgumenteMethodenüberladung12Projekt: Bibliothekssystem
ProjektstrukturBuch- und Benutzermodelle