Node:Mini-OOF Example, Next:Mini-OOF Implementation, Previous:Basic Mini-OOF Usage, Up:Mini-OOF
A short example shows how to use this package. This example, in slightly
extended form, is supplied as
object class method init method draw end-class graphical
This code defines a class
graphical with an
draw. We can perform the operation
draw on any
graphical object, e.g.:
100 100 t-rex draw
t-rex is an object or object pointer, created with e.g.
graphical new Constant t-rex.
For concrete graphical objects, we define child classes of the
graphical class cell var circle-radius end-class circle \ "graphical" is the parent class :noname ( x y -- ) circle-radius @ draw-circle ; circle defines draw :noname ( r -- ) circle-radius ! ; circle defines init
There is no implicit init method, so we have to define one. The creation
code of the object now has to call init explicitely.
circle new Constant my-circle 50 my-circle init
It is also possible to add a function to create named objects with
automatic call of
init, given that all objects have
on the same place:
: new: ( .. o "name" -- ) new dup Constant init ; 80 circle new: large-circle
We can draw this new circle at (100,100) with:
100 100 my-circle draw