Contributed by Chris Rathman
class Shape attr :x attr :y # constructor def initialize(initx, inity) setX(initx) setY(inity) end # get the x & y components for the object def getX return @x end def getY return @y end # set the x & y components for the object def setX(newx) @x = newx end def setY(newy) @y = newy end # move the x & y position of the object def moveTo(newx, newy) setX(newx) setY(newy) end def rMoveTo(newx, newy) moveTo(newx + getX, newy + getY) end end |
require "Shape.rb" class Rectangle < Shape attr :width attr :height # constructor def initialize(initx, inity, initwidth, initheight) super(initx, inity) setWidth(initwidth) setHeight(initheight) end # get the width & height of the object def getWidth return @Width end def getHeight return @Height end # set the width & height of the object def setWidth(newwidth) @width = newwidth end def setHeight(newheight) @height = newheight end # draw the rectangle def draw print("Drawing a Rectangle at:(", @x, ",", @y, "), width ", @width, ", height ", @height, "\n") end end |
require "Shape.rb" class Circle < Shape attr :radius # constructor def initialize(initx, inity, initradius) super(initx, inity) setRadius(initradius) end # get the radius of the object def getRadius return @radius end # set the radius of the object def setRadius(newradius) @radius = newradius end # draw the circle def draw print("Draw a Circle at:(", @x, ",", @y, "), radius ", @radius, "\n") end end |
require "Rectangle.rb" require "Circle.rb" # create a collection containing various shape instances scribble = [Rectangle.new(10, 20, 5, 6), Circle.new(15, 25, 8)] # iterate through the collection and handle shapes polymorphically scribble.each do |ashape| ashape.draw ashape.rMoveTo(100, 100) ashape.draw end # access a rectangle specific function arectangle = Rectangle.new(0, 0, 15, 15) arectangle.setWidth(30) arectangle.draw |
Drawing a Rectangle at:(10,20), width 5, height 6 Drawing a Rectangle at:(110,120), width 5, height 6 Draw a Circle at:(15,25), radius 8 Draw a Circle at:(115,125), radius 8 Drawing a Rectangle at:(0,0), width 30, height 15 |