Помощь - Поиск - Пользователи - Календарь
Полная версия: Движение
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Client
Задали задачку, сделать движение фигур(объектов) с использованием наследования и полиморфизма. Со стороны ООП правильно ли она сделана?
Lapp
Цитата(Client @ 22.02.2009 16:55) *
сделать движение фигур(объектов) с использованием наследования и полиморфизма. Со стороны ООП правильно ли она сделана?

1. В головной объект введи процедуру
procedure Move(u,v: integer);
begin
Hide;
x:=u;
y:=v;
Show
end;

В наследниках ее НЕ переопределяй.

2. Объект Line характеризуй не абсолютным положением второй точки, а смещением от x,y (то есть типа размером и наклоном). То же самое с прямоугольником - укажи стороны (могут быть отрицательными).

Рисовать по-английски draw smile.gif.
volvo
Цитата
Со стороны ООП правильно ли она сделана?
Со стороны ООП - нет... Конструкторы не наследуются от предков к потомкам, поэтому надо в КАЖДОМ типе, содержащем виртуальный метод иметь свой конструктор. Иначе будешь иметь проблемы smile.gif
У тебя же ни в tochka, ни в pryam конструкторов нет.
Client
Lapp, именно так я и хотел сделать, но из-за линии и прямоугольника передумал.
Цитата
Конструкторы не наследуются от предков к потомкам
Как в этом случае надо сделать?
volvo
Цитата
Как в этом случае надо сделать?
Во-первых, добавить конструкторы туда, где их нет... Во-вторых я бы как минимум немного поправил модуль primer. Вот так:
Нажмите для просмотра прикрепленного файла
Client
Цитата
я бы как минимум немного поправил модуль
В добавленных конструкторах
inherited init(x1, y1, c1) 
это вроде все изменения?
volvo
Не совсем... Я переделал Draw, оно теперь не получает цвет, а работает с тем цветом, который установлен Show/Hide базового типа.
Client
СПАСИБО!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.