Лабораторная работа 8
Объявлен класс Point – точка на плоскости
class Point:
def __init__(self, x, y):
''' Конструктор
x - координата x точки
y - координата y точки
'''
self.x = x
self.y = y
и класс Shape – фигура
class Shape:
def __init__(self, x, y):
''' Конструктор
x - координата x центра окружности
y - координата y центра окружности
'''
self.x = x
self.y = y
Создайте класс Rectangle на основе класса Shape. Представитель класса Rectangle создаётся при помощи конструкутора с четырьмя параметрами, задающими положение центра прямоугольника его ширину и высоту.
class Rectangle(Shape):
def __init__(self, x, y, a, b):
super().__init__(x,y)
self.a = a
self.b = b
Добавьте к классу Rectangle метод area, который вычисляет и возвращает площадь прямоугольника.
class Rectangle(Shape):
def __init__(self, x, y, a, b):
super().__init__(x,y)
self.a = a
self.b = b
def area(self):
return self.a*self.b
R = Reactangel(0,0,3,2)
print(R.area())
> 6
Добавьте к классу Rectangle метод perimeter, который вычисляет и возвращает периметр прямоугольника.
R = Reactangel(0,0,3,2)
print(R.perimeter())
> 10
Создайте класс Circle на основе класса Shape. Параметры конструктора для создания экземляра класса Circle – положение центра окружности и её радиус.
C = Circle(0,0,4)
Добавьте к классу Circle метод area, который вычисляет и возвращает площадь, ограниченную окружностью.
C = Circle(0,0,4)
print(C.area)
Добавьте к классу Circle метод perimeter, который вычисляет и возвращает длину окружности.
C = Circle(0,0,4)
print(C.perimeter)
Создайте класс Ellipse на основе класса Shape. Параметры конструктора для создания экземляра класса Ellipse – положение центра, большая и малая полуось.
E = Ellipse(0,0,4,2)
Добавьте к классу Ellipse метод area, который вычисляет и возвращает площадь, ограниченную эллипсом.
E = Ellipse(0,0,4,2)
print(E.area())
Создайте класс отрезок – Line. Параметры конструктора для создания экземляра класса Line – две точки – объекты типа Point.
L = Line( Point(0,0), Point(1,1) )
Добавьте к классу Line метод length, который вычисляет и возвращает длину отрезка.
L = Line( Point(0,0), Point(1,1) )
print(L.length())
Напишите функцию intersect с двумя аргументами типа Line. Функция должна возвращать пустой кортеж, если отрезки не пересекаются, или кортеж с одним элементом типа Point – точкой пересечения отрезков.
L1 = Line( Point(0, 0), Point(5,1) )
L2 = Line( Point(0,-3), Point(5,6) )
print( intesect(L1, L2) )
В классе Rectangle определите get и set методы для всех свойств:
- get_x, set_x
- get_y, set_y
- get_a, set_dx,
- get_b, set_b.
R = Rectangle(0,0,1,3)
R.set_a(4)
print( R.get_a() )
Определите метод get_area, возвращающий площадь прямоугольника.
R = Rectangle(0,0,1,3)
print( R.get_area() )
Определите метод get_vertices, который возвращает список пар координат вершин прямоугольника
((x1, y1), (x2, y2), (x3,y3), (x4, y4))
Перепишите класс Rectangle, защитив свойства (x, y, a, b) прямоугольника от прямого изменения.
R = Rectangle(0,0,1,3)
R.a = 3
Перепишите класс Rectangle, используя синтаксис property для чтения и изменения свойств.
R = Rectangle(0,0,1,3)
R.a = 2
print(R.area)
Перепишите класс Rectangle, используя синтаксис @property для чтения и изменения свойств, включая площадь прямоугольника.
R = Rectangle(0,0,1,3)
R.a = 2
print(R.area)