Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, полный углублённый курс, по 4 часа в неделю)



Урок 89
Создание объектов в программе
(§48. Создание объектов в программе)




Содержание урока

Класс Дорога

Класс Машина

Основная программа

Вопросы и задания

Задачи


Класс Машина


Теперь можно описать класс Машина (в программе назовём его ТСаг). Объекты класса ТСаг имеют три свойства и один метод — процедуру 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;


Следующая страница Основная программа



Cкачать материалы урока






Наверх