Ich habe unter
http://www.squeakland.org/project.jsp?http://gcls.dyndns.org/informatik/squeak/GCLS-Verkehr.001.pr ein Projekt abgelegt, bei dem es um OOP im Jahrgang 12.1 geht. Diese Adresse gilt nur höcht vorübergehend - vielleicht für eine Woche. Ich bitte um Kommentare: - Was halten Sie vom Konzept? - Was würde ein routinierter Smalltalk-Programmierer anders gestalten? Es handelt sich um mein erster Versuch, eigene Arbeit zu veröffentlichen, ich _bitte_ deshalb um erhebliche Nachsicht. Wieso sind die Klassenkommentare verschwunden? In der *.pr-Datei sind sie enthalten. |
Hi,
Gefaellt mir gut! Vom Konzept her finde ich die Idee mit der Eisenbahn ziemlich gut - da laesst sich allerhand drin unterbringen. Zum Thema was man anders machen mag: Nicht viel, nur die Methode Ampel>>zeige enthaelt so eine endlos lange if/then-Verschachtelung die nur schwer leserlich ist. Ich wuerde sowas so machen: Ampel>>zeige self color: self zustandsFarbe. Ampel>>zustandsFarbe zustand = 0 ifTrue:[^Color black]. zustand = 1 ifTrue:[^Color orange]. zustand = 2 ifTrue:[^Color green]. zustand = 3 ifTrue:[^Color yellow]. zustand = 4 ifTrue:[^Color blue]. ^Color black Ach ja, und die Klassenkommentare sind verschwunden, weil das Plugin keinerlei Kommentare mitschreibt (das passiert nur wenn mans im Browser macht). Ciao, - Andreas ----- Original Message ----- From: "Klaus Füller" <[hidden email]> To: "Squeak e.V." <[hidden email]> Sent: Monday, January 19, 2004 11:10 PM Subject: [Squeak-ev] Unterrichtsbeispiel OOP Jahrgang 12 Ich habe unter http://www.squeakland.org/project.jsp?http://gcls.dyndns.org/informatik/squeak/GCLS-Verkehr.001.pr ein Projekt abgelegt, bei dem es um OOP im Jahrgang 12.1 geht. Diese Adresse gilt nur höcht vorübergehend - vielleicht für eine Woche. Ich bitte um Kommentare: - Was halten Sie vom Konzept? - Was würde ein routinierter Smalltalk-Programmierer anders gestalten? Es handelt sich um mein erster Versuch, eigene Arbeit zu veröffentlichen, ich _bitte_ deshalb um erhebliche Nachsicht. Wieso sind die Klassenkommentare verschwunden? In der *.pr-Datei sind sie enthalten. |
Andreas Raab (2004-01-19 23:40):
> Hi, > > Gefaellt mir gut! Vom Konzept her finde ich die Idee mit der Eisenbahn > ziemlich gut - da laesst sich allerhand drin unterbringen. +1. > Zum Thema was man > anders machen mag: Nicht viel, nur die Methode Ampel>>zeige enthaelt so eine > endlos lange if/then-Verschachtelung die nur schwer leserlich ist. Ich > wuerde sowas so machen: > > Ampel>>zeige > self color: self zustandsFarbe. > > Ampel>>zustandsFarbe > zustand = 0 ifTrue:[^Color black]. > zustand = 1 ifTrue:[^Color orange]. > zustand = 2 ifTrue:[^Color green]. > zustand = 3 ifTrue:[^Color yellow]. > zustand = 4 ifTrue:[^Color blue]. > ^Color black Also, wenn's da "nur" um eine Zuordnung zwischen Konstanten (Zahl - Farbe) geht, dann würde ich (vermutlich als Klassenvariable) ein Array anlegen, in dem beim entsprechenden Index die entsprechende Farbe steht. > > Ach ja, und die Klassenkommentare sind verschwunden, weil das Plugin > keinerlei Kommentare mitschreibt (das passiert nur wenn mans im Browser > macht). > > Ciao, > - Andreas > > ----- Original Message ----- > From: "Klaus Füller" <[hidden email]> > To: "Squeak e.V." <[hidden email]> > Sent: Monday, January 19, 2004 11:10 PM > Subject: [Squeak-ev] Unterrichtsbeispiel OOP Jahrgang 12 > > > Ich habe unter > http://www.squeakland.org/project.jsp?http://gcls.dyndns.org/informatik/squeak/GCLS-Verkehr.001.pr > ein Projekt abgelegt, bei dem es um OOP im Jahrgang 12.1 geht. Diese > Adresse gilt nur höcht vorübergehend - vielleicht für eine Woche. > > Ich bitte um Kommentare: > > - Was halten Sie vom Konzept? > - Was würde ein routinierter Smalltalk-Programmierer anders gestalten? > > Es handelt sich um mein erster Versuch, eigene Arbeit zu > veröffentlichen, ich _bitte_ deshalb um erhebliche Nachsicht. > > Wieso sind die Klassenkommentare verschwunden? In der *.pr-Datei sind > sie enthalten. > -- Stefan Schmiedl +-------------------------------+----------------------------------------+ |Approximity GmbH | EDV-Beratung Schmiedl | |http://www.approximity.com | Am Bräuweiher 4, 93499 Zandt, Germany | |mailto:[hidden email] | Tel. (09944) 3068-98, Fax -97 | +-------------------------------+----------------------------------------+ |
In reply to this post by Klaus Füller-2
Klaus Füller (2004-01-19 23:10):
> Ich habe unter > http://www.squeakland.org/project.jsp?http://gcls.dyndns.org/informatik/squeak/GCLS-Verkehr.001.pr > ein Projekt abgelegt, bei dem es um OOP im Jahrgang 12.1 geht. Diese > Adresse gilt nur höcht vorübergehend - vielleicht für eine Woche. > > Ich bitte um Kommentare: > > - Was halten Sie vom Konzept? > - Was würde ein routinierter Smalltalk-Programmierer anders > gestalten? Bahnsensor>>pruefe hat eine do:[ifTrue: ^]-Kombination, die irgendwie C-Erinnerungen in mir weckt ... :-) Ich hätte vermutlich mit detect: ifNotNil: gearbeitet. s. -- Stefan Schmiedl +-------------------------------+----------------------------------------+ |Approximity GmbH | EDV-Beratung Schmiedl | |http://www.approximity.com | Am Bräuweiher 4, 93499 Zandt, Germany | |mailto:[hidden email] | Tel. (09944) 3068-98, Fax -97 | +-------------------------------+----------------------------------------+ |
In reply to this post by Stefan Schmiedl
Stefan Schmiedl (2004-01-20 10:10):
> Andreas Raab (2004-01-19 23:40): > > Zum Thema was man > > anders machen mag: Nicht viel, nur die Methode Ampel>>zeige enthaelt so eine > > endlos lange if/then-Verschachtelung die nur schwer leserlich ist. Ich > > wuerde sowas so machen: > > > > Ampel>>zeige > > self color: self zustandsFarbe. > > > > Ampel>>zustandsFarbe > > zustand = 0 ifTrue:[^Color black]. > > zustand = 1 ifTrue:[^Color orange]. > > zustand = 2 ifTrue:[^Color green]. > > zustand = 3 ifTrue:[^Color yellow]. > > zustand = 4 ifTrue:[^Color blue]. > > ^Color black > > Also, wenn's da "nur" um eine Zuordnung zwischen Konstanten (Zahl - > Farbe) geht, dann würde ich (vermutlich als Klassenvariable) ein > Array anlegen, in dem beim entsprechenden Index die entsprechende Farbe > steht. > und was mir nachträglich noch eingefallen ist: Das wäre dann auch eine prima Motivation für eine lazy initialization (wie heißt das denn auf deutsch?) in der Lesemethode. Was ist denn eigentlich der Hintergedanke bei dem Projekt? Objektorientierte Prinzipien? Smalltalk? Das hat vielleicht Einfluss auf meine Antworten ... s. -- Stefan Schmiedl +-------------------------------+----------------------------------------+ |Approximity GmbH | EDV-Beratung Schmiedl | |http://www.approximity.com | Am Bräuweiher 4, 93499 Zandt, Germany | |mailto:[hidden email] | Tel. (09944) 3068-98, Fax -97 | +-------------------------------+----------------------------------------+ |
In reply to this post by Klaus Füller-2
Klaus Füller (2004-01-19 23:10):
> - Was würde ein routinierter Smalltalk-Programmierer anders > gestalten? > Einen hab ich noch, dann muss ich den PC räumen, damit meine Kinder mit gcompris spielen können ... Fahrzeug>>step ... sensoren do: [ :s | s tue ]. "... und prüfe die Sensoren" Aha! Wenn der Kommentar stimmt, sollte die Methode tue besser pruefe heißen, wenn der (nichtssagende) Name tue stimmt, steht der Kommentar unter Verdacht, veraltet zu sein. Gerade hier tut :-) sich eine Diskrepanz auf: Was "tut" ein Sensor? Ein aktiver Sensor zeichnet einen Aspekt seiner Umgebung auf. Bei "prüfe die Sensoren" scheint etwas mit dem (passiven) Sensor zu geschen, Wartungsarbeiten mit Schraubenzieher und Eichgeräten vermutlich. s. -- Stefan Schmiedl +-------------------------------+----------------------------------------+ |Approximity GmbH | EDV-Beratung Schmiedl | |http://www.approximity.com | Am Bräuweiher 4, 93499 Zandt, Germany | |mailto:[hidden email] | Tel. (09944) 3068-98, Fax -97 | +-------------------------------+----------------------------------------+ |
In reply to this post by Klaus Füller-2
Klaus Füller (2004-01-19 23:10):
> - Was würde ein routinierter Smalltalk-Programmierer anders > gestalten? Schon wieder ich :-) Farbsensor>>pruefe "Ich prüfe, ob ich ansprechen soll. Alle Sensoren benötigen diese Funktion. Ich selbst reagiere darauf, dass sich die Farbe, auf der ich sitze, gegenüber der Anfangsfarbe (siehe Methode #setze) geändert hat. Wenn das der Fall ist, rufe ich das Stück Programm auf, dass mir mit der Methode #tue mitgeteilt worden ist. Außerdem gebe ich in diesem Fall #true zurück." self colorUnder = farbe ifTrue: [^false]. ^true. Laut Kommentar wird "tue" ausgeführt, laut Code nicht. Das liegt vielleicht daran, dass ich gewohnt bin, das "ich" in Methoden-Kommentaren auf die Methode zu beziehen und nicht auf das Objekt, das die Botschaft erhält. Die Implementation selbst würde ich kürzer schreiben, ^self colorUnder ~= farbe Müsste das gleiche sein, wenn ich "ungleich" richtig geschrieben habe. s. -- Stefan Schmiedl +-------------------------------+----------------------------------------+ |Approximity GmbH | EDV-Beratung Schmiedl | |http://www.approximity.com | Am Bräuweiher 4, 93499 Zandt, Germany | |mailto:[hidden email] | Tel. (09944) 3068-98, Fax -97 | +-------------------------------+----------------------------------------+ |
Stefan Schmiedl wrote:
> > Schon wieder ich :-) Ich denke deine Kinder sitzen dir im Nacken :) mfg Chris Burkert -- http://www.chrisburkert.de/ |
Chris Burkert (2004-01-20 19:52):
> Stefan Schmiedl wrote: > > > >Schon wieder ich :-) > > Ich denke deine Kinder sitzen dir im Nacken :) da waren sie schon auf dem weg ins bett ... und während sie sich umgezogen haben, hab ich schnell was getippt. gleich danach war das zähneputzen zu überwachen ... timing ist alles. s. -- Stefan Schmiedl +-------------------------------+----------------------------------------+ |Approximity GmbH | EDV-Beratung Schmiedl | |http://www.approximity.com | Am Bräuweiher 4, 93499 Zandt, Germany | |mailto:[hidden email] | Tel. (09944) 3068-98, Fax -97 | +-------------------------------+----------------------------------------+ |
In reply to this post by Stefan Schmiedl
Stefan Schmiedl schrieb:
... > Was ist denn eigentlich der Hintergedanke bei dem Projekt? > Objektorientierte Prinzipien? Smalltalk? > Das hat vielleicht Einfluss auf meine Antworten ... Es geht um objektorientiertes Modellieren und Programmieren, nicht um Details der Programmiersprache. kf |
In reply to this post by Stefan Schmiedl
Stefan Schmiedl schrieb:
... > > und was mir nachträglich noch eingefallen ist: Das wäre dann auch eine > prima Motivation für eine lazy initialization (wie heißt das denn auf > deutsch?) in der Lesemethode. > ... Wie könnte man hier eine _lazy initialization_ anwenden?. kf |
Klaus Füller (2004-01-21 11:34):
> Stefan Schmiedl schrieb: > ... > > > >und was mir nachträglich noch eingefallen ist: Das wäre dann auch eine > >prima Motivation für eine lazy initialization (wie heißt das denn auf > >deutsch?) in der Lesemethode. > > > ... > Wie könnte man hier eine _lazy initialization_ anwenden?. > > kf > Hallo Klaus, ohne jetzt zu kontrollieren, ob das zum restlichen Ampelcode passt: Morph subclass: #Ampel instanceVariableNames: 'zustand ' classVariableNames: 'Farben' poolDictionaries: '' category: 'GCLS-Verkehr' Ampel>>zeige self color: self farbe Ampel>>farbe Farben ifNil: [Farben _ OrderedCollection new add: Color red; add: Color orange; add: Color green; add: Color yellow; add: Color blue; yourself]. ^ Farben at: zustand ifAbsent: [] Und vermutlich würde ich im richtigen Leben sogar noch die Initialisierung in eine Klassenmethode packen, weil das im richtigen Leben einer der typischen Kanidaten für Benutzereinstellungen ist. Das Arbeiten mit (leicht übergebbaren) Zahlenwerten an Stelle von (komplizierten stackbelastenden) Objekten ist für meine Nase ein Code-Smell in Smalltalk. Der Text in Klammern ist eine Reminiszenz an das Semester, in dem ich einen C-Kurs belegt hatte und spiegelt keinesfalls meine heutige Meinung wider :-) s. -- Stefan Schmiedl +-------------------------------+----------------------------------------+ |Approximity GmbH | EDV-Beratung Schmiedl | |http://www.approximity.com | Am Bräuweiher 4, 93499 Zandt, Germany | |mailto:[hidden email] | Tel. (09944) 3068-98, Fax -97 | +-------------------------------+----------------------------------------+ |
Free forum by Nabble | Edit this page |