Tutorial 3: Code Reading and Editing
ASE WS 2023/24
Dieses Dokument ist kein eigenständiges Tutorial sondern unterstützt die Übung.
Die grundlegenden Konzepte werden vorgestellt, hilfreiche Links erleichtern die selbständige Vertiefung.
Ziele:
Ihr versteht, wie und wo Ihr Design-Patterns anwenden könnt.
Ihr versteht das Decorator-Pattern und könnt es in Python sinnvoll anwenden.
Ihr kennt Strategien, um Euch in fremden Code einzuarbeiten und diesen zum Laufen zu bringen.
Ihr könnt Design-Entscheidungen auf Basis der Architekturprinzipien und SOLID-Prinzipien treffen.
Dieses Tutorial baut teilweise auf den Kenntnissen aus dem Linux-Tutorial auf.
Editor vs. IDE
(Raphael erzählt ein bisschen was)
Fremden Code Lesen und zum Laufen bringen
Kriterien beim Lesen von fremdem Code:
Gibt es eine README-Datei o.ä. mit Hinweisen zur Installation?
Wie ist die Verzeichnisstruktur?
Welche Programmiersprachen werden verwendet?
Welche Build-Systeme werden verwendet?
Wo ist der Einstiegspunkt ins Programm?
Wie sieht die Versionsgeschichte aus?
…
Strategien:
Vorbereitung: wir brauchen einen Möglichkeit, Java-Code zu kompilieren und auszuführen
Option A: über eine IDE wie Visual Studio Code, Eclipse, IntelliJ
Option B: auf der Kommandozeile unter Linux (stellt Raphael vor)
### Aufgaben
Löst zu zweit oder zu dritt (oder alleine) folgende Aufgaben
-
Checkt zuerst den Commit 8d10
aus.
Lest den Code und bringt ihn zum Laufen
Checkt Commit ba06
aus.
Lest den Code und bringt ihn zum Laufen
Checkt den HEAD-Commit aus.
Versucht, den Code zu Lesen und ihn zum Laufen zu bringen.
(Die letzte Aufgabe machen wir gemeinsam)
Design-Patterns anwenden, Design-Entscheidungen treffen
Aufgaben
ladet aus GRIPS oder
von git.ur.de die Datei
campus_management_example.py
herunter und öffnet sie in einem Editor.
in der Datei sind mehrere Fragen zu Design-Entscheidungen - diskutiert diese kurz zu zweit/dritt (wir sammeln dann die Meinungen)
trefft Design-Entscheidungen
erzeugt ein Repository in git.ur.de (unter der ASE_23WS-Gruppe mit dem Namen “01 Campus-Management $Vorname $Nachname”
committet dort eine minimale Version Eurer Lösung bis Montag, 14 Uhr.
Aufgabe:
Read up on the classic 23 design patterns.
Write a small Python application (text-only) that represents a building management system with the following features:
Organize buildings, rooms, (building parts, hallways, stairways)
Allow for authenticating against the system
Allow for reporting a problem with any of the objects
Get a list of problems for a given building / part / room / … if authorized
Use at least three design patterns here.