Führen Sie einen "AbstractLoggingAspect" ein, der über
einen abstrakten Pointcut "logPoints" das Logging übernimmt.
Leiten Sie "PlayerLogging" davon ab, um den Einsatz des Spielers sowie
den erzielten Gewinn zu protokollieren.
Tipp:
Entfernen Sie die beiden Aspekte "SimplePlayerAspect" und
"RiskyPlayerAspect" wieder aus dem Projekt, da sie die Methode
"getEinsatz()" u.U. austauschen -- damit wird aber die Original-Methode
nicht mehr aufgerufen und ein Pointcut darauf käme nicht zum
Einsatz.
Neben dem Joinpoint soll auch der Rückgabewert und die
übergebenen Parameter ausgegeben werden. Passen Sie
AbstractLoggingAspect entsprechend an.
Leiten Sie einen weiteren Aspekt "RouletteLogging" ab, der
über jeden Kugel-Wurf Buch führt.
Damit für die Log-Aspekte unterschiedliche Logger verwendet
werden können, fügen Sie in AbstractLoggingAspect eine
abstrakte Methode "getLogger()" ein, die von den abgeleiteten Aspekten
bereitgestellt werden muss.
Erzeugen Sie zwei Spieler mit unterschiedlichen Spielstrategien
und starten Sie sie jeweils in einem eigenen Thread.
Messen Sie, wie oft jeder Spieler gewonnen hat (d.h. seinen
Einsatz erhöhen konnte) und wie oft er verloren hat. Geben Sie
diese Information sowie den Gesamt-Gewinn bzw. -Verlust am Ende aus.