53 lines
1.6 KiB
Plaintext
53 lines
1.6 KiB
Plaintext
type Point
|
|
fun default = Point by block do return Point(0, 0) end
|
|
fun copy = Point by Point p do return Point(p.getX(), p.getY()) end
|
|
fun byX = Point by int x do return Point(x, 0) end
|
|
fun byCoords = Point by int x, int y do return Point(x, y) end
|
|
model
|
|
int x, y
|
|
new by int x, int y
|
|
me.x = x
|
|
me.y = y
|
|
end
|
|
fun getX = int by block do return me.x end
|
|
fun setX = void by int x do me.x = x end
|
|
fun getY = int by block do return me.y end
|
|
fun setY = void by int y do me.y = y end
|
|
fun print = void by block
|
|
writeLine("I am a Point at (" + me.x + "," + me.y + ")")
|
|
end
|
|
end
|
|
type Circle extends Point
|
|
fun default = Circle by block do return Circle(0, 0, 0) end
|
|
fun copy = Circle by Circle c do return Circle(c.getX(), c.getY(), c.getR()) end
|
|
fun byCenterAndRadius = Circle by Point p, int r do return Circle(p.getX(), p.getY(), r) end
|
|
fun byCoordsAndRadius = Circle by int x, int y, int r do return Circle(x, y, r) end
|
|
model
|
|
int r
|
|
new by int x, int y, int r :base(x, y)
|
|
me.r = r
|
|
end
|
|
fun getR = int by block do return me.r end
|
|
fun setR = void by int x do me.r = r end
|
|
fun print = void by block
|
|
writeLine("I am a Circle with center at (" + me.x + "," + me.y + ") and radius is " + me.r)
|
|
end
|
|
end
|
|
type Main
|
|
Point.default().print()
|
|
Point.copy(Point(32, 32)).print()
|
|
Point.byCoords(20, 20).print()
|
|
Point.byX(10).print()
|
|
Circle.default().print()
|
|
Circle.copy(Circle(18, 18, 6)).print()
|
|
Circle.byCoordsAndRadius(10, 10, 5).print()
|
|
Circle.byCenterAndRadius(Point(7, 7), 4).print()
|
|
Point p = Point(20, 20)
|
|
Point c = Circle(10, 10, 5)
|
|
Circle c1 = c
|
|
p.print()
|
|
c.print()
|
|
watch(p)
|
|
watch(c)
|
|
watch(c1)
|