- siehe src/casino/KontoAspect.aj
- siehe src/casino/LogAspect.aj:
pointcut handleExceptions() :
handler(Exception+);
before() : handleExceptions() {
Signature sig = thisJoinPoint.getSignature();
log.warn(sig + " in " + thisJoinPoint.getThis());
}
after() : call(public RuntimeException+.new(..)) {
Signature sig = thisJoinPoint.getSignature();
log.error(sig.getDeclaringTypeName() + " aufgetreten in "
+ thisJoinPoint.getSourceLocation());
}
- siehe src/casino/KontoAspect.aj:
after(Konto kto) :
set(private int Konto.kontostand)
&& this(kto) {
try {
kto.store();
} catch (IOException e) {
System.err.println("kann Konto " + kto + " nicht abspeichern");
}
}
- siehe src/casino/Croupier.java und Player.java; für den Einsatz
gibt es eine eigene Klasse in src/casino/Einsatz.java,
die den Einsatz für "Pair" (und andere Felder) entgegennimmt. Zum
Testen einfach die Croupier-Klasse starten.
- Die Ergebnisse sind dabei recht unterschiedlich (klar, es ist ein
Glücksspiel). Rein statistisch gesehen liegen die Chancen für
Pair bei 48,6%, d.h. die Bank gewinnt öfters.
- Wenn die Chancen für Pair bei 48,6% liegen, müsste bei
100 Würfen 49 mal Pair erscheinen (siehe Testmethode
"testStatisticOfPair()" in test/casino/RouletteTest.java)
- siehe test/casino/test/TestAspect.aj:
static int zufall = 0;
int around(int n) :
call(public int java.util.Random.nextInt(int))
&& args(n)
&& within(casino.Roulette) {
return zufall++ % n;
}
- nach 854 Spielen ist der Spieler pleite, siehe
testBankrott()-Methode in test/casino/PlayerTest.java
- Jetzt können Sie zwar keine Test-Klassen mehr starten,
dafür ist aber beim Start von Croupier.main() wieder alles dem
Zufall überlassen.
- siehe test/casino/test/Testing.java; zum Testen die
Anwendung mit der Option "-Dtesting=true" aufrufen oder in Eclipse in
der Run-Konfiguration (erreichbar über "Run -> Run...") diese
Option als "VM arguements" (zu finden unter dem Reiter "Arguments")
angeben.