Основная программа
В основной программе объявим массив объектов-машин:
const N=3; var cars: array [1..N] of TCar;
Как вы помните, это ещё не объекты, а ссылки — переменные, в которые можно записать адреса объектов класса ТСаr. Теперь нужно создать сами объекты:
var i: integer; ... for i:=1 to N do cars[i]:=TCar.Create(road, i, 2.0*i);
При вызове конструктора задаются три параметра: адрес объекта «дорога» (его нужно создать до выполнения этого цикла), номер полосы и скорость. В приведённом варианте машина на полосе с номером i движется со скоростью 2i единиц за один интервал моделирования.
Сам цикл моделирования получается очень простой: на каждом шаге вызывается метод move для каждой машины:
repeat for i:=1 to N do cars[i].move; until keypressed;
Этот цикл закончится тогда, когда пользователь нажмёт любую клавишу и функция keypressed, расположенная Е модуле Crt, вернёт значение True.
Полностью основная программа выглядит так:
uses Crt; const N = 3; var road: Troad; cars: array [1..N] of TCar; i:integer begin road:=TRoad.Create(60, N); for i:=1 to N do cars[i]:=TCar.Create(road, i, 2.0*i); repeat for i:=1 to N do cars[i].move; until keypressed; end.
Можно ли было написать такую же программу, не используя объекты? Конечно, да. И она получилась бы короче, чем наш объектный вариант (с учётом описания классов). В чём же преимущества ООП?
Мы уже отмечали, что ООП — это средство разработки больших программ, моделирующих работу сложных систем. В этом случае очень важно, что при использовании объектного подхода:
• основная программа, описывающая решение задачи в целом, получается простой и понятной; все команды напоминают действия в реальном мире («машина № 2, вперёд!»);
• разработку отдельных классов объектов можно поручить разным программистам, при этом каждый может работать независимо от других;
• если объекты классов Дорога и Машина понадобятся в других разработках, можно будет легко использовать уже готовые классы.
Следующая страница Вопросы и задания