Beispiele zu "Intertype-Deklaration"

Beispiele zu "Intertype-Deklaration"

Eine Variable oder Methode in einer Klasse vergessen und sie können/dürfen die Klasse nicth mehr ändern? Kein Problem, mittels Intertype-Deklaration können Sie das nachholen.

Erweiterung bestehender Klassen

In 1Lotto findet sich die Lotto-Lösung aus dem vorigen Kapitel wieder, das nachträglich im ZusatzZahlAspect um zusätzliche Methoden und Attribute bereichert wird. Über die Ziehung-Klasse kann die Ziehung gestartet werden. Nicht wundern, wenn ein LogFactor5-Fenster hochkommt -- dies kann über die log4j.properties wieder geändert werden.

2LottoAbgeleitet ist ein Beispiel, wie man eine bestehende Lösung über Unterklassenbildung erweitert. In vielen Fällen ist dieser Ansatz gegenüber Intertype-Deklaration vorzuziehen, in Kapitel 6.1.4 "Für und Wider" finden Sie aber auch Gründe, dies nicht zu tun.

Noch ein Beispiel: Persistierung

In 3KontoPersistent wird wieder das Konto-Beispiel aufgegriffen, dieses Mal um einen PersistenceAspect ergänzt, der für die dauerhafte Ablage sorgt und dazu mittels Castor die Daten als XML ablegt (die benötigten Bibliotheken finden Sie im lib-Verzeichnis). Damit die Tests in AllTests fehlerfrei ablaufen können, sollte ein Konto-Verzeichnis vorhanden sein.

Übersicht über Intertype-Deklarationen / Zugriffskontrolle

Als Beispiel für die verschiedenen Erweiterungsmöglichkeiten wie konkrete oder abstrakte Methoden dient das Lotto-Beispiel in 4LottoUebersicht.

Konflikt-Situationen

Den BibBrotherAspect und HeinzAspect zur Demonstration der Konflikt-Situationen aus Kapitel 6.5 finden Sien in 5Demo.

Eltern adoptieren

In 6KontoComparable befindet sich das Beispiel zu "declare parents". Her wird die KontoKlasse um die Comparable-Implementierung ergänzt. Über AllTests können die Tests gestartet werden.

Interfaces implementieren

Persistenz-Lösung über Interfaces

In 7KontoPersistent finden sie das Konto-Beispiel mit Persistence-Interface und der Default-Implementierung in Persistence-Aspect. Um die Testfälle in AllTets zu starten, sollten Sie vorher noch ein Konto-Verzeichnis anlegen. Dieses Verzeichnis wird von der Default-Implementierung zur Ablage der Konto-Daten benötigt.

Konflikt-Potential

Was passiert, wenn sich verschieden Default-Implementierungen widersprechen? Diese Frage wird in 8Maultier anhand des Pferd- und Esel-Interface untersucht. Wenn Sie wissen wollen, weche gibLuut()-Methode das Maultier von sich gibt, starten Sie einfach die Maultier-Klasse. Und was macht das Kamel?

Deklaration der Rangliste

Wie lässt sich die Reihenfolge konkurrierender Advices festlegen? Mittels der "declare precedence"-Anweisung, die in 9Rabatt zum Zuge kommt. Um festzustellen, ob die Reihenfolge tatsächlich richtig eingehalten wird, starten Sie einfach die RechnungTest-Klasse.

Aufzählungstypen (Enums)

Für das Enum-Projekt benötigen Sie mindestens Java 5, de es für die Realisierung von Alarmstufen Enums verwendet. Starten können Sie das Beispiel über die Main-Klasse.

Statische Querschnittsbelange

Eigene Compiler-Meldungen

Wie man eigene Warnungen und Fehlermeldungen definieren kann, finde Sie im aQM-Verzeichnis.

Softening von Excptions

In bHistory finden Sie als Beispiel eine kleine History-Klasse zum Protokollieren von Ereignissen. Zum Testen dient der HistoryTest.


letzte Änderung: 5. August 2005