oop/2026-05-28/baumstein.py (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
from abc import ABC, abstractmethod
from enum import Enum
class Baustein(ABC):
def __init__(self, farbe, breite, hoehe):
self.farbe = farbe
self.breite = breite
self.hoehe = hoehe
def beschreibung(self):
print(f"ich bin ein stein(f{self.farbe}b{self.breite}h{self.hoehe})")
@abstractmethod
def verbinden():
pass
class C2x4Stein(Baustein):
def __init__(self, farbe):
super().__init__(farbe, 4, 1)
def verbinden(self):
print("2x4")
class Fliese(Baustein):
def __init__(self, farbe, breite):
super().__init__(farbe, breite, 0.5)
def verbinden(self):
print("oben nicht aber flach")
class Platte(Baustein):
def __init__(self, farbe, breite):
super().__init__(farbe, breite, 0.5)
def verbinden():
print("oben aber flach")
def zeige_baustein_info(baustein: Baustein):
baustein.beschreibung()
baustein.verbinden()
meinstein = C2x4Stein("gelb")
meinepfließe = Fliese("grün", 3)
zeige_baustein_info(meinstein)
zeige_baustein_info(meinepfließe)
class Bausteintyp(Enum):
BRICK2X4 = 0
FLIESE = 1
PLATTE = 2
class BausteinBuilder(Baustein):
bausteintyp = None
farbe: str
breite: int
hoehe: int
def set_brick(self, braustein):
self.baustein = braustein
return self
def set_farbe(self, farbe):
self.farbe = farbe
return self
def set_breite(self, breite):
self.breite = breite
return self
def set_hoehe(self, breite):
self.hoehe = breite
return self
def build(self):
if self.bausteintyp == Bausteintyp.BRICK2X4:
return C2x4Stein(self.farbe)
if self.bausteintyp == Bausteintyp.FLIESE:
return Fliese(self.farbe, self.breite)
if self.bausteintyp == Bausteintyp.PLATTE:
return Fliese(self.farbe, self.breite)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = (
BausteinBuilder.set_brick(Bausteintyp.PLATTE)
.set_farbe("hi")
.set_breite(5)
.set_hoehe(3.6)
.build()
)
|