from abc import ABC, abstractmethod # Klasse Medium class Medium(ABC): def __init__(self, titel, isbn, verlag): self.titel = titel self.isbn = isbn self.verlag = verlag @abstractmethod def info_ausgeben(self): print(f"Titel: {self.titel}") print(f"ISBN: {self.isbn}") print(f"Verlag: {self.verlag}") # Klasse Buch class Buch(Medium): def __init__(self, titel, isbn, verlag, autor, erscheinungsjahr): super().__init__(titel, isbn, verlag) self.erscheinungsjahr = erscheinungsjahr self.autor = autor def info_ausgeben(self): super().info_ausgeben() print(f"Autor: {self.autor}") print(f"Erscheinungsjahr: {self.erscheinungsjahr}") # Klasse Tageszeitung class Tageszeitung(Medium): def __init__(self, titel, isbn, verlag, erscheinungsdatum): super().__init__(titel, isbn, verlag) self.erscheinungsdatum = erscheinungsdatum def info_ausgeben(self): super().info_ausgeben() print(f"Erscheinungsdatum: {self.erscheinungsdatum}") # Klasse Magazin class Magazin(Medium): def __init__(self, titel, isbn, verlag, erscheinungsjahr, laufende_nummer): super().__init__(titel, isbn, verlag) self.erscheinungsjahr = erscheinungsjahr self._laufende_nummer = laufende_nummer @property def laufende_nummer(self): return self._laufende_nummer @laufende_nummer.setter def laufende_nummer(self, laufende_nummer): if laufende_nummer > 0: self._laufende_nummer = laufende_nummer else: self._laufende_nummer = 0 print("Laufende Nummer nicht positiv und wird auf 0 gesetzt.") def info_ausgeben(self): super().info_ausgeben() print(f"Erscheinungsjahr: {self.erscheinungsjahr}") print(f"Laufende Nummer: {self.laufende_nummer}") # Beispiel zur Verwendung der Klassen buch = Buch("Der Prozess", "978-3-123456-47-2", "Suhrkamp", "Franz Kafka", 1925) buch.info_ausgeben() print("\n-----\n") tageszeitung = Tageszeitung("Die Zeit", "978-3-123456-48-9", "Zeitverlag", "2023-10-01") tageszeitung.info_ausgeben() print("\n-----\n") magazin = Magazin("National Geographic", "978-3-123456-49-6", "National Geographic Society", 2023, 10) magazin.info_ausgeben()