informatiker.lernen(fia);

Lernen macht hungrig oder? Dann koch dir doch was!


Werbung* - Unterstütze die Seite gerne durch einen Kauf bei Hello Fresh!

informatiker.lernen(fia);

Letzte Änderung: 29-10-2025

Programmierung: HTTP-Requests, Nebenläufige Programmierung, Abstraktion

Übungsaufgabe zur Klausur oder Prüfungsvorbereitung

Anspruch: Fortgeschritten

Stichworte sind: HTTP-Requests, Threads, Callbacks, Records, Interfaces

Einfügen

Einleitung

Sind sind Mitarbeiter im Softwareunternehmen "ImmoTopSoft", welches Anwendungen zur Verwaltung von Immobilien entwickelt.

Zur Vorbereitung auf ein neues Projekt, frischen Sie ihr Wissen in asynchroner Programmierung und HTTP-Requests ein wenig auf. Beantworten Sie anschließend einige Fragen.

Einfügen

Aufgabe 1

In der Tabelle sind vier oft verwendete Http-Request-Methoden aufgeführt, ergänzen Sie die fehlenden Einträge in der Tabelle.

Methode     Verwendung 
1? Zum Abrufen von Ressourcen, darf den Zustand des Servers nicht verändern, cachefähig, Wiederholbarkeit gewünschtz.b. im Web als Verlauf
POST 2?
3? Zum Ersetzen oder Aktualisieren einer Ressource, nicht cachefähig da dies zu ungewollten Veränderungen führt
DELETE 4?
Lösungsvorschlag

1? = GET, 2? = Zum Senden von Daten an den Server, z.b. für Formulare, sollte nicht gecached werden, da Änderung auf dem Server ausgeführt werden können, 3? PUT, 4? = Löschen von spezifischen Resourcen auf dem Server, wird nicht gecached

Einfügen

Aufgabe 2

Erklären Sie, welche Aufgaben Request-Header und Request-Body haben.

Lösungsvorschlag

Request-Header liefern wichtige Metainformationen für die Anfrage, während der Request-Body die spezifischen Daten enthält, die an den Server gesendet werden.


Im Header stehen dabei verschiedene Headernamen für unterschiedliche Informationen. Zum Beispiel: Content-Type, Cache-Control, Authorization, User-Agent(Browser-Typ) und viele mehr.


Im Body können z.b. Formulardaten oder json verwendet werden.

Einfügen

Aufgabe 3

Es geht um synchrone und asynchrone Methoden.

a) Erklären Sie den Unterschied zwischen synchroner und asynchroner Ausführung von Quellcode. Gehen Sie dabei auf jeweilige Eigenschaften, Schwierigkeiten und Besonderheiten ein.

Lösungsvorschlag

Bei synchronen Methoden wartet der aufrufende Code, bis die Methode abgeschlossen ist. Dies bedeutet, dass während der Ausführung der Methode keine anderen Aufgaben bearbeitet werden. Durch den linearen Ablauf, ist die Behandlung von Fehlern einfacher, weil eine Reaktion sofort erfolgen kann. Auch sind die Vorgänge und Abläufe einfacher nachzuvollziehen.


Asynchrone Methoden ermöglichen es dem Programm, andere Aufgaben auszuführen, während es auf die Fertigstellung einer Aufgabe wartet. Dies ist besonders nützlich bei Operationen, die Zeit in Anspruch nehmen. Die Anwendung kann auf Ereignisse reagieren oder Daten verwenden, sobald sie verfügbar sind, ohne den Hauptausführungsfluss (Main-Thread) zu blockieren. Die Reaktion auf Ereignisse und Fehler ist komplexer, da die Reaktion oft an einer anderen Stelle im Code erfolgen muss, was die Nachvollziehbarkeit verschlechtert.

b) Nennen Sie 3 Beispiele für Aufgaben, bei denen eine asynchrone Ausführung sinnvoll wäre.

Lösungsvorschlag

API Anfragen übers Netzwerk, Zugriffe auf das Dateisystem, Downloads, Streams

c) Erklären Sie was Callbacks sind und welche Rolle diese in der asynchronen Programmierung spielen.

Lösungsvorschlag

Ein Callback ist ein Verweis auf eine Methode, die als Argument an eine andere Funktion übergeben wird. Der Callback wird aufgerufen, nachdem der asynchrone Code abgeschlossen ist, um das Ergebnis oder eine weitere Verarbeitung zu ermöglichen.

d) Sie haben via API, Daten im JSON-Format abgerufen. Erklären Sie mit eigenen Worten, welche Problemstellungen sich nun beim Verarbeiten und Verwenden der Daten in einer Objektorientierten Sprache ergeben.

Lösungsvorschlag

Das Problem besteht darin, dass die Textdaten der API-Antwort in eine strukturierte Objektform umgewandelt werden müssen, um sie im Programm effektiv zu verarbeiten. Dies erfordert das Mapping der unterschiedlichen Datentypen und -strukturen aus dem JSON-Format in die entsprechenden Klassen. Fehler in diesem Prozess können zu Laufzeitproblemen führen und zusätzliche Wartung erfordern.

Einfügen

Aufgabe 4

Ein Entwickler des Teams hat zur Verwendung von Daten einer API-Antwort ein Record statt einer Klasse genutzt.


a) Erklären Sie was ein Record ist und welche Vorteile und welche Nachteile es gegenüber einer Klasse hat.

Lösungsvorschlag

Ein Record ist eine einfache Datenklasse, die speziell zur Speicherung von Daten gedacht ist. Die Deklaration ist sehr einfach. Felder und Getter müssen nicht geschrieben werden, sie werden automatisch erstellt. Dies vermeidet Boilerplate Code (immer wieder gleichen einfachen Code). Nachteil ist, dass die Daten unveränderlich sind, auch Vererbung ist nicht möglich.

b) Erstellen Sie ein Record "Address", welches die Daten einer API-Antwort auf die Anfrage einer Adresse speichern soll. (String für die Straße, int für die Hausnummer und int für die Postleitzahl).

Lösungsvorschlag

public record Address( String street, int number, int postcode){ }

Einfügen

Aufgabe 5

Für die Verwendung als Callback in der Sprache Java soll ein Interface (in diesem Fall s.g. Functional Interface) verwendet werden.


a) Erklären Sie kurz und knapp was ein Interface ist und welchen Nutzen es hat.

Lösungsvorschlag

Ein Interface ist eine Art Vertrag in der Programmierung, der eine Sammlung von Methodendeklarationen definiert, ohne deren Implementierung bereitzustellen. Das Interface ermöglicht es Klassen, diese Methoden zu implementieren, wodurch sie eine gemeinsame Schnittstelle teilen, ohne dabei die Vererbung zu nutzen.

b) Schreiben Sie ein generisches Interface "Action", welches als Callback mit Übergabe von 3 Parametern dienen kann, in einer beliebigen Sprache.

Lösungsvorschlag

Beispiel in Java

c) Im Quellcode wird das Interface "Action" in einer Methode verwendet um die Werte einer Anfrage für die Daten einer Adresse zurückzugeben, vervollständigen Sie den Code.

Lösungsvorschlag

Beispiel in Java

Einfügen

Aufgabe 6

Ein Entwickler erzählt Ihnen, Interfaces sind ein wichtiges Mittel der Abstraktion. Dann stellt er Ihnen einige Fragen.


a) Erklären Sie was Abstraktion bedeutet, nutzen Sie dazu ein eingängiges Beispiel.

Lösungsvorschlag

Abstraktion bedeutet, dass komplexe Implementierungsdetails und Informationen vor dem Nutzer einer Funktionalität verborgen werden, um die Komplexität im Programm zu verringern. Ein eingängiges Beispiel ist die Verwendung von Frameworks zum Parsen und Mappen von API-Antworten; der Nutzer muss nicht wissen, wie der Interna-Mechanismus des Mappers funktioniert, sondern kann sich einfach auf die Bereitstellung von Daten konzentrieren. Dadurch wird die Benutzerfreundlichkeit erhöht und die Entwicklungszeit verkürzt, da Entwickler sich nicht mit den Details der Implementierung beschäftigen müssen.

b) Sie haben im Internet einen Code-Ausschnitt gefunden, in dem eine abstrakte Klasse mit dem Schlüsselwort "abstract" gebildet wurde. Erklären Sie. was eine abstrakte Klasse von einem Interface unterscheidet.

Lösungsvorschlag

Eine abstrakte Klasse kann, im Gegensatz zu Interfaces, sowohl Methodendeklarationen als auch konkrete Implementierungen enthalten. Während eine abstrakte Klasse dazu dient, gemeinsame Funktionalitäten und Attribute bereitzustellen, müssen alle abgeleiteten Klassen die abstrakten Methoden implementieren. Interfaces hingegen definieren nur die Methodendeklarationen und erlauben einer Klasse, mehrere Interfaces zu implementieren, was mehr Flexibilität bei der Gestaltung der Klassenhierarchie bietet.

Einfügen

Video Klausurbesprechung

Auf meinem YouTube-Kanal bespreche ich regelmäßig Aufgaben und Übungen, so auch diese hier.

Einfügen


Lernen macht hungrig oder? Dann koch dir doch was!


Werbung* - Unterstütze die Seite gerne durch einen Kauf bei Hello Fresh!

Dein Feedback ist uns wichtig

Hat dir dieser Inhalt gefallen? Hast Du Kritik oder Verbesserungsvorschläge? Hast Du inhaltliche Fehler entdeckt?

Schreib uns gerne dein Anliegen an info@informatiker-lernen.de