@Sidorenko-ml

Как реализовать ДЗ по ООП?

Всем здравствуйте. Помогите пожалуйста разобраться с заданием)
Не могу до конца понять, как это всё выстроить.
Класс Point, принимает 2 параметра, эти параметры являются точкой в системе координат X и Y.
Дальше, класс Line, необходимо реализовать композицию и добавить метод length. Надеюсь композицию реализовал правильно. Метод length тоже реализован вроде как правильно у меня. Что должно быть в классе Shape? Просто добавить 2 метода, а после в других в классах, которые будут наследоваться от него, нужно будет переопределить эти 2 метода? Плюс эти 2 метода "должны быть аксессорами(@property)". Это декоратор как я понял.
Помогите разобраться пожалуйста). Затык возник ещё и Square. Он наследуется от Line и Shape. Соответственно должны быть 2 точки(4 параметра), должен работать метод length из Line, ну и переопределить методы area и perimeter?

6390cf9d0f7fc388669630.jpeg
class Point():
    def __init__(self, x:float, y:float):
        self.x = x
        self.y = y
        print(f'Точка с координатами x: {self.x} и y: {self.y}')
        


class Line():
    def __init__(self,x,y,x1,y1):
        self.p1 = Point(x,y)
        self.p2 = Point(x1,y1)

    def length(self):
        print(f'Длина линии равна {self.p2.x - self.p1.x}')

x = Line(3,4,11,14.3)
x.length()


class Shape():
    def __init__(self, x:float, y:float):
        self.x = x
        self.y = y
    
    def area(self):
        print('Площадь')
    
    def perimeter(self):
       print('Периметр')    
    

class Square(Line, Shape):
    def __init__(self,x:float, y:float, x1: float, y1: float):
        self.x = x
        self.y = y
        self.x1 = x1
        self.y1 = y1
    
    def length(self):
        return super().length()
    
# class Rect():
#     pass


# class Cube():
#     pass


# class Shape():
#     pass
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы