Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
рамка ООП.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
282.11 Кб
Скачать

3 Проектный раздел

    1. Классы

Каждый автомобиль на автостраде – это картинка, которая движется. Имитация движения каждой картинки осуществляется с помощью классов. Каждый класс содержит информацию о модели автомобиля, размере картинки, скорости и о текущем положении на дороге. Для реализации проекта были созданы восемь классов: Car, Lancer, Coupe, Fit, Caldina, Cabriolet, Cruzak, Smart.

Базовый класс Car имеет следующие параметры:

1)protected:

short int model;- модель автомобиля

2) public:

short int speed; текущая скорость автомобиля

short int speed1; скорость №1

short int speed2; скорость №2

short int speed3; скорость №3

int X; текущее положения на дороге

int dl; длина картинки

int H; высота картинки

short int IndCrash; идентификатор аварии

3)методы:

Car(void) конструктор класса

virtual ~Car(void) деструктор класса

void Crash(void) «авария»

void OK(void) «исправление аварии»

int ShowModel(void) возвращает значение переменной model

Рассмотрим методы более подробно.

Car(void){

}

Конструктор базового класса. Он не является виртуальным, так как при создании объекта данного класса, мы напрямую вызываем конструктор другого класса – потомка. В конструкторах классов потомков объект получает все значение описанные выше в пунктах 1 и 2.

virtual ~Car(void)

{

}

Деструктор класса необходимо сделать виртуальным. Так как в противном случае буден вызван деструктор базового класса.

void Crash(void)

{

speed=0;

model=model+model*10;

}

Данный метод вызывается объектами классов при аварии двух и более автомобилей. Переменная, которая хранит значение текущей скорости обнуляется. Также меняется значение переменной, которая хранит модель автомобиля. При аварии двух и более автомобилей изменяется цвет автомобиля (по умолчанию цвет всех автомобилей серый, при аварии он изменяется на красный). На самом деле при аварии изменяется не цвет картинки, а изменяется сама картинка, то есть изменяется имя текущей картинки. Данный метод реализует подобную замену.

void OK(void) {

model=model/10;

}

Метод изменяет имя текущей картинки. То есть возвращает картинку, которая была текущей до вызов функции Crash.

int ShowModel(void) {

return model;

}

Возвращает значения переменной model. Этот метод необходим, так как переменная model является защищенной (protected).

3.2 Алгоритм

Для реализации постоянного движения на автостраде весь алгоритм будет помещен в бесконечный цикл for(;;) .

1) for(;;)

2) создается объект класса Car. И к нему случайный образо выбирется один из конструкторов классов – потомков. Для того,чтобы исключить наложение двух картинок автмобилей друг на друга, до создания объекта следует выполнит проверку, нет ли рядом недавно созданных объектов.

3) для эффекта паралелльного, независимого движения автомобилей нам понадобится структура – контейнер, в котором будут хранится все объекты базового класса. Лучше всего для данной задачи подойдет такая структура как очередь.

В данной проекте для реализации контейнера была использована стандартная библиотека шаблонов – «STL». Но так как в «STL» очередб не допускает прямого обращения к каждому своему элементу, в альтернативу был взят динамческий массив «Vector».

4)затем для каждого элемента выбранного контейнера (каждый элемент – это объект класса «Car») следует:

1. проверка условий на аварию

2. изменение текущей позиции( измениение значения переменной X)

3. прорисовка картинки по текущим координатам.

4. выбор текущей скорости

5. каждый объект при определенном моменте времени заканчивает свое движение. Для того чтобы наш контейнер не заполнялся, необходимо ввести усовие завершение движения и при его выполнении удалить ненужный объект.