Descripción general del proyecto
Parte de la sección Programación orientada a objetos del Journey de Python de Coddy. Lección 55 de 64.
Desafío
IntermedioEn este desafío, implementarás los fundamentos de un sistema de gestión de bibliotecas.
Edita library.py para implementar las clases requeridas siguiendo los comentarios TODO. El archivo controlador contiene amplios escenarios de prueba que validan tu implementación.
- Sigue los comentarios TODO en
library.pypara obtener instrucciones paso a paso - Implementa la clase
Librarycon una inicialización adecuada y una representación en forma de cadena
Pruébalo tú mismo
from library import Library
# Gestor completo de casos de prueba
test_case = input()
if test_case == "basic_library_creation":
library_name = "Test Library"
library = Library(library_name)
print(library)
elif test_case == "library_attributes":
library = Library("Test Library")
print(f"Name: {library.name}")
print(f"Books: {len(library.books)}")
print(f"Users: {len(library.users)}")
elif test_case == "multiple_libraries":
library1 = Library("Library 1")
library2 = Library("Library 2")
print(library1)
print(library2)
elif test_case == "empty_name":
library = Library("")
print(library)
elif test_case == "special_characters":
library = Library("!@#$%^&*()")
print(library)
elif test_case == "very_long_name":
long_name = "A" * 100
library = Library(long_name)
print(library)
elif test_case == "add_books_users":
library = Library("Test Library")
library.books.extend(["Book1", "Book2", "Book3"])
library.users.extend(["User1", "User2"])
print(library)
elif test_case == "empty_lists":
library = Library("Test Library")
print(f"Books length: {len(library.books)}")
print(f"Users length: {len(library.users)}")
elif test_case == "type_validation":
library = Library(123)
print(library)Todas las lecciones de Programación orientada a objetos
1Fundamentos de la POO
Introducción a la POOArchivos externosClases vs. objetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Repaso: calculadora sencilla4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosRepaso: jerarquía de empleados7Métodos especiales
Introducción a los métodos mágicosSobrecarga de operadoresMétodos mágicos de contenedoresRepaso: lista personalizada10Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy2Decoradores
Introducción a los decoradoresDecorador de propiedadDecorador de método estáticoDecorador de método de clase5Polimorfismo
Repaso de la sobrescritura de métodosTipado patoClases y métodos abstractosDiseño de interfacesRepaso: calculadora de formas8Conceptos avanzados de POO
Composición frente a herenciaMixinsMétodos estáticos y de claseDecoradores de claseGestores de contexto11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Propiedades de clase
Variables de instancia vs. variables de claseDecoradores de propiedadesAtributos privadosRepaso: gestor de cuentas bancarias6Encapsulamiento
Miembros públicos, protegidos y privadosModificadores de accesoOcultación de informaciónDecoradores de propiedades avanzadosRepaso: sistema de registros de estudiantes12Proyecto: Gestión de biblioteca
Descripción general del proyectoClases de libros y usuariosSistema de préstamosFuncionalidad de búsquedaInterfaz de administraciónPruebas e integraciónPractica por tu cuenta: Compilador de Python online