Task

Create two classes   Point(x,y)   and   Circle(x,y,r)   with a polymorphic function print, accessors for (x,y,r), copy constructor, assignment and destructor and every possible default constructors




setClass("point",
   representation(
      x="numeric",
      y="numeric"),
   prototype(
      x=0,
      y=0))
 
# Instantiate class with some arguments
p1 <- new("point", x=3)   
# Access some values
p1@x    # 3
# Define a print method
setMethod("print", signature("point"),
   function(x, ...)
   {
      cat("This is a point, with location, (", x@x, ",", x@y, ").\n") 
   })
print(p1)
 
# Define a circle class
setClass("circle",
   representation(
      centre="point",
      r="numeric"),
   prototype(
      centre=new("point"),
      r=1))
circS4 <- new("circle", r=5.5)
# Access some values
circS4@r    # 5.5
circS4@centre@x   # 0
# Define a print method
setMethod("print", signature("circle"),
   function(x, ...)
   {
      cat("This is a circle, with radius", x@r, "and centre (", x@centre@x, ",", x@centre@y, ").\n")
   })
print(circS4)