Roelof Wobben wrote:
Camille Teruel schreef op 1-4-2014 15:08:
On 1 avr. 2014, at 14:52, Roelof Wobben <r.wob...@home.nl> wrote:
Hello,
Hello,
Im on this page now: http://squeak.preeminent.org/tut2007/html/017.html
I do not understand one thing.
Where do I put the initialize "script"
#initialize is not a script, it's a method. When an object is
instantiated (for ex with: MyObject new) #initialize is automatically
sent to it.
This is the place to put your newly created object in a correct
initial state.
In your class, you just define a protocol named for example
"initialization" where you put all the initialization-related methods.
Note that protocols have no meaning, i.e. they don't change how your
objects behave, they're just here to help you classify
the methods of a class by concerns.
So the tutorial tell you to create two methods: #initialize that is
automatically called after an object has been instantiated and
#initializeActiveSegments where you
put some other initialization logic, that's all.
When I put it on the initializeActiveSegments then initialize get
not found.
Sorry, I don't understand.
Or must I make a seperate protocol named ActiveSegments for it.
No use the same protocol "initialization" or "initialize-release" or
whatever.
Oke,
I changed it so I have this :
Laser-Game-Model
with as classes:
- BlankCell
- Grid
- MirrorCell
-TargetCell
BlankCell has the following protocols:
- initializing-release
- testing
Initializing - release contains the following methods:
- initialize
- initializeActiveSegments
testing contains the following methods:
isOn
isOff
but when I run the test-runner I see this : MessageNotUnderstood :
BlankCell >> activeSegments.
Roelof
Now first as an aside, I'll just mention something that caught me out
when I went through this tutorial when I was quite new to Smalltalk,
which is paying attention to whether you are defining methods on the
instance-side or the class-side, as indicated by which of the <instance>
or <class> button is highlighted.
Now for BlankCell, if you select protocol --all--
do you see a method #activeSegments ?
The lack of that method is the cause of the MessageNotUnderstood.
Looking at the previous page it says "Add an instance variable
"activeSegments"
and "We will use Squeak's built-in tools to create accessors for this
new instance variable"
I would say something went wrong there. Consider the last snapshot of
page 16.
cheers -ben