Polymorphism: Difference between revisions

no edit summary
No edit summary
Line 1,440:
Point
Circle
</pre>
 
=={{header|EMal}}==
<syntaxhighlight lang="emal">
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)
p.print()
c.print()
watch(p)
watch(c)
</syntaxhighlight>
{{out}}
<pre>
I am a Point at (0,0)
I am a Point at (32,32)
I am a Point at (20,20)
I am a Point at (10,0)
I am a Circle with center at (0,0) and radius is 0
I am a Circle with center at (18,18) and radius is 6
I am a Circle with center at (10,10) and radius is 5
I am a Circle with center at (7,7) and radius is 4
I am a Point at (20,20)
I am a Circle with center at (10,10) and radius is 5
Point: <§(0x02bf8098)>
Point, Circle: <§(0x00bb8560)>
</pre>
 
226

edits