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.

(Raphael erzählt ein bisschen was)

  • 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?
  • Ansatzpunkt finden (Code, von dem man weiß, was er tut) und dann von dort ausgehend die Call-Hierarchie hoch oder runter explorieren.
  • Active reading: Notizen im Code machen, Code ggf. refactoren
  • Logging hinzufügen, um Call-Hierarchie zu verstehen

Siehe auch: https://stackoverflow.blog/2022/08/15/how-to-interrogate-unfamiliar-code/

  • 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

(Die letzte Aufgabe machen wir gemeinsam)

  • 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.

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.