Класс Машина
Теперь можно описать класс Машина (в программе назовём его ТСаг). Объекты класса ТСаг имеют три свойства и один метод — процедуру move. Координата X и скорость V — это вещественные значения, а номер полосы Р — целое.
type ТСаr = class X, V: real; Р: integer; road: TRoad; procedure move; constructor Create(roadO: TRoad; p0: integer; v0: real); end;
Так как объекты-машины должны обращаться к объекту «дорога», в область данных включено дополнительное поле road. Конечно, это не значит, что в состав машины входит дорога. Напомним, что это только ссылка, и сразу после создания объекта-машины нужно записать в неё адрес заранее созданного объекта «дорога». Эту привязку удобно сделать прямо в конструкторе, при создании объекта. Заодно мы определяем полосу движения и скорость, а начальная координата X автоматически устанавливается равной нулю:
constructor Create(roadO: TRoad; p0: integer; v0: real); begin road:=road0; P:=p0; V:=v0; end;
Теперь займёмся реализацией (программированием) метода move (англ. move — двигаться). В этом методе нужно вычислить новую координату X машины и, если она находится за пределами дороги, установить её в ноль (машина появляется слева на той же полосе). Изменение координаты при равномерном движении описывается формулой
X = Х0 + V • Δt,
где Х0 и X — начальная и конечная координаты, V — скорость, a Δt — время движения. Вспомним, что любое моделирование физических процессов на компьютере происходит в дискретном времени, с некоторым интервалом дискретизации. Для простоты можно измерять время в этих интервалах, а за скорость V принять расстояние, проходимое машиной за один интервал. Тогда метод move, описывающий изменение положения машины за один интервал (Δt = 1), может выглядеть так:
procedure TCar.move; begin X:=X+V; if X > road.Length then X:=0; end;
Следующая страница Основная программа