47 lines
974 B
Python
47 lines
974 B
Python
|
|
||
|
class Shape:
|
||
|
def area(self):
|
||
|
pass
|
||
|
|
||
|
class Square(Shape):
|
||
|
def __init__(self, top_left, side):
|
||
|
self.__top_left = top_left
|
||
|
self.__side = side
|
||
|
|
||
|
def area(self):
|
||
|
return self.__side * self.__side
|
||
|
|
||
|
class Rectangle(Shape):
|
||
|
def __init__(self, top_left, height, width):
|
||
|
self.__top_left = top_left
|
||
|
self.__height = height
|
||
|
self.__width = width
|
||
|
|
||
|
def area(self):
|
||
|
return self.__height * self.__width
|
||
|
|
||
|
class Circle(Shape):
|
||
|
def __init__(self, center, radius):
|
||
|
self.__center = center
|
||
|
self.__radius = radius
|
||
|
|
||
|
def area(self):
|
||
|
PI = 3.141592653589793
|
||
|
return PI * self.__radius**2
|
||
|
|
||
|
|
||
|
class Geometry:
|
||
|
|
||
|
|
||
|
def area(self, shape):
|
||
|
if isinstance(shape, Square):
|
||
|
return shape.side * shape.side
|
||
|
|
||
|
if isinstance(shape, Rectangle):
|
||
|
return shape.height * shape.width
|
||
|
|
||
|
if isinstance(shape, Circle):
|
||
|
|
||
|
|
||
|
raise NoSuchShapeException()
|