Projektstruktur
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 62 von 70.
Aufgabe
EinfachRichten wir das Fundament für dein Library System-Projekt ein! Du erstellst die grundlegende Dateistruktur, die sich in den kommenden Lektionen zu einer vollständigen Bibliotheksverwaltungsanwendung entwickeln wird.
Du organisierst deinen Code über vier Dateien hinweg, von denen jede eine bestimmte Verantwortung hat:
Book.cs: Diese Datei enthält dein Book-Modell. Erstelle zunächst 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 enthält dein User-Modell. Erstelle eineUser-Klasse im selben Namespace mit zwei Eigenschaften:Name(string) undMemberId(int). Füge einen Konstruktor hinzu, der beide Werte entgegennimmt.Library.cs: Hier wird deine Kernlogik untergebracht. Erstelle eineLibrary-Klasse mit einerName-Eigenschaft (string) und einem Konstruktor, der diese festlegt. Füge eine Methode namensGetInfo()hinzu, die einen String im Format"{Name} Library System Initialized"zurückgibt.Program.cs: Führe hier alles zusammen. Dies ist dein Einstiegspunkt, an dem du Instanzen deiner Klassen erstellst und überprüfst, ob die Struktur korrekt funktioniert.
Du erhältst drei Eingaben:
- 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 bereitgestellten Titel und Autor sowie einen User mit dem bereitgestellten Namen und der Mitglieder-ID. Gib anschließend drei Zeilen aus:
- das Ergebnis des Aufrufs von
GetInfo()für deine Bibliothek - die Informationen zum Buch im Format
Book: {Title} by {Author} - Available: {IsAvailable} - die Informationen zum Benutzer im Format
User: {Name} (ID: {MemberId})
Wenn die Eingaben beispielsweise wie folgt aussehen:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001Die Ausgabe sollte 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 Prinzip der Einzelverantwortung – jede Datei kümmert sich um eine bestimmte Aufgabe. 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. EigenschaftenKonstruktorenObjektinitialisiererWiederholung – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbungs-(:)-SyntaxDas „base“-Schlüsselwort„virtual“- und „override“-SchlüsselwörterVersiegelte KlassenDie „object“-BasisklasseWiederholung – Mitarbeiterhierarchie7Erweiterte Funktionen
Überladen von OperatorenIndexer (this[])ToString()-ÜberschreibungErweiterungsmethodenRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterThread-sicheres SingletonFactory-MusterObserver-Muster (Events)Strategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformKomponente für SpielfigurenFahrzeugvermietungsdienst2Eigenschaften & statische Member
Automatisch implementierte EigenschaftenNur lesbare/schreibbare EigenschaftenStatische Felder & MethodenStatische KlassenMember mit Ausdruckskörpern5Polymorphie & Interfaces
Compile- vs. Laufzeit-PolymorphieInterface vs. abstrakte KlasseMehrere InterfacesExplizite InterfacesUpcasting & DowncastingWiederholung – Formenrechner3Klassenarchitektur
Instanz- vs. statische DatenSchlüsselwörter 'readonly' & 'const'Backing FieldsRückblick – Bankkontenverwaltung6Kapselung
ZugriffsmodifikatorenEigenschaften zur KapselungImplementierung der DatenkapselungMuster für UnveränderlichkeitRückblick – Schülerdaten9Variable Argumente
Das Schlüsselwort 'params'Optionale ParameterBenannte ArgumenteMethodenüberladung12Projekt: Bibliothekssystem
ProjektstrukturBuch- und BenutzermodelleLogik des AusleihsystemsLINQ für die SucheKonsolen-UI / AdministrationsoberflächeUnit-Tests (NUnit/xUnit)Übe selbstständig: Online-C#-Compiler