39 lines
1.5 KiB
Plaintext
39 lines
1.5 KiB
Plaintext
INSTALL @lib$ + "CLASSLIB"
|
|
|
|
REM Create parent class with void 'doprint' method:
|
|
DIM PrintableShape{doprint}
|
|
PROC_class(PrintableShape{})
|
|
|
|
REM Create derived class for Point:
|
|
DIM Point{x#, y#, setxy, retx, rety, @constructor, @@destructor}
|
|
PROC_inherit(Point{}, PrintableShape{})
|
|
DEF Point.setxy (x,y) : Point.x# = x : Point.y# = y : ENDPROC
|
|
DEF Point.retx = Point.x#
|
|
DEF Point.rety = Point.y#
|
|
DEF Point.@constructor Point.x# = 1.23 : Point.y# = 4.56 : ENDPROC
|
|
DEF Point.@@destructor : ENDPROC
|
|
DEF Point.doprint : PRINT Point.x#, Point.y# : ENDPROC
|
|
PROC_class(Point{})
|
|
|
|
REM Create derived class for Circle:
|
|
DIM Circle{x#, y#, r#, setxy, setr, retx, rety, retr, @con, @@des}
|
|
PROC_inherit(Circle{}, PrintableShape{})
|
|
DEF Circle.setxy (x,y) : Circle.x# = x : Circle.y# = y : ENDPROC
|
|
DEF Circle.setr (r) : Circle.r# = r : ENDPROC
|
|
DEF Circle.retx = Circle.x#
|
|
DEF Circle.rety = Circle.y#
|
|
DEF Circle.retr = Circle.r#
|
|
DEF Circle.@con Circle.x# = 3.2 : Circle.y# = 6.5 : Circle.r# = 7 : ENDPROC
|
|
DEF Circle.@@des : ENDPROC
|
|
DEF Circle.doprint : PRINT Circle.x#, Circle.y#, Circle.r# : ENDPROC
|
|
PROC_class(Circle{})
|
|
|
|
REM Test the polymorphic 'doprint' function:
|
|
PROC_new(mypoint{}, Point{})
|
|
PROC(mypoint.doprint)
|
|
PROC_discard(mypoint{})
|
|
PROC_new(mycircle{}, Circle{})
|
|
PROC(mycircle.doprint)
|
|
PROC_discard(mycircle{})
|
|
END
|