Unterrichtsbeispiel OOP Jahrgang 12

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Unterrichtsbeispiel OOP Jahrgang 12

Klaus Füller-2
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.


Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Andreas.Raab
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.


Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Stefan Schmiedl
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          |
+-------------------------------+----------------------------------------+

Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Stefan Schmiedl
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          |
+-------------------------------+----------------------------------------+

Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Stefan Schmiedl
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          |
+-------------------------------+----------------------------------------+

Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Stefan Schmiedl
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          |
+-------------------------------+----------------------------------------+

Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Stefan Schmiedl
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          |
+-------------------------------+----------------------------------------+

Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Chris Burkert-2
Stefan Schmiedl wrote:
>
> Schon wieder ich :-)

Ich denke deine Kinder sitzen dir im Nacken :)

mfg
            Chris Burkert
--
http://www.chrisburkert.de/

Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Stefan Schmiedl
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          |
+-------------------------------+----------------------------------------+

Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Klaus Füller-3
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



Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Klaus Füller-3
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


Reply | Threaded
Open this post in threaded view
|

Re: Unterrichtsbeispiel OOP Jahrgang 12

Stefan Schmiedl
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          |
+-------------------------------+----------------------------------------+