SOTE1­2016­10­07.notebook October 07, 2016 SOTE 1 2016­10­07 1 SOTE1­2016­10­07.notebook October 07, 2016 Java­Klasse bestehen aus • Package siehe nächste Seite • Import • Attribute (Instanz, Klassen) • Methoden (Instanz, Klassen) • Konstruktor(en) • Innere Klasse • Dokumentation: JavaDocs (mit /** ... */ und mit @), // 2 SOTE1­2016­10­07.notebook Sinn von Packages • Eindeutigkeit von Klassen • Übersichtlichkeit, Struktur • Kapselung von Komponenten > Wiederbarkeit > Austauschbarkeit > Testbarkeit > Sicherheit October 07, 2016 Kapselung = Einschränkung der Zugriffsrechte • Block • Methode • Klasse • Package • NICHT (!): Bibliotheken / Jars • Künftig (ab Java 9?): Super­Packages Zentrales Architektur­Paradigma (gute Architektur) weak coupling - strong cohesion 3 SOTE1­2016­10­07.notebook October 07, 2016 Innere Klassen 1. Member Class (Mitgliedsklassen) 2. Lokalen inneren Klassen 3. Anonymen inneren Klassen 4 SOTE1­2016­10­07.notebook October 07, 2016 ad 1) Member Class Instanzierung Innere Klassen können auch private sein. Dann müssen sie innerhalb der Klasse instanziert werden. 5 SOTE1­2016­10­07.notebook October 07, 2016 ad 2) Lokale innere Klassen Lokale innere Klassen werden nur innerhalb(!) von Methoden deklariert und auch nur dort instanziert bzw. verwendet. Lokale innere Klassen haben keinen public / private Modifier. Lokale innere Klassen können bis Java 7 einschließlich nur auf final Attribute der umgebenden Methode zugreifen. geht erst ab Java 8 ohne "final" 6 SOTE1­2016­10­07.notebook October 07, 2016 ad 3) Anonyme innere Klassen JButton button = new JButton(); button.addEventListener(new EventListener(){ public onEvent(...){ ... } }); Das Arbeiten mit anonymen inneren Klassen setzt Interfaces voraus. 7 SOTE1­2016­10­07.notebook October 07, 2016 Exkurs Interfaces Interfaces dienen dazu, Klassen / Komponenten einfacher austauschen ("weak coupling") zu können. Interfaces sind "Versprechen", dass die implementierenden Klassen die Methoden des Interfaces implementieren. 8