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



Reply via email to