Roelof Wobben wrote:
Camille Teruel schreef op 1-4-2014 15:08:
On 1 avr. 2014, at 14:52, Roelof Wobben <r.wobben@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