Changes between Version 8 and Version 9 of lecture_faq


Ignore:
Timestamp:
03/24/2015 10:51:54 PM (9 years ago)
Author:
daniel.kurzynski
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • lecture_faq

    v8 v9  
    5959 
    6060SWALint und Design Patterns können euch dabei helfen, diese Ziele zu erreichen.
     61
     62== Wann sollte Global State verwendet werden? ==
     63Global State/Singletons sollten nur verwendet werden, wenn es unbedingt notwendig ist. Formen von globalem State existieren in jedem System und können einen auch über Prozessgrenzen hinweg beissen.  Das ist vergleichbar mit der Situation heute, in dem die Instanz der Spielwelt an einer globalen Stelle gebunden wurde. Jeder andere, der diese Stelle schreibt (nicht nur ein fremdes Stück Code, sondern eben auch eine zweite Instanz des Spiels) kann somit Probleme verursachen.
     64
     65
     66== Was ist ein Legacy System? ==
     67Der Begriff des "Legacy System" bezeichnet im wesentlichen Softwaresysteme, welche
     68a) bereits existieren und weiter gepflegt (Maintenance) werden sollen/müssen
     69b) ausreichend komplex sind (die wenigstens Programm sind trivial)
     70c) für jemanden einen bestimmten Wert haben (häufig wird hier natürlich der finanzielle Aspekt genannt aber es gibt auch genug andere Gründe (z.B. will jemand Monkey Island wieder auf dem iPad zum Laufen bekommen oder ihr entwickelt den internen Squeak Browser weiter damit die Community ihn wieder nutzen kann)).
     71Der Hinweis aus der Vorlesung diesen Begriff vorsichtig zu verwenden, bezieht sich auf den Aspekt, dass “Legacy” in der Informatik einen negativen Aspekt im Sinne von “Altlast” beinhaltet. Da ihr natürlich bestehende Softwareprojekte nicht unbedingt beleidigen wollt, solltet ihr das im Hinterkopf behalten.
     72
     73
     74== Sollten wir das System Window für die SWA-Spiele benutzen? ==
     75Viele wollen sie benutzen, um die gewohnt Standardfunktionalität (minimieren, schliessen, etc.) zur Verfügung zu haben. Dazu nun ein paar Hinweise:
     76 
     771. Morphic Spiele sind normalerweise nicht in Standardfenster eingebettet, da Kinder die Zielgruppe sind. Diese kennen die ganzen Programmierwerkzeuge (welche bekannterweise die Systemwindows nutzen) nicht. Sie sehen normalerweise nach dem Deployment der Spiele auch nicht mehr viel von Squeak und dessen IDE. Das einzige was sie kennen, um die gewünschte Funktionalität zu erreichen, ist normalerweise der Umgang mit den Halos. Von daher ist der Bedarf nach Standardfenstern für eure Spiele nicht so wichtig.
     78 
     792. Dennoch könnt ihr gerne natürlich versuchen eure Spiele in die Standardfenster einzubetten. Dies ist natürlich näher an bekannten Systemen und erlaubt eine leichtere Bedienung von Menschen die wenig Ahnung von dem Prinzip der Halos haben.
     80 
     813. Bei der Einbindung überlegt euch bitte gut, wie ihr das tun wollt.
     82Schaut euch dazu doch einmal an, wie die Klasse SystemWindow verwendet werden. Vergleicht zum Beispiel einmal die Subklassen von SystemWindow (Browser - "Hierarchy" Button) und die direkten Referenzen auf die Klasse SystemWindow (STRG + SHIFT + N nach Selektion des Klassennamens).
     83Ihr werdet feststellen, dass es wesentlich mehr Referenzen (also benötigt für Instanzierung von Objekten) als Subklassen gibt. Ebenso sind alle Subklassen Spezialisierungen des SystemWindow aber keine eigenständige Programme. Nun versucht einmal zu verstehen, wie die Programme ihre SystemWindows erstellen und sich dann darin einbetten.
     84Probiert es bitte einmal selbst aus, falls ihr nicht weiterkommt, findet ihr ein kleines Beispiel zum Pong Spiel ganz am Ende dieser Mail [1].
     85 
     864. Schaut euch doch einmal PluggableSystemWindow und ToolBuilder an.
     87Hier wird mit Hilfe des "Builder Design Patterns" ein Mechanismus beschrieben, wie Fenster und Widgets an Hand von Spezifikationen erstellt werden können. Zur Entwicklung von Werkzeugen, ist dies der eigentliche Weg in Squeak. Wir werden dieses System später in der Vorlesung zu den Entwurfsmustern noch genauer behandeln. Dennoch ist es nicht verkehrt, es mal selbstständig zu verstehen :-) Lest dazu aber zumindest euch vorher kurz in das Muster ein.
     88