Files
School/Anul 1/Semestrul 1/Fundamentals of Programming/FP/src/lecture/examples/ex38_inheritance.py
T
2024-08-31 12:07:21 +03:00

129 lines
2.6 KiB
Python

"""
Created on Nov 23, 2016
@author: Arthur
"""
class Shape:
def __init__(self, color):
# print("building a shape")
self._color = color
@property
def color(self):
return self._color
@color.setter
def color(self, new_color):
self._color = new_color
@property
def area(self):
return 0
def __str__(self):
return "a " + self.color + " shape"
class Rectangle(Shape):
def __init__(self, width, height, color):
Shape.__init__(self, color)
# print("building a rectangle")
self._width = width
self._height = height
@property
def width(self):
return self._width
@property
def height(self):
return self._height
@property
def area(self):
return self._width * self._height
def __str__(self):
return "a " + self.color + " rectangle"
class Square(Rectangle):
def __init__(self, side, color):
# print("building a square")
Rectangle.__init__(self, side, side, color)
@property
def side(self):
return self._width
def __str__(self):
return "a " + self.color + " square"
class Ellipse(Shape):
def __init__(self, major, minor, color):
Shape.__init__(self, color)
# print("building an ellipse")
self._major = major
self._minor = minor
@property
def major(self):
return self._major
@property
def minor(self):
return self._minor
@property
def area(self):
return 3.14 * self._minor * self._major
def __str__(self):
return "a " + self.color + " ellipse"
class Circle(Ellipse):
def __init__(self, radius, color):
Ellipse.__init__(self, radius, radius, color)
# print("building a circle")
@property
def radius(self):
return self.major
@property
def area(self):
return 3.14 * self.radius ** 2
def __str__(self):
return "a " + self.color + " circle"
if __name__ == "__main__":
shape = Shape("red")
print(str(shape) + ", area is = " + str(shape.area))
"""
The rectangle 'is a' shape
"""
rectangle = Rectangle(5, 2, "blue")
print(str(rectangle) + ", area is = " + str(rectangle.area))
"""
The square 'is a' particular rectangle
"""
square = Square(3, "green")
print(str(square) + ", area is =" + str(square.area))
ellipse = Ellipse(10, 6, "pink")
print(str(ellipse) + ", area is =" + str(ellipse.area))
"""
The circle 'is a' particular ellipse
"""
circle = Circle(8, "magenta")
print(str(circle) + ", area is =" + str(circle.area))