Panoramica del progetto e progettazione UML
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 77 di 87.
Sfida
FacileIniziamo il progetto del Sistema di gestione della biblioteca costruendone le fondamenta: le classi delle entità principali da cui dipenderà tutto il resto. Questa prima sfida consiste nel creare classi Book e User ben strutturate che modellino le entità principali del sistema.
Organizzerai il codice in tre file:
Book.java: crea la classeBookche rappresenta un libro della biblioteca. Ogni libro deve avere campi privati perisbn(String),title(String),author(String) eisAvailable(boolean, con valore predefinitotrue). Includi un costruttore che accetti isbn, title e author. Fornisci i metodi getter appropriati per tutti i campi e un setter perisAvailable. Aggiungi un metodogetDetails()che restituisca una stringa formattata:[isbn] title by author.User.java: crea la classeUserche rappresenta un membro della biblioteca. Ogni utente deve avere campi privati perid(String) ename(String). Includi un costruttore che accetti entrambi i valori e fornisci metodi getter per ciascun campo. Aggiungi un metodotoString()che restituisca:User[id]: name.Main.java: metti insieme le tue classi per dimostrare che funzionano correttamente. Riceverai quattro input: l'ISBN, il titolo e l'autore di un libro, seguiti dall'ID e dal nome di un utente.Crea un
Bookcon i primi tre input e unUsercon gli ultimi due. Stampa i dettagli del libro usandogetDetails(), poi stampa se il libro è disponibile nel formatoAvailable: trueoppureAvailable: false. Infine, stampa l'utente usando il suo metodotoString().
Riceverai cinque input nell'ordine seguente: ISBN (String), titolo (String), autore (String), ID utente (String) e nome utente (String).
Per esempio, con gli input 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 e Alice Smith, l'output sarà:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithQueste classi fondamentali fungeranno da elementi costitutivi per l'intero Sistema di gestione della biblioteca. Nelle prossime lezioni, le estenderai con funzionalità di prestito, capacità di ricerca e altro ancora!
Provalo tu
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leggi le informazioni sul libro
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// Leggi le informazioni sull'utente
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: Crea un oggetto Book con isbn, title e author
// TODO: Crea un oggetto User con userId e userName
// TODO: Stampa i dettagli del libro usando getDetails()
// TODO: Stampa se il libro è disponibile (formato: "Available: true" o "Available: false")
// TODO: Stampa l'utente usando toString()
}
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato10Gestione delle eccezioni in OOP
Gerarchia delle classi di eccezioneEccezioni personalizzateEccezioni controllate e non controllatePattern try-with-resourcesRiepilogo - Utente validato13Progetto: Gestione della biblioteca
Panoramica del progetto e progettazione UMLClassi Libro e UtenteSistema di prestitoFunzionalità di ricercaInterfaccia amministratoreIntegrazione della gestione delle eccezioniTest e integrazione2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online