Class Ruby

class Shape2D
  def initialize
    raise NotImplementedError.
      new("#{self.class.name} is an abstract class.")
  end
  def area
    raise NotImplementedError.
      new("#{self.class.name}#area is an abstract method.")
  end
end
class Square < Shape2D
  def initialize(length)
    @length = length
  end
  def area
    @length ** 2
  end
end
Square.new(10).area                              # => 100
# NotImplementedError: Shape2D is an abstract class.