79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
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()
|