Panoramica del progetto
Fa parte della sezione Programmazione orientata agli oggetti del percorso Python di Coddy. Lezione 55 di 64.
Sfida
MedioIn questa sfida implementerai le basi di un sistema di gestione di biblioteche.
Modifica library.py per implementare le classi richieste seguendo i commenti TODO. Il file driver contiene numerosi scenari di test che convalidano la tua implementazione.
- Segui i commenti TODO in
library.pyper una guida passo dopo passo - Implementa la classe
Librarycon un’inizializzazione appropriata e una rappresentazione in formato stringa
Provalo tu
# TODO: Importa la classe Library da library.py
# Usa questo formato: from library import Library
# Gestore completo dei casi di test
test_case = input()
if test_case == "basic_library_creation":
# TODO: Crea una biblioteca con il nome "Test Library"
# TODO: Stampa l'oggetto biblioteca (questo chiamerà il metodo __str__)
pass
elif test_case == "library_attributes":
# TODO: Crea una biblioteca con il nome "Test Library"
# TODO: Stampa l'attributo name della biblioteca nel formato: Name: Test Library
# TODO: Stampa la lunghezza della lista books nel formato: Books: 0
# TODO: Stampa la lunghezza della lista users nel formato: Users: 0
# Suggerimento: usa le f-string, ad esempio print(f"Name: {library.name}")
pass
elif test_case == "multiple_libraries":
# TODO: Crea due biblioteche diverse con i nomi "Library 1" e "Library 2"
# TODO: Stampa entrambi gli oggetti biblioteca
pass
elif test_case == "empty_name":
# TODO: Crea una biblioteca con una stringa vuota come nome
# TODO: Stampa l'oggetto della biblioteca
pass
elif test_case == "special_characters":
# TODO: Crea una biblioteca con il nome "!@#$%^&*()"
# TODO: Stampa l'oggetto della biblioteca
pass
elif test_case == "very_long_name":
# TODO: Crea una biblioteca con un nome composto da esattamente 100 caratteri 'A' (usa "A" * 100)
# TODO: Stampa l'oggetto della biblioteca
pass
elif test_case == "add_books_users":
# TODO: Crea una biblioteca con il nome "Test Library"
# TODO: Aggiungi questi elementi alla lista books: ["Book1", "Book2", "Book3"]
# TODO: Aggiungi questi elementi alla lista users: ["User1", "User2"]
# TODO: Stampa l'oggetto della biblioteca (dovrebbe mostrare i conteggi aggiornati)
pass
elif test_case == "empty_lists":
# TODO: Crea una biblioteca con il nome "Test Library"
# TODO: Stampa la lunghezza della lista books nel formato: Books length: 0
# TODO: Stampa la lunghezza della lista users nel formato: Users length: 0
# Suggerimento: usa le f-string, ad esempio print(f"Books length: {len(library.books)}")
pass
elif test_case == "type_validation":
# TODO: Crea una biblioteca usando l'intero 123 come nome
# TODO: Stampa l'oggetto della biblioteca (dovrebbe essere convertito in una stringa)
passTutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti di OOP
File esterniIntroduzione a OOPClassi vs. oggettiIl parametro selfMetodiAttributiMetodo costruttore (__init__)Riepilogo - Calcolatrice semplice4Ereditarietà
Ereditarietà di baseLa funzione super()Sovrascrittura dei metodiEreditarietà multiplaOrdine di risoluzione dei metodiRiepilogo - Gerarchia dei dipendenti7Metodi speciali
Introduzione ai metodi magiciSovraccarico degli operatoriMetodi magici dei contenitoriRiepilogo - Lista personalizzata10Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneModello SingletonModello FactoryModello ObserverModello Strategy2Decoratori
Introduzione ai decoratoriDecoratore di proprietàDecoratore di metodo staticoDecoratore di metodo di classe5Polimorfismo
Ripasso dell'override dei metodiDuck typingClassi e metodi astrattiProgettazione delle interfacceRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàMixinMetodi statici e di classeDecorator di classeContext manager11Pattern di progettazione - Parte 2
Pattern dei comandiPattern adattatorePattern decoratorePattern metodo templatePattern statoPattern composito3Proprietà delle classi
Variabili di istanza e di classeDecorator delle proprietàAttributi privatiRiepilogo - Gestore di conti bancari6Incapsulamento
Membri pubblici, protetti e privatiModificatori di accessoOccultamento delle informazioniDecorator delle proprietà: avanzatiRipasso - Sistema di registri degli studenti12Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e UtenteSistema di prestitoFunzionalità di ricercaInterfaccia amministratoreTest e integrazioneEsercitati da solo: Compilatore Python online