class Componente: pass class Componente: def agregarHijo(self, hijo): raise NotImplementedError("No es posible agregar un sub-elemento a este objeto.") def getDescripcionJerarquia(self): raise NotImplementedError("No se ha definido el comportamiento para esta clase.") def obtenerHijo(self): raise NotImplementedError("No es posible obtener un sub-elemento de este objeto.") def quitarHijo(self): raise NotImplementedError("No es posible quitar un sub-elemento de este objeto.") class CompuestoCatalogo(Componente): def __init__(self): self.agrupaArtDestacados = None self.componentes = [] self.disenoGrafico = None self.fechaCreacion = None self.fechaFin = None self.fechaInicio = None self.nivel = None self.nombre = None def agregarHijo(self, hijo): if not isinstance(hijo, Componente): raise TypeError("El elemento suministrado no es válido.") self.componentes.append(hijo) def getDescripcionJerarquia(self): nombres = [] for hijo in self.componentes: nombres.append(hijo.getDescripcionJerarquia()) return [self.nombre, nombres] class Articulo(Componente): def __init__(self): self.activo = None self.codigo = None self.titulo = None def getDescripcionJerarquia(self): return self.nombre class Musica(Articulo): def __init__(self): self.artista = None self.discografica = None def getDescripcionJerarquia(self): return self.nombre + " (" + self.artista + ")" class JuegoVideo(Articulo): def __init__(self): self.empresa = None self.plataforma = None class Libro(Articulo): def __init__(self): self.isbn = None self.autor = None def getDescripcionJerarquia(self): return self.nombre + " - " + self.autor class Pelicula(Articulo): def __init__(self): self.reparto = [] class GestorCatalogo: def __init__(self, catalogo): self.catalogo = catalogo def listarCatalogo(self): return self.catalogo.getDescripcionJerarquia() def crearLibro1(): l = Libro() l.nombre = "La sombra del viento" l.autor = "Zafón, Carlos" return l def crearLibro2(): l = Libro() l.nombre = "El lobo estepario" l.autor = "Hesse, Hermann" return l def crearLibrosClasicos(): l = CompuestoCatalogo() l.nombre = "Clásicos" l.agregarHijo(crearLibro1()) l.agregarHijo(crearLibro2()) return l def crearLibrosAutoayuda(): l = CompuestoCatalogo() l.nombre = "Autoayuda" return l def crearBiblioteca(): l = CompuestoCatalogo() l.nombre = "Libros" l.agregarHijo(crearLibrosClasicos()) l.agregarHijo(crearLibrosAutoayuda()) return l def crearDisco1(): m = Musica() m.nombre = "Symphonicity" m.artista = "Sting" return m def crearMusica(): m = CompuestoCatalogo() m.nombre = "Musica" m.agregarHijo(crearDisco1()) return m def crearCatalogoTotal(): c = CompuestoCatalogo() c.nombre = "Mi catalogo" c.agregarHijo(crearMusica()) c.agregarHijo(crearBiblioteca()) return c def iniciar(): # c = crearLibro1() # c = crearLibrosClasicos() # c = crearBiblioteca() # c = crearDisco1() # c = crearMusica() c = crearCatalogoTotal() g = GestorCatalogo(c) print (g.listarCatalogo()) iniciar()
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question