Javakurs für Anfänger Einheit 12: Einführung in UML und Java API Dokumentation Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme
Heutige Agenda 1. Teil: Einführung in UML Sequenzdiagramm Klassendiagramm Vererbung, Implementierung und Beziehungen Beispiel 2. Teil: Die Java API Dokumentation Überblick Verwendung Beispielklassen: String und Random Praxis: Klassendiagramm implementieren Eingabe auf Zeit Lernziele Einführung in UML Sequenz- und Klassendiagramme lesen und umsetzen können Mit der Java API Dokumentation arbeiten lernen 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 2
UML (Unified Modeling Language): Grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Software/Systeme Standardisiert nach ISO Vereint eine Menge an Diagrammen (für verschiedenste Zwecke) Klassen- Objekt- Sequenz- Aktivitäts- -Diagramm Teil1: Einführung in UML Wir beschränken uns hier im weiteren Verlauf auf Sequenzdiagramme und Klassendiagramme zur Veranschaulichung der Eigenschaften, Verhalten und Zusammenhänge unserer Klassen 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 3
UML-Sequenzdiagramme: Überblick Das Sequenzdiagramm: Ist ein Verhaltensdiagramm Beschreibt den Austausch von Nachrichten bzw. Methodenaufrufe zwischen Klassen und/oder Objekten Klassen/Objekte werden nebeneinander dargestellt Besitzen eine nach unten gerichtete Zeitlinie Objekte haben Namen und einen Typ Klassen haben nur den Klassennamen und reagieren auf (statische) Klassenmethoden Klassen/Objekte können einen Aktivitätsbalken besitzen, der die Methodenausführung beschreibt Gängige Interaktionen: obj_name: Typ obj_name: Typ Aktivitätsbalken methodenname(argumente) Oder: methodenname bzw. methodenname() Statische_methodenname(Arg_name: Arg_typ) eigenemethode(argumente) return bzw. return Ergebnis Oder: :returntyp 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 4
Beispiel aus der 2. Kursstunde: UML-Sequenzdiagramme: Beispiel main(args: String[]) Autohaus <<create>> <<create>> bremsen fiatpunto:auto mercedes:auto return bremsen return <<return>> main 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 5
UML Klassendiagramme: Überblick Beispiel aus der 2. Kursstunde: Attributname Attributtyp - name : String - preis : int Auto + fahren (a: String, b: String ) + bremsen (): boolean Klassenname Attribute Methoden Rückgabetyp Autohaus Sichtbarkeitsbereich: - private + public # protected Methodenname Parameter name: typ + main(args: String[]) Statische Methode main(string[] args) 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 6
Darstellung der Vererbung: UML Klassendiagramme: Vererbung Geometirsche2dFigur Kreis Quadrat Rechteck Tier {abstract} Hund Katze Elefant 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 7
UML Klassendiagramme: Implementierung Darstellung der Implementierung: <<Interface>> Auto + bremsen() + fahren() AutoImpl + bremsen() +fahren() 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 8
UML Klassendiagramme: Beziehungen (Assoziation) Quelle: https://homepages.thm.de/~hg11260/mat/uml.pdf Quelle: https://de.wikipedia.org/wiki/assoziation_(uml)#komposition Ein Gebäude besteht aus mindestens einem Raum. Ein Raum gehört genau zu einem bestimmten Gebäude. Stürzt das Gebäude ein, ist auch der Raum kaputt. (Gleiche Lebensdauer) Eine Vorlesung hat immer mind. 3 Studenten. Ein Student kann in keiner oder mehreren Vorlesungen sein. Studenten haben längere Lebensdauer als Vorlesung 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 9
UML Klassendiagramme: Beispiel Quelle: http://www.adolf-reichwein-schule.de/uploads/pics/umlstack.png 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 10
Aufgabe zu UML Setzten Sie in Ihrem Eclipse-Projekt Uebung12 zunächst folgendes Klassendiagramm um: <<interface>> Iverwaltung + add(p: Person) + remove(p : Person) + clear() VerwaltungImpl - personenliste: ArrayList<Person> - verwalter: Verwalter + VerwaltungImpl(v: Verwalter) + add(p: Person) + remove(p : Person) + clear() + main(args: String[]) 0 * 0 * 1 Person - name: String - vorname: String - alter: int - verwaltet: boolean + Person(name: String, vorname: String, alter: int) + getname(): String + getvorname(): String + getalter(): int + setverwaltet(b:boolean) + getverwaltet(): boolean - position: String Verwalter + Verwalter(name: String, vorname: String, alter: int) + setposition(pos: String) + getposition(): String add(): Fügt eine Person zur Liste hinzu. Das Flag verwaltet wird auf true gesetzt. remove(): Entfernt die entsprechende Person aus der Liste. Das Flag wird auf false gesetzt. clear(): Löscht alle Einträge aus der Liste. Setzt das Flag bei der gelöschten Person auf false. 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 11
Aufgabe zu UML Führen Sie nun die Aktionen gemäß des folgenden Sequenzdiagramms aus: VerwaltungImpl main(args: String[]) <<create>> hans:verwalter setposition( Verwalter ) new VerwaltungImpl(hans) new Person( Hannes, Markus,33) new Person( Strass, Maria,26) add(p1) verwaltung: VerwaltungImpl setverwaltet(true) p1:person p2:person add(p2) setverwaltet(true) remove(p1) setverwaltet(false) <<return>> main 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 12
Teil 2: Kurze Einführung in die Java API-Dokumentation Zu finden unter: http://docs.oracle.com/javase/8/docs/api/ 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 13
Nutzen Sie die Java API-Dokumentation und machen Sie sich zusätzlich mit folgenden Java-Klassen vertraut: Java.time.Instant Aufgabe mit Java API Dokumentation Java.time.Duration Nutzen Sie nun die beiden Klassen und schreiben Sie ein Programm Eingabetest in Ihrem Eclipse Projekt Uebung12 : Ein Dialogfeld (JOptionPane.showInputDialog) soll den Anwender auffordern den Text: Fischers Fritze fischt frische Fische einzugeben. Ihr Programm soll anschließend prüfen, ob der eingegebene Text mit dem Text Fischers Fritze fischt frische Fische genau übereinstimmt und wie lange der Anwender für die Eingabe gebraucht hat. Sie brauchen also 2 Zeitstempel (vor und nach der Eingabeaufforderung) Benutzen Sie hierfür die beiden Klassen Instant und Duration aus der Java API Falls die Eingabe korrekt war, soll ein entsprechender Text ausgegeben werden: Fehlerfrei! Zeit: <Benötigte Sekunden> Sekunden Falls die Eingabe nicht korrekt war, soll Leider falsch! ausgegeben werden. 21.01.2016 Javakurs 12: UML und Java API - Lorenz Schauer 14