class Shape
def area
raise NotImplementedError
end
end
class Rectangle < Shape
attr_accessor :width, :height
def initialize(width, height)
@width = width
@height = height
end
def area
@width * @height
end
end
class Square < Shape
attr_accessor :side
def initialize(side)
@side = side
end
def area
@side * @side
end
end
def calculate_area(shape)
shape.area
end
rectangle = Rectangle.new(10, 5)
square = Square.new(5)
puts calculate_area(rectangle) # => 50 (正しい)
puts calculate_area(square) # => 25 (正しい)