Intertype-Deklaration

Übungen zu Kapitel 6

  1. Nehmen Sie die load()- und store()-Methode aus der Konto-Klasse heraus und lagern ihn in einen PersistenceAspect aus.
  2. Anforderungen an die Spieler-Klasse sind, dass sie einen Einsatz abgeben kann ("getEinsatz()") und dafür eventuell einen Gewinn erhält ("setGewinn()"). Formulieren Sie diese Forderungen in Form eines Interfaces "RoulettePlayer" und liefern eine Default-Implementierung dafür mit. Lassen Sie die Klasse "Player" dieses Interface implementieren..
  3. Legen Sie eine Klasse "GenericPlayer" an, die ebenfalls das RoulettePlayer-Interface implentiert und die nötigen Konstruktoren bereitstellt. Machen Sie diese Klasse über "declare parents" zur Oberklasse von "Player". Rufen Sie in Player die Konstruktoren der Oberklasse auf.
  4. Führen Sie einen "SimplePlayerAspect" ein, der die Implementierung von getEinsatz() austauscht - es sollen immer 20 Chips auf "Impair" (ungerade Zahlen) gesetzt werden.
  5. Ein weiterer Aspekt "RiskyPlayerAspect" tauscht ebenfalls die getEinsatz()-Methode aus und setzt immer 10 Chips auf die Nummer 13. Was müssen Sie tun, damit dieser Aspekt den "SimplePlayerAspect" verdrängt.
  6. Manche Spieler verdoppeln Ihren Einsatz, wenn Sie verloren haben, solange, bis Sie gewinnen. Dann fangen Sie wieder von vorne an. Testen Sie auch diese Strategie. Beachten Sie dabei, dass der Höchsteinsatz 500 Cips beträgt.
  7. Haben Sie noch die load()- und store()-Methode des PersistenceAspects im Einsatz? Entfernen Sie die Exception, die diese Methoden auslösen können. Fangen Sie sie jetzt über eine "declare soft"-Anweisung ab.

    hier geht es zu den Lösungen...


letzte Änderung: 18. Januar 2005 von Oli B.