Javakurs für Anfänger - uni-muenchen.de · 2018. 2. 7. · UML (Unified Modeling Language):...
Transcript of Javakurs für Anfänger - uni-muenchen.de · 2018. 2. 7. · UML (Unified Modeling Language):...
Javakurs für Anfänger
Einheit 14:
Einführung in UML und Java API Dokumentation
Lorenz Schauer
Lehrstuhl für Mobile und Verteilte Systeme
1. Teil: Einführung in UML
Sequenzdiagramm
Klassendiagramm
Vererbung, Implementierung und Beziehungen
Beispiel
Heutige Agenda
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 2
Lernziele Einführung in UML Sequenz- und Klassendiagramme lesen und umsetzen können Mit der Java API Dokumentation arbeiten lernen
2. Teil: Die Java API Dokumentation
Überblick
Verwendung
Beispielklassen: String und Random
Praxis:
Klassendiagramm implementieren
Eingabe auf Zeit
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
Wir beschränken uns hier im weiteren Verlauf auf Sequenzdiagramme und Klassendiagramme zur Veranschaulichung der Eigenschaften, Verhalten und Zusammenhänge unserer Klassen
Teil1: Einführung in UML
08.02.2018 Javakurs 14: 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:
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 4
methodenname(Argumente)Oder: methodenname bzw. methodenname()
Statische_methodenname(Arg_name: Arg_typ)
obj_name: Typ obj_name: Typ
return bzw. return Ergebnis
Oder: :returntyp
eigeneMethode(Argumente)
Aktivitätsbalken
Beispiel aus der 2. Kursstunde:
UML-Sequenzdiagramme: Beispiel
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 5
Autohaus
fiatPunto:Auto
mercedes:Auto
main(args: String[])
<<return>> main
<<create>>
<<create>>
return
bremsen
bremsen
return
Beispiel aus der 2. Kursstunde:
UML – Klassendiagramme: Überblick
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 6
Auto
- name : String- preis : int
+ fahren (a: String, b: String ) + bremsen (): boolean
Klassenname
Attribute
Methoden
Sichtbarkeitsbereich:- private + public# protected
Methodenname Parametername: typ
Rückgabetyp
Attributname
Attributtyp
Autohaus
+ main(args: String[]) Statische Methode main(String[] args)
Darstellung der Vererbung:
UML – Klassendiagramme: Vererbung
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 7
Geometirsche2dFigur
Kreis Quadrat Rechteck
Tier{abstract}
Hund Katze Elefant
Darstellung der Implementierung:
UML – Klassendiagramme: Implementierung
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 8
<<Interface>>Auto
AutoImpl
+ bremsen()+ fahren()
+ bremsen()+ fahren()
UML – Klassendiagramme: Beziehungen (Assoziation)
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 9
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
UML – Klassendiagramme: Beispiel
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 10
Quelle: http://www.adolf-reichwein-schule.de/uploads/pics/UMLStack.png
Setzten Sie in Ihrem Eclipse-Projekt „Uebung14“ zunächst folgendes Klassendiagramm um:
Aufgabe zu UML
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 11
<<interface>>Iverwaltung
+ add(p: Person)+ remove(p : Person)+ clear()
VerwaltungImpl
- personenListe: ArrayList<Person>- verwalter: Verwalter
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
Verwalter
- position: String
+ Verwalter(name: String, vorname: String, alter: int)+ setPosition(pos: String)+ getPosition(): String
0…*
0…*
1
+ VerwaltungImpl(v: Verwalter)+ add(p: Person)+ remove(p : Person)+ clear()+ main(args: 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.
Aufgabe zu UML
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 12
Führen Sie nun die Aktionen gemäß des folgenden Sequenzdiagramms aus:
VerwaltungImpl
hans:Verwaltermain(args: String[])
<<return>> main
<<create>>
setPosition(„Verwalter“)
p1:Person
p2:Person
verwaltung: VerwaltungImplnew VerwaltungImpl(hans)
new Person(„Hannes“,“Markus“,33)
new Person(„Strass“,“Maria“,26)
add(p1)setVerwaltet(true)
add(p2)setVerwaltet(true)
remove(p1)setVerwaltet(false)
Teil 2: Kurze Einführung in die Java API-Dokumentation
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 13
Zu finden unter: http://docs.oracle.com/javase/8/docs/api/
Nutzen Sie die Java API-Dokumentation und machen Sie sich zusätzlich mit folgenden Java-Klassen vertraut: Java.time.Instant
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.
Aufgabe mit Java API Dokumentation
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 14
Sie haben nun die grundlegenden Elemente der objektorientierten Programmiersprache Java kennengelernt:
Klassen, Objekte, Variablen & Methoden
Zusammenspiel verschiedener Klassen und Objekte Abstraktion und Datenkapselung
Kontrollstrukturen
Statische und dynamische Arrays
Vererbung Subtyping, Typ-Casting, …
Abstrakte Klassen
Interfaces Anonyme innere Klassen
Polymorphismus
UML
Java API Dokumentation
Zusammenfassung
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 15
Fortführende Themen wären:
Exceptions
Generics
Weitere Datenstrukturen (verkettete) Listen, Stack, Schlangen (Queues), Hash-Tables, Bäume (Trees)
Frameworks Collection-Framework
Nebenläufigkeit Threads, Conditions, Synchronisation, Monitore
GUI-Programmierung mit Swing / JavaFX
Design-Pattern
Algorithmen Sortieren & Suchen, Rekursion, …
U.v.m.
Einfach am Ball bleiben und viel programmieren ;)
Den Java-Kurs für Fortgeschrittene im nächsten Semester besuchen…
Und jetzt…?
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 16
Vielen Dank
fürs Zuhören und Mitmachen!
Vielen Dank!
08.02.2018 Javakurs 14: UML und Java API - Lorenz Schauer 17