Entwurf Fehler toleranter Software -- Wintersemester 2018/19 -- DAY BY DAY
(EN google-translate)
(PL google-translate)
|
|
Zum weiteren Selbststudium bitte folgende Links beachten:
Bild 0-1: Sehr gute Einführung in Android-Programmierung mit Processing: Daniel Sauter, Rapid Android Development. The Pragmatic Programmers 2013. DREI EXEMPLARE IN BIB. VERFÜGBAR!
Einführung zur Android-Programmierung mit Processing auf processing.org
Einführung zur Android-VR-Programmierung mit Processing auf processing.org
processing.org -- Download / Tutorials
Einführungen bei kramann.info
Einführung zu Processing, Vorlesung vom 2.10.2017 als Video.Weitere Informationen zu Processing: www.kramann.info/78_Processing
Weitere Informationen zu Android mit Processing: www.kramann.info/93_Android_Proc
Weitere Informationen zu Android-Programmierung: www.kramann.info/77_Android
|
|
Was läuft gerade in der LV "Künstlerische Forschung", wo die Performance entwickelt werden soll? -- siehe KFintern auf kramann.info.
Exceptions selber Entwickeln mit Java -- 81_FTSD/07_Processing/01_Exceptions
Sprachsynthese mit Android-Processing -- 94_VSI/03_TTS
"05_Konzepte" auf KFintern
|
Bildung von Zweiergruppen für die Prüfungsleistung
ÜBUNG
Hardware-Grundlage der Übung sind immer zwei benachbarte PCs im PC-Pool unter Linux gebootet.
Aufgabe: Ein Pong-Spiel auf dem einen Rechner soll von dem anderen Rechner aus ferngesteuert werden.
Verwenden Sie als Software-Basis für den "Pong-PC" entweder die folgende studentische Lösung, oder Ihre eigene:
Als Übertragungsmethode soll OSC verwendet werden. Beispiele finden sich in "Examples" bei der Library oscP5.
Die gleiche Library funktioniert ganz genau gleich auch bei Android-Smartphones. Somit ist das hier erarbeitete ohne weiteres auch darauf anwendbar.
Auf dem sendenden PC soll ebenfalls ein Sketch laufen. Dieser soll nichts anderes machen, als die notwendigen Daten zum Steuern des Pong-Spiels auf dem anderen PC über OSC an diesen zu senden.
Basis für das Spielen sollen auch hier die Pfeiltasten sein.
Teil 1
|
Hinweise:
|
siehe auch Hinweise hier:
https://de.wikipedia.org/wiki/Open_Sound_Control
https://de.wikipedia.org/wiki/Midi
https://de.wikipedia.org/wiki/User_Datagram_Protocol
https://de.wikipedia.org/wiki/OSI-Modell
Teil 2
|
Teil 3
Ein anderes abstraktes Konzept zur Beförderung besserer Software, sind Design-Pattern.
Eines ist das s.g. Fassade-Pattern. Prinzip ist, dass der Benutzer einer Programmierschnittstelle wenig von der Komplexität der bereit gestellten Funktionalität mitbekommt.
So etwas in der Art liegt eigentlich bei all den bei Processing verfügbaren Libraries vor. Sie alle vereinfachen den Umgang mit eigentlich komplexen Dingen, wie die Verwendung von Sensoren wie Kameras oder Beschleunigungssensoren oder auch Grafikprogrammierung (GUI).
siehe hierzu auch:
https://en.wikipedia.org/wiki/Facade_pattern
Stellen Sie sich vor, Sie wollen für eine dritte Person den Zugang zu OSC möglichst stark vereinfachen.
Wie können Sie dieser Person die Mögilichkeiten, die die Library bietet, bzw. einen Ausschnitt davon, auf möglichst einfach zu benutzende Weise mit möglichst wenigen Fehler- bzw. Versagensmöglichkeiten bereitstellen?
Entwerfen Sie ein solches Konzept und setzen es wenigstens teilweise um.
Es ist auch möglich eine Library aus der eigenen Software zu machen:
93_Android_Proc/02_Eigene_Library
78_Processing/04_Bibliotheken
Teil 4
Sammeln und Diskussion der gewonnenen Konzepte und Erkenntnisse.
|
Teil 1: Theorie
|
Teil 2: Projektaufgabe
Entwickeln Sie eine Software, ...
|
|
Sie haben die Freiheit, den Schwerpunkt bei Ihrer Entwicklung frei zu wählen, bzw. wie es Sinn macht, um die Pattern sinnvoll umzusetzen. Es wird erwartet, dass sich dadurch konzeptionell deutlich unterschiedliche Projekte/Projektideen ergeben.
Mit Vorstellen Ihres Grundkonzepts am 12.12. und der Abgabe Ihres Abstracts an den Dozenten, erwerben Sie sozusagen das Patent auf Ihre Grundidee. Diese sollte nicht von anderen Gruppen kopiert werden und Sie sollten bis zum Projektende daran festhalten.
Remotepong002_Konstruktor.zip
Remotepong003_Spiel.zip
Remotepong004_SchlaegerBewegen.zip
Remotepong005_SchlaegerBewegen.zip
Remotepong006_ANDROID.zip
Remotepong006_OSC.zip
Remotepong007b_EXCEPTIONS.zip
Remotepong007_EXCEPTIONS.zip
|
Einblicke in die aktuellen Arbeiten aufgreifend, sollen heute einige Grundlagen wiederholt und neue hilfreiche Programmierkonzepte vorgestellt und praktisch geübt werden:
Nr. | Konzept | Darstellung durch Beispiel | Bemerkungen |
---|---|---|---|
1. | Callback-Funktionen | mousePressed(), draw() | Datenaustausch über Variablen |
2. | Random | Brownsche Atombewegung | z.B. Generierung von Testwerten |
3. | Tabs | eigene Klassen schreiben | Quelltext organisieren |
4. | Schnittstellen | Kontroll-Ausgabe | Anwendung: Recovery-Block, Testvarianten / verschiedene Typen einer Sache |
5. | Threads | Echtzeitsimulation | Trennung von Simulation und Visualisierung / Audio |
6. | Zustandsvariable | Abbilden verschiedener Phasen in einer App | Umsetzung über switch-case-Blöcke |
7. | Late Binding | Grundproblem bei Threads: fehlende Instanzen | Objekte erst erzeugen, wenn sie benötigt werden |
8. | BlueJ | Java-Entwicklungsumgebung | Klassendarstellung mit UML / strukturierte Entwicklung / eigene Libraries |
Tabelle 0-1: Programmiertechnik-Themen heute.
Test0002.zip
Test0003.zip
Test0004_Zustandsvariable.zip
Test0005_Zustandsvariable.zip