42 lines
922 B
Plaintext
42 lines
922 B
Plaintext
class Point {
|
|
construct new(x, y) {
|
|
_x = x
|
|
_y = y
|
|
}
|
|
|
|
static new(x) { new(x, 0) }
|
|
static new() { new(0, 0) }
|
|
|
|
static fromPoint(p) { new(p.x, p.y) }
|
|
|
|
x { _x }
|
|
y { _y }
|
|
|
|
print() { System.print("Point at (%(_x), %(_y))") }
|
|
}
|
|
|
|
class Circle is Point {
|
|
construct new(x, y, r) {
|
|
super(x, y)
|
|
_r = r
|
|
}
|
|
|
|
static new(x, r) { new(x, 0, r) }
|
|
static new(x) { new(x, 0, 0) }
|
|
static new() { new(0, 0, 0) }
|
|
|
|
static fromCircle(c) { new(c.x, c.y, c.r) }
|
|
|
|
r { _r }
|
|
|
|
print() { System.print("Circle at center(%(x), %(y)), radius %(_r)") }
|
|
}
|
|
|
|
var points = [Point.new(), Point.new(1), Point.new(2, 3), Point.fromPoint(Point.new(3, 4))]
|
|
for (point in points) point.print()
|
|
var circles = [
|
|
Circle.new(), Circle.new(1), Circle.new(2, 3),
|
|
Circle.new(4, 5, 6), Circle.fromCircle(Circle.new(7, 8, 9))
|
|
]
|
|
for (circle in circles) circle.print()
|