Sie sind auf Seite 1von 3

Universität Bonn

Dr. Hassan Errami Institut für Informatik II


30.04.2020

Sommersemester 2020
Praktikum: Objektorientierte Softwareentwicklung
(BA-INF-025)
Aufgabenblatt 3
Zu bearbeiten bis: 09.05.2020

Schicken Sie bitte alle Ihre Lösungen per E-Mail an Ihren Tutor. Die Email-Adresse Ihres Tutors
finden Sie unter folgendem Link:
https://cg.cs.uni-bonn.de/de/lehre/ss-2020/oosepraktikum

Hinweise: Sie sollten, um die Punkte dieser Aufgaben zu erhalten, Ihre Lösungen Ihrem Tutor
präsentieren können.

Aufgabe 1 (JSON - Java Script Object Notation - 5 Punkte)


Mit Hilfe von passenden Bibliotheken können Objekte und Daten in Java und anderen Sprachen
in eine textuelle Repräsentation umgewandelt und gespeichert werden. In der anderen Richtung ist
auch eine Erzeugung von Objekten mittels der Textdateien möglich. Informieren Sie sich über das
JSON-Datenformat 1 . Erstellen Sie einen JSON String welcher ein Objekt repräsentiert. Das Objekt
hat:
• Eine Variable mit dem Namen name“ und dem Wert Hans Georg“.
” ”
• Eine Variable mit dem Namen alter“ und dem Wert 21.

• Eine Variable mit dem Namen konsolen“, welche ein Array hält mit 3 String-Elementen:

XBox“, PlayStation 3“ , PlayStation 2“
” ” ”
• Eine Variable mit dem Namen mutter“ hat welche ein Objekt hält, das genauso aufgebaut

ist wie dieses Objekt. Die Mutter heißt Gertrud“, ist 54 Jahre alt, hat ein leeres Konsolen

Array und ihre mutter-Variable hat den Wert null.

Aufgabe 2 (GSON- Googles Java lib for JSON - 6 Punkte)


a) Erstellen Sie ein neues Projekt mit Gradle, binden Sie die GSON-Bibliothek ein. Informationen
zu der Bibliothek finden Sie unter dem Link in der Fußnote.2
b) Informieren Sie sich über die GSON-Bibliothek.3
c) Erstellen Sie eine Klasse Person mit drei Variablen: Name(String), Alter(int), Konsole(List<Konsole>)
.
d) Erstellen Sie eine Klasse Konsole mit drei Variablen: Name(String), Version (String).
e) Das Programm soll seine Daten in einer JSON-Datei ablegen. Existiert die JSON-Datei noch
nicht, so soll diese erstellt werden. Ist die Datei schon vorhanden, soll aus ihr die Liste mit den
Personen gelesen werden. In der Datei soll eine List<Person> abgespeichert werden.
f) Nachdem die JSON-Datei eingelesen wurde, soll es möglich sein weitere Personen inklusive Ihrer
Konsolen zu der Datei hinzuzufügen.
g) Der Nutzer soll die Möglichkeit haben alle Personen sowie deren Konsolen ausgeben zu lassen.
h) Legen Sie pro Teilnehmer der Abgabe eine JSON-Datei bei, die mindestens drei Personen enthält.
Eine Person soll dabei Ihren Namen tragen.

Aufgabe 3 (Http - Transferring data - 7 Punkte)


Informieren Sie sich über das Hypertext-Übertragungsprotokoll (HTTP).4 und beantworten Sie fol-
gende Fragen.
a) Erklären Sie in eigenen Worten was das Hypertext-Übertragungsprotokoll ist.
1 https://www.w3schools.com/whatis/whatis_json.asp
2 https://github.com/google/gson
3 http://tutorials.jenkov.com/java-json/gson.html (Sie können bei der Überschrift Custom Instance Creators

in GSON“ aufhören zu lesen) oder https://www.youtube.com/watch?v=BbI8FdQOKNs
4 https://www.tutorialspoint.com/http/index.htm

1
b) Erklären Sie in eigenen Worten was eine URI ist.
c) Bilden Sie eine URI mit folgendem Inhalt:
host: google.de
path: /
query:
key:q value:hallo%20Google
Was passiert wenn Sie diese URI in ihrem Webbrowser aufrufen? Wie würde man weitere query-
Parameter der URI hinzufügen?
d) Erklären Sie in eigenen Worten was ein HTTP-Header ist.
e) Was denken Sie, welche HTTP-Methode benutzt Ihr Browser wenn er google.de anfragt? Was
ist der Status Code den er zurückbekommt?
f) Gucken Sie mit F12(Firefox) in den Network Tab und sehen Sie sich die verschiedenen Http
Requests an die der Browser stellt wenn er google.de anfragt. Welche Header hat der Browser bei
der ersten Anfrage an google.de mitgesendet?

Aufgabe 4 (Postman - A http client - 7 Punkte)


Installieren und informieren Sie sich über die Postman-Software. Die Registrierung kann übersprun-
gen werden. Die Software funktioniert auch ohne dass man einen Account hat.5 .
a) Führen Sie eine GET-Anfrage an google.de mit dem Parameter(params) key=q und value=hallo
aus. Wie lautet die Antwort von google? Machen Sie einen Screenshot.
b) Lesen sie dieses6 Dokument. Dies ist eine dummy API mit der man Vokabeln speichern und
abrufen kann.
c) Nehmen Sie Ihren Namen und registrieren Sie diese @example.com als neuen Nutzer als Passwort
nehmen Sie ”foobar”. Alle aus Ihrer Gruppe müssen ein Account erstellen.
d) Prüfen Sie mit /login ob die Registrierung erfolgreich war.
e) Erstellen Sie eine neue Vokabel mit POST auf /voc . Beachten Sie das Sie auch hier email und
password als header gesetzt haben müssen.
f) Überprüfen Sie mit GET auf /voc ob das hinzufügen geklappt hat.
Es gibt auch weitere Programme, mit denen HTTP Abfragen ausgeführt werden können. Unter
Linux und Unix stehen dafür die Kommandozeilenprogramme wget und curl zu verfügung.

Aufgabe 5 (OkHttp - Postman für Java - 5 Punkte)


Der Ok Http Client ist eine Library, welche Http calls machen kann. Zwar gibt es auch entsprechende
Funktionen in der Java Standard Library diese werden aber eher seltener benutzt. Ok Http Client
kann genau das was Postman auch kann nur eben in Java Code. Informieren Sie sich über den Ok
http Client 7 .
a) Schreiben Sie ein Java Konsolen Programm mit Gradle das die OKHttpClient 8 und GSON 9
Library einbindet.
b) Nutzen Sie folgende Webseite10 um den groben Standort einer Ip Adresse herauszufinden. Der
Nutzer soll eine Ip Adresse eingeben können und das Programm soll nur das Land und die Stadt
der Adresse ausgeben. Ihre eigene öffentliche ip finden Sie hier.11

Extra-Aufgabe 6* (Serialisation in Java - 5 Extrapunkte)


Sie haben schon das JSON-Format kennengelernt. Mithilfe des JSON-Formats können so Programm-
zustände gespeichert und geladen werden. Dies ist nicht die einzige Möglichkeit zur Serialisierung von
Objekten. Tatsächlich gibt es auch schon in der Java-Standardbibliotheken entsprechende Funktio-
nen. Informieren Sie sich über die Schnittstelle java.io.Serializable 12 und wie man diese verwendet.
Schreiben Sie eine Klasse Buch. Jedes Buch hat eine Anzahl an Seiten und einen Titel. Bücher
werden in Bücherregalen gelagert. Jedes Beuchregal hat ein Thema sowie eine Höhe und eine Breite.
Die Bücher im Bücherregal werden mit einer Liste organisiert. Legen Sie ein Bücherregal an und
fügen Sie diesem einge Bücher hinzu.
5 https://www.guru99.com/postman-tutorial.html (bis zum Kapitel ”How to Parameterize Requests”)
6 https://api.voc5.org/
7 https://square.github.io/okhttp/
8 https://square.github.io/okhttp/#releases
9 https://github.com/google/gson#download
10 https://ip-api.com/docs/api:json
11 https://www.whatsmyip.org/ Geben Sie bei der oben genannten API keine IP an bekommen Sie übrigens auch

ihr eigene IP.


12 https://www.tutorialspoint.com/java/java_serialization.htm

2
Schreiben Sie eine Methode deserialisiere und serialisiere, die das Bücherregal als Datei speichern
bzw. lesen und zurückgeben kann. Nutzen Sie hierbei die Schnittstelle java.io.Serializable.
Nutzen Sie die beiden Methoden um das Bücherregal zu serialisieren und anschließend zu lesen.
Geben Sie nach dem lesen die Titel aller Bücher im Regal aus.