Für ein Autohaus ist eine Klasse Auto zu entwickeln. Folgende Datenfelder sind bei einem Auto zu verwalten:
Ein Objekt vom Typ Auto soll mit folgender Codezeile erzeugt werden können:
a = Auto(hersteller="Ford", laufleistung=125000, preis=7999.99, farbe="silber metallic", unfallwagen=False, kraftstoff="Diesel", ps=101.0)
Der Aufruf a.ausgabe()
sollte in etwa folgendes Ergebnis ausgeben:
Hersteller: Ford Preis: 7999.99 EUR Motor: 101.0 PS (Diesel) KM-Stand: 125000 km Farbe: silber metallic unfallfrei
Der Zusatz “unfallfrei” soll nur ausgegeben werden, wenn das Datenfeld “Unfallwagen” den Wert false hat. Entwickeln Sie diese Klasse Auto und testen Sie diese mit den obigen Codezeilen.
Kreis |
radius: double farbe: string |
__init__(radius:double) get_radius(): double berechne_flaeche(): double berechne_umfang(): double |
In Python gibt es keinen vordefinierten Datentyp für Brüche. Mit der Klasse Bruch soll diese Lücke geschlossen werden.
Wir beginnen mit dem folgenden Klassendiagramm zur Klasse Bruch:
Bruch |
zaehler: int nenner: int |
Bruch(z:int, n:int) erweitern(k: int) kuerzen(k: int) |
(a) Entwickle eine geeignete Implementierung zu dieser Klasse, so dass Python-Dialoge der folgenden Art möglich werden:
>>> b = Bruch(4, 6) >>> b.erweitern(3) >>> b.zaehler 12 >>> b.nenner 18 >>> b.kuerzen(2) >>> b.zaehler 6.0 >>> b.nenner 9.0
(b) (eher schwierig) Ergänze die Klasse Bruch um eine Operation
vollstaendigKuerzen
. Entwickle auch dazu eine geeignete Implementierung.
>>> b.vollstaendigKuerzen() >>> b.zaehler 2.0 >>> b.nenner 3.0
Ein Zähler ist ein Gerät (Objekt), mit dem man hochzählen kann, und den man gezielt wieder auf Null setzen kann. Man benutzt solche Geräte z.B. bei Verkehrszählungen.
(a) Modelliere eine Klasse Zaehler, mit der man Objekte erzeugen kann, die sich wie Zähler in der Wirklichkeit verhalten. Berücksichtige vorerst noch nicht, dass es für die Zahl eine Obergrenze gibt. Stell die modellierte Klasse mit einem Klassendiagramm dar. Implementiere und teste anschließend die entwickelte Klasse.
(b) Wenn man eine Uhr simulieren möchte, dann benötigt man einen Sekunden- bzw. Minutenzähler, der so zählt:
0, 1, 2, 3, ..., 58, 59, 0, 1, 2, 3, ..., 58, 59, 0, 1, 2, ...
Ein Stundenzähler zählt entsprechend:
0, 1, 2, 3, ..., 23, 0, 1, 2, 3, ..., 23, 0, 1, 2, ...
Modelliere und implementiere auch für Zählsituationen mit einer Obergrenze eine geeignete Klasse.
In der Bibel steht, dass Adam und Eva die ersten Menschen auf der Erde waren und von Gott geschaffen wurden.
Du bist nun in der Rolle von Gott. Erstelle eine Methode god(), die zwei Menschen Adam und Eva zurückliefert. Adam ist vom Typ Man und Eva vom Typ Woman. Sowohl Man als auch Woman sind von Human abgeleitet sind.
Welche Ausgabe erzeugt das folgende Programm, wenn an der Stelle BLOCK_1234 jeweils Block 1, 2, 3 oder 4 eingesetzt wird?
Führe das Programm nicht aus, sondern überlege, wie die Ausgabe lautet.
class A: def m1(self): return "m1 von A " def m2(self): return "m2 von A " def m3(self): return "m3 von A " class B(A): def m1(self): return "m1 von B " class C(B): def m3(self): return "m3 von C " ###### a = A() b = B() c = C() a2 = A() q = '' BLOCK_1234 print(q)
q += b.m1() # Block 1 q += c.m2() q += a.m3()
q += c.m1() # Block 2 q += c.m2() q += c.m3()
q += a.m1() # Block 3 q += b.m2() q += c.m3()
q += a2.m1() # Block 4 q += a2.m2() q += a2.m3()
Erstelle eine Klasse Ghost. Sie wird ohne Parameter instanziiert und besitzt das Attribut color, das zu Beginn zufällig auf „weiß“, „gelb“ oder „rot“ gesetzt wird.
Erstelle für eine Bank eine Klasse User mit den folgenden Methoden:
Additional Notes:
class User: 'Ein Kunde mit einem Konto.' # Tests jeff = User(name='Jeff', balance=70, checking_account=True) joe = User(name='Joe', balance=70, checking_account=False) jeff.withdraw(2) assert jeff.balance == 68 joe.check(jeff, 50) assert joe.balance == 120 assert jeff.balance == 18 try: jeff.check(joe, 80) # raises ValueError assert False, "Value Error missing" except ValueError: assert True joe.checking_account = True # Enables checking for Joe jeff.check(joe, 80) jeff.balance == 98 joe.balance == 40 try: joe.check(jeff, 100) # Raises a ValueError assert False except ValueError: assert True jeff.add_cash(20.00) jeff.balance == 118 print("Alles Tests bestanden")