## Kapitel 16 – Eigene Objekte definieren


# Seite 205 – Eigene Objekte definieren
class Toaster:
    schaechte = 2
    farbe = "grün"
    anzahl_toasts = 0
    toast_zeit = 10

# Seite 206 – Die Funktion »__init__«
mein_toaster = Toaster()
mein_toaster.farbe = "rot"
mein_toaster.schaechte = 5

# Seite 207 – Die Funktion »__init__«
mein_toaster = Toaster(2,"rot")

# Seite 207 – Die Funktion »__init__«
def __init__(self,schaechte,farbe):
    self.farbe = farbe
    self.schaechte = schaechte
    self.anzahl_toasts = 0
    self.brot_zustand = 0
    self.toast_zeit = 10

# Seite 208 – Eigene Methoden definieren
class Toaster:
    def __init__(self,schaechte,farbe):
        self.schaechte = schaechte
        self.farbe = farbe
        self.anzahl_toasts = 0
        self.brot_zustand = 0
        self.toast_zeit = 10

# Seite 209 – Eigene Methoden definieren
	def toastReintun(self,anzahl):
		self.anzahl_toasts = self.anzahl_toasts + anzahl

# Seite 209 – Eigene Methoden definieren
toasty.toastReintun(2)

# Seite 209 – Eigene Methoden definieren
print(toasty.anzahl_toasts)

# Seite 209 – Eigene Methoden definieren
	def toastReintun(self,anzahl):
		if (self.anzahl_toasts + anzahl) > self.schaechte:
			return "Es ist nicht mehr genügend Platz dafür!"
		else:
			self.anzahl_toasts += anzahl
			return (str(anzahl)+" Toasts reingetan.")

# Seite 209 – Eigene Methoden definieren
print(toasty.toastReintun(2))

# Seite 209 – Eigene Methoden definieren
print(toasty.toastReintun(3))

# Seite 210 – Die Funktion »__str__«
print(toasty)

# Seite 210 – Die Funktion »__str__«
	def __str__(self):
		antwort = "Das Objekt ist ein Toaster. "
		antwort += "Die Farbe ist "+self.farbe+". "
		antwort += "Er hat "+str(self.schaechte)+" Schächte. "
		antwort += "Im Moment sind "+str(self.anzahl_toasts)+" Toasts drin. "
		return antwort

# Seite 210 – Die Funktion »__str__«
toasty = Toaster(3,"rot")
print(toasty)

# Seite 211 – Die Funktion »__str__«
	def toasten(self):
		if self.anzahl_toasts > 0:
			   zeit = self.toast_zeit
			   if zeit<=15:
					self.brot_zustand +=1
			   if zeit >15:
					self.brot_zustand +=2
			   if self.brot_zustand >3:
					self.brot_zustand = 3
			   zustand = ["ungetoastet", "leicht getoastet", "starkgetoastet","verbrannt"]
			   return (str(zeit)+" Sekunden vergangen, Toasten erledigt, dasBrot ist "+ zustand[self.brot_zustand])
		else:
			   return ("Kein Toast im Toaster!")

# Seite 211 – Die Funktion »__str__«
	def toastAuswerfen(self):
		zustand = ["ungetoastet", "leicht getoastet", "starkgetoastet","verbrannt"]
		info = str(self.anzahl_toasts)+" Mal Toast ausgeworfen. Zustand:"+zustand[self.brot_zustand]
		self.anzahl_toasts = 0
		self.brot_zustand = 0
		return info

# Seite 213 – Ableitung und Vererbung – ein Supertoaster
class SuperToaster(Toaster):

# Seite 213 – Ableitung und Vererbung – ein Supertoaster
class SuperToaster(Toaster):
  pass

# Seite 213 – Ableitung und Vererbung – ein Supertoaster
toasty = SuperToaster(3,"rot")
print(toasty)

# Seite 213 – Ableitung und Vererbung – ein Supertoaster
class SuperToaster(Toaster):
  temperatur = 300

# Seite 213 – Ableitung und Vererbung – ein Supertoaster
toasty = SuperToaster(3,"rot")
toasty.temperatur = 250

# Seite 214 – Ableitung und Vererbung – ein Supertoaster
	def temptoasten(self):
		if self.temperatur > 500:
			return "Alarm: Der Toaster ist zu heiß!"
		elif self.temperatur < 100:
			return "Das Brot wird nicht getoastet - zu kalt."
		else:
			return self.toasten()

# Seite 214 – Ableitung und Vererbung – ein Supertoaster
class SuperToaster(Toaster):
    def toasten(self):

