Struttura del progetto
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 62 di 70.
Sfida
FacileImpostiamo le basi per il tuo progetto Library System! Creerai la struttura di file di base, che nelle prossime lezioni si trasformerà in un'applicazione completa per la gestione di una biblioteca.
Organizzerai il codice in quattro file, ciascuno con una responsabilità specifica:
Book.cs: questo file conterrà il modello Book. Per ora, crea una classeBooknello spazio dei nomiLibrarySystemcon tre proprietà implementate automaticamente:Title(string),Author(string) eIsAvailable(bool, il cui valore predefinito ètrue). Aggiungi un costruttore che accetti il titolo e l'autore come parametri.User.cs: questo file conterrà il modello User. Crea una classeUsernello stesso spazio dei nomi con due proprietà:Name(string) eMemberId(int). Includi un costruttore che accetti entrambi i valori.Library.cs: qui risiederà la logica principale. Crea una classeLibrarycon una proprietàName(string) e un costruttore che la imposti. Aggiungi un metodo chiamatoGetInfo()che restituisca una stringa nel formato"{Name} Library System Initialized".Program.cs: metti insieme tutto qui. Questo è il punto di ingresso, dove creerai istanze delle tue classi e verificherai che la struttura funzioni correttamente.
Riceverai tre input:
- Il nome della biblioteca
- Una voce per un libro nel formato
title|author - Una voce per un utente nel formato
name|memberId
Crea un'istanza di Library con il nome indicato, un Book con il titolo e l'autore forniti e un User con il nome e l'ID membro forniti. Poi stampa tre righe:
- Il risultato della chiamata a
GetInfo()sulla tua biblioteca - Le informazioni sul libro nel formato
Book: {Title} by {Author} - Available: {IsAvailable} - Le informazioni sull'utente nel formato
User: {Name} (ID: {MemberId})
Per esempio, se gli input sono:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001L'output dovrebbe essere:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)Questa struttura segue il principio di responsabilità singola: ogni file gestisce un ambito specifico. Nelle prossime lezioni, amplierai queste classi con la logica per il prestito, le funzionalità di ricerca e un'interfaccia completa da console!
Provalo tu
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Leggi i dati di input
string libraryName = Console.ReadLine();
string bookInput = Console.ReadLine();
string userInput = Console.ReadLine();
// Analizza i dati di input del libro (formato: title|author)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// Analizza i dati di input dell'utente (formato: name|memberId)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: Crea un'istanza di Library con il nome della biblioteca
// TODO: Crea un'istanza di Book con il titolo e l'autore
// TODO: Crea un'istanza di User con il nome e l'ID del membro
// TODO: Stampa le informazioni della biblioteca usando GetInfo()
// TODO: Stampa le informazioni del libro nel formato: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: Stampa le informazioni dell'utente nel formato: User: {Name} (ID: {MemberId})
}
}
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniNamespace e direttiveIntroduzione a classi e oggettiLa parola chiave "this"Metodi e parametriCampi e proprietàCostruttoriInizializzatori di oggettiRiepilogo - Calcolatrice semplice4Ereditarietà
Sintassi di base dell'ereditarietà (:)La parola chiave 'base'Parole chiave virtual e overrideClassi sealedLa classe base 'object'Riepilogo - Gerarchia dei dipendenti7Funzionalità avanzate
Sovraccarico degli operatoriIndicizzatori (this[])Override di ToString()Metodi di estensioneRiepilogo - Lista personalizzata10Pattern di progettazione Parte 1
Introduzione ai pattern di progettazioneSingleton thread-safePattern FactoryPattern Observer (eventi)Pattern Strategy2Proprietà e membri statici
Proprietà implementate automaticamenteProprietà di sola lettura e di sola scritturaCampi e metodi staticiClassi staticheMembri con corpo di espressione5Polimorfismo e interfacce
Polimorfismo a compile time e runtimeInterfaccia o classe astrattaInterfacce multipleInterfacce espliciteUpcasting e downcastingRipasso: calcolatore di forme8Concetti avanzati di programmazione a oggetti
Composizione invece dell'ereditarietàTipi generici (classi e metodi)Delegati ed eventiAttributi e reflectionIDisposable e istruzione usingNozioni di base sull'iniezione delle dipendenze11Pattern di progettazione, parte 2
Pattern del ComandoPattern dell’AdattatorePattern del DecoratorePattern Template MethodPattern dello StatoPattern Composito3Architettura delle classi
Dati di istanza vs staticiParole chiave 'readonly' e 'const'Campi di supportoRiepilogo - Gestore di conti bancari6Incapsulamento
Modificatori di accessoProprietà per l'incapsulamentoImplementazione dell'occultamento dei datiModelli di immutabilitàRiepilogo - Registri degli studenti9Argomenti variabili
La parola chiave 'params'Parametri opzionaliArgomenti con nomeOverloading dei metodi12Progetto: Sistema bibliotecario
Struttura del progettoModelli di libri e utentiLogica del sistema di prestitoRicerca con LINQInterfaccia console / interfaccia amministratoreTest unitari (NUnit/xUnit)Esercitati da solo: Compilatore C# online