5.5 הורשה פתרון
from abc import ABC, abstractmethod
class Drawable(ABC):
@abstractmethod
def draw(self):
pass
class Shape(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
class Circle(Shape, Drawable):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
def perimeter(self):
return 2 * 3.14 * self.radius
def draw(self):
print("Drawing Circle")
class Rectangle(Shape, Drawable):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
def draw(self):
print("Drawing Rectangle")
# Test the implementation
circle = Circle(5)
rectangle = Rectangle(4, 6)
print("Circle Area:", circle.area()) # Output: 78.5
print("Circle Perimeter:", circle.perimeter()) # Output: 31.4
circle.draw() # Output: Drawing Circle
print("Rectangle Area:", rectangle.area()) # Output: 24
print("Rectangle Perimeter:", rectangle.perimeter()) # Output: 20
rectangle.draw() # Output: Drawing Rectangle