61 lines
1.3 KiB
Plaintext
61 lines
1.3 KiB
Plaintext
$ include "seed7_05.s7i";
|
|
|
|
const type: GraphicObj is new interface;
|
|
|
|
const proc: print (in GraphicObj: aGraphicObj) is DYNAMIC;
|
|
|
|
|
|
const type: Point is new struct
|
|
var integer: x is 0;
|
|
var integer: y is 0;
|
|
end struct;
|
|
|
|
type_implements_interface(Point, GraphicObj);
|
|
|
|
const func Point: Point (in integer: x, in integer: y) is func
|
|
result
|
|
var Point: newPoint is Point.value;
|
|
begin
|
|
newPoint.x := x;
|
|
newPoint.y := y;
|
|
end func;
|
|
|
|
const proc: print (in Point: aPoint) is func
|
|
begin
|
|
writeln("Point(" <& aPoint.x <& ", " <& aPoint.y <& ")");
|
|
end func;
|
|
|
|
|
|
const type: Circle is sub Point struct
|
|
var integer: r is 0;
|
|
end struct;
|
|
|
|
type_implements_interface(Circle, GraphicObj);
|
|
|
|
const func Circle: Circle (in integer: x, in integer: y, in integer: r) is func
|
|
result
|
|
var Circle: newCircle is Circle.value;
|
|
begin
|
|
newCircle.x := x;
|
|
newCircle.y := y;
|
|
newCircle.r := r;
|
|
end func;
|
|
|
|
const proc: print (in Circle: aCircle) is func
|
|
begin
|
|
writeln("Circle(" <& aCircle.x <& ", " <& aCircle.y <& ", " <& aCircle.r <& ")");
|
|
end func;
|
|
|
|
|
|
const proc: main is func
|
|
local
|
|
var Point: pnt is Point(1, 2);
|
|
var Circle: circ is Circle(3, 4, 5);
|
|
var GraphicObj: graph is Point.value;
|
|
begin
|
|
graph := pnt;
|
|
print(graph);
|
|
graph := circ;
|
|
print(graph);
|
|
end func;
|