JAVATM–COACH Bonin · PDF file 2010. 1. 8. · Bonin Java-Coach Der...

Click here to load reader

  • date post

    29-Mar-2021
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of JAVATM–COACH Bonin · PDF file 2010. 1. 8. · Bonin Java-Coach Der...

  • Bonin

    Ja va

    -C oa

    chDer JAVATM–COACH

    — Modellieren mit UML, Programmieren mit JavaTM 2

    Plattform (J2SE & J2EE), Dokumentieren mit XHTML —

    Hinrich E. G. Bonin1

    5-Oct-1997 – 30-May-2005

    1Prof. Dr. rer. publ. Dipl.-Ing. Dipl.-Wirtsch.-Ing.Hinrich E. G. Bonin, Uni- versity of Applied Sciences, Fachhochschule Nordostniedersachsen, Volgers- hall 1, D-21339 Lüneburg, Germany.

    Anwendungsentwicklung

    mailto:[email protected]

  • Bonin

    Ja va

    -C oa

    ch

    2

    Anwendungsentwicklung

    mailto:[email protected]

  • Bonin

    Ja va

    -C oa

    chInhaltsverzeichnis 1 Vorspann 17

    1.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . 17 1.2 Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.3 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    2 JavaTM -Training — Mehr als Web-Seiten entwickeln 25 2.1 J2SE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.2 J2EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3 APIs & Standarddienste . . . . . . . . . . . . . . . . . . 31

    3 Eine Welt voller Objekte 33 3.1 Denkwelt der Objekt-Orientierung . . . . . . . . . . . . 34 3.2 Wurzeln der Objekt-Orientierung . . . . . . . . . . . . . 38

    3.2.1 Polymorphismus . . . . . . . . . . . . . . . . . 38 3.2.2 Daten-gesteuerte Programmierung . . . . . . . . 39 3.2.3 Muster-gesteuerter Prozeduraufruf . . . . . . . . 40

    3.3 Ausrichtung objekt-orientierter Sprachen . . . . . . . . . 41

    4 Modellieren mit UML 49 4.1 UML-Boxologie . . . . . . . . . . . . . . . . . . . . . 50 4.2 Basiselement: Klasse . . . . . . . . . . . . . . . . . . . 52

    4.2.1 Beschreibung . . . . . . . . . . . . . . . . . . . 52 4.2.2 Paket von Elementen . . . . . . . . . . . . . . . 56

    4.3 Beziehungselement: Assoziation . . . . . . . . . . . . . 57 4.3.1 Beschreibung . . . . . . . . . . . . . . . . . . . 57 4.3.2 Multiplizität . . . . . . . . . . . . . . . . . . . 58 4.3.3 Referentielle Integrität . . . . . . . . . . . . . . 61

    3

    Anwendungsentwicklung

    mailto:[email protected]

  • Bonin

    Ja va

    -C oa

    ch

    4 INHALTSVERZEICHNIS

    4.3.4 Schlüsselangabe . . . . . . . . . . . . . . . . . 61 4.4 Beziehungselemente: Ganzes⇔ Teile . . . . . . . . . . 61

    4.4.1 Aggregation . . . . . . . . . . . . . . . . . . . . 61 4.4.2 Komposition . . . . . . . . . . . . . . . . . . . 63

    4.5 Beziehungselement: Vererbung . . . . . . . . . . . . . . 64 4.5.1 Vererbung . . . . . . . . . . . . . . . . . . . . . 64 4.5.2 Randbedingungen (Constraints) . . . . . . . . . 67

    4.6 Pragmatische UML-Namenskonventionen . . . . . . . . 68 4.7 OMG & UML . . . . . . . . . . . . . . . . . . . . . . . 69

    5 JavaTM ≈mobiles Code-System 71 5.1 JavaTM im Netz . . . . . . . . . . . . . . . . . . . . . . 72 5.2 Bytecode: Portabilität⇔ Effizienz . . . . . . . . . . . . 75 5.3 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . 77

    5.3.1 Prüfung des Bytecodes (Bytecode Verifier) . . . . 77 5.3.2 Traue Niemandem! . . . . . . . . . . . . . . . . 77

    5.4 The Road To Java . . . . . . . . . . . . . . . . . . . . . 79

    6 Konstrukte (Bausteine zum Programmieren) 83 6.1 Einige Java-Kostproben . . . . . . . . . . . . . . . . . . 84

    6.1.1 Kostprobe HelloWorld . . . . . . . . . . . . 84 6.1.2 Kostprobe Foo — Parameterübergabe der Ap-

    plikation . . . . . . . . . . . . . . . . . . . . . 90 6.1.3 Kostprobe FahrzeugProg— Konstruktor . . 94 6.1.4 Kostprobe Counter — Eingabe von Konsole . 107 6.1.5 Kostprobe Essen — Eingabe von Konsole . . . 109 6.1.6 Kostprobe Ei & Huhn — Compilieren . . . . . 113 6.1.7 Kostprobe MyNetProg — Internetzugriff . . . 117 6.1.8 Kostprobe ImpulseGenerator— Thread . . 127 6.1.9 Kostprobe ActionApplet— GUI . . . . . . 128

    6.2 Applet-Einbindung in ein Dokument . . . . . . . . . . . 132 6.2.1 Applet⇔ Applikaton . . . . . . . . . . . . . . . 132 6.2.2 HTML-Marken: und . 134 6.2.3 Beispiel PruefeApplet.html . . . . . . . . 137 6.2.4 Beispiel CounterApplet.html . . . . . . . 141 6.2.5 Beispiel MyProgressBar.html . . . . . . . 145

    6.3 Syntax & Semantik & Pragmatik . . . . . . . . . . . . . 148

    Anwendungsentwicklung

    mailto:[email protected]

  • Bonin

    Ja va

    -C oa

    ch

    INHALTSVERZEICHNIS 5

    6.3.1 Attribute für Klasse, Schnittstelle, Variable und Methode . . . . . . . . . . . . . . . . . . . . . 149

    6.3.2 Erreichbarkeit bei Klasse, Schnittstelle, Varia- ble und Methode . . . . . . . . . . . . . . . . . 154

    6.3.3 Operator — Priorität und Assoziativität . . . . . 157

    7 Konstruktionen (Analyse und Synthese) 159 7.1 Nebenläufigkeit (Multithreading) . . . . . . . . . . . . . 161

    7.1.1 Unterbrechung (sleep) . . . . . . . . . . . . . 167 7.1.2 Synchronisation (wait(), notify(), syn-

    chronized, join) . . . . . . . . . . . . . . . 167 7.2 Ereignisbehandlung (Delegationsmodell) . . . . . . . . 168

    7.2.1 ActionListener— Beispiel SetFarbe . . 171 7.2.2 Event→Listener→Method . . . . . . . . . . . . 176 7.2.3 KeyListener — Beispiel ZeigeTasten-

    Wert . . . . . . . . . . . . . . . . . . . . . . . 177 7.3 Persistente Objekte . . . . . . . . . . . . . . . . . . . . 182

    7.3.1 Serialization — Beispiel PersButton . . . . . 186 7.3.2 Rekonstruktion — Beispiel UseButton . . . . 188 7.3.3 JAR (Java Archiv) . . . . . . . . . . . . . . . . 189

    7.4 Geschachtelte Klassen (Inner Classes) . . . . . . . . . . 191 7.4.1 Beispiel Aussen . . . . . . . . . . . . . . . . . 206 7.4.2 Beispiel BlinkLicht . . . . . . . . . . . . . 208

    7.5 Interna einer Klasse (Reflection) . . . . . . . . . . . . . 215 7.6 Referenzen & Cloning . . . . . . . . . . . . . . . . . . 223 7.7 Integration eines ODBMS — Beispiel FastObjects . 228

    7.7.1 Transaktions-Modell . . . . . . . . . . . . . . . 228 7.7.2 Speichern von Objekten mittels Namen . . . . . 229 7.7.3 Referenzierung & Persistenz . . . . . . . . . . . 230 7.7.4 Collections . . . . . . . . . . . . . . . . . . . . 231 7.7.5 Extent . . . . . . . . . . . . . . . . . . . . . . . 232 7.7.6 Transientes Objekt & Constraints . . . . . . . . 233 7.7.7 Objekt Resolution . . . . . . . . . . . . . . . . 234 7.7.8 Abfragesprache (OQL) . . . . . . . . . . . . . . 236 7.7.9 Enhancer ptj . . . . . . . . . . . . . . . . . . 238 7.7.10 Beispiel: Bind, Lookup und Delete . . . . . 239

    7.8 Zusicherung über Werte . . . . . . . . . . . . . . . . . . 246 7.9 Applikation mit großem Speicherbedarf . . . . . . . . . 249

    Anwendungsentwicklung

    mailto:[email protected]

  • Bonin

    Ja va

    -C oa

    ch

    6 INHALTSVERZEICHNIS

    7.10 Verteilte Objekte . . . . . . . . . . . . . . . . . . . . . 253 7.10.1 Beispiel Stub & Skeleton . . . . . . . . . . 255 7.10.2 Beispiel RMI . . . . . . . . . . . . . . . . . . . 264

    7.11 XML-Daten aggregieren . . . . . . . . . . . . . . . . . 281 7.12 Komponentenmodelle . . . . . . . . . . . . . . . . . . . 300

    7.12.1 JavaBeansTM . . . . . . . . . . . . . . . . . . . 301 7.12.2 EJB (Enterprise JavaBeansTM ) . . . . . . . . . 307

    8 Konstruktionsempfehlungen 319 8.1 Einsatz einer teamfähigen IDE . . . . . . . . . . . . . . 321

    8.1.1 Eclipse — Überblick . . . . . . . . . . . . . . . 322 8.1.2 Eclipse — Edieren . . . . . . . . . . . . . . . . 324 8.1.3 Eclipse — Fehleranalyse . . . . . . . . . . . . . 325 8.1.4 Eclipse — CVS (Concurrent Versions System) . 326 8.1.5 Eclipse — Refactoring . . . . . . . . . . . . . . 330

    8.2 Einsatz von speziellen Werkzeugen . . . . . . . . . . . . 332 8.2.1 JUnit — Unit Tests . . . . . . . . . . . . . . . . 332 8.2.2 Ant — Build Tool . . . . . . . . . . . . . . . . . 337 8.2.3 Logging — java.util.logging . . . . . . 341

    8.3 Konventionen zur Transparenz . . . . . . . . . . . . . . 345 8.3.1 Code-Konventionen . . . . . . . . . . . . . . . 345 8.3.2 Tipps zur Kodierung . . . . . . . . . . . . . . . 351 8.3.3 Rahmen für Geschäftsobjekte und -prozesse . . . 369

    9 Dokumentieren mit HTML 371 9.1 XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . 372 9.2 Cascading Style Sheets (CSS) . . . . . . . . . . . . . . . 376

    9.2.1 CSS-Konstrukte . . . . . . . . . . . . . . . . . 376 9.2.2 HTML-Dokument⇔ CSS . . . . . . . . . . . . 377 9.2.3 Gruppierung & Vererbung . . . . . . . . . . . . 378 9.2.4 Selektor: class & id . . . . . . . . . . . . . . 380 9.2.5 Kontextabhängige Selektoren . . . . . . . . . . 381 9.2.6 Kommentare im CSS . . . . . . . . . . . . . . . 382 9.2.7 Pseudo-Konstrukte (a:link,p:first-letter,

    usw.) . . . . . . . . . . . . . . . . . . . . . . . 382 9.2.8 Die Kascade & Konflikte . . . . . . . . . . . . . 383 9.2.9 CSS-Beispiel . . . . . . . . . . . . . . . . . . . 385

    Anwendungsentwicklung

    mailto:[email protected]

  • Bonin

    Ja va

    -C oa

    ch

    INHALTSVERZEICHNIS 7

    10 JavaTM — OO-Anspruch und OO-Wirklichkeit 391 10.1 OO-Paradigma — unvollständige Umsetzung . . . . . . 392 10.2 Strikte Objekt-Orientierung . . . . . . . . . . . . . . . . 393

    11 JavaTM N Plattform: Hoffnungen & Visionen 397

    A Übungen 399 A.1 Modellierung einer Stückliste . . . . . . . . . . . . . . . 399

    A.1.1 Klassendiagramm für die Montagesicht . . . . . 400 A.1.2 Diagrammerweiterung um den Montageplatz . . 400

    A.2 Klassendiagramm für mehr Transparenz . . . .