Смекни!
smekni.com

Класс "Грузовой лифт" (стр. 1 из 3)

Министерство образования Российской Федерации

Тульский государственный университет

Кафедра автоматики и телемеханики

Класс «Грузовой лифт»

Пояснительная записка

к контрольно-курсовой работе

по курсу «Объектно-ориентированное программирование»

Выполнила: студентка группы 220622

Павликова М. В.

Проверил: доцент кафедры АТМ

Середин О. С.

Тула 2004


Аннотация

В контрольно-курсовой работе рассмотрена задача создания класса «грузовой лифт» и описания операций над данным классом. Эта задача была спроектирована с использованием концепций объектно-ориентированного программирования и реализована на языке программирования С++. Пояснительная записка содержит 26 листов, 5 рисунков и 3 использованных источника.


Содержание

Стр.

Введение........................................................................................................... 3

Постановка задачи.......................................................................................... 5

Построение абстрактной модели класса «грузовой лифт»........................... 6

2.1 Построение диаграммы классов............................................................... 9

2.2 Построение диаграммы модулей............................................................ 10

Структура класса «грузовой лифт»............................................................. 11

3.1Формальное описание класса.................................................................. 11

3.2 Описание структур данных..................................................................... 13

3.3 Инструкция программисту..................................................................... 21

Демонстрационная программа..................................................................... 22

4.1Текст программы...................................................................................... 22

4.2 Инструкция пользователю...................................................................... 22

Тестовый пример........................................................................................... 23

Заключение.................................................................................................... 25

Список использованных источников............................................................ 26


Введение

Объектно-ориентированное программирование – это новый подход к созданию программ. По мере развития вычислительной техники возникали разные методики программирования. На каждом этапе создавался новый подход, который помогал программистам справляться с растущим усложнением программ. Первые программы создавались посредством ключевых переключателей на передней панели компьютера. Очевидно, что такой способ подходит только для очень небольших программ. Затем был изобретён язык ассемблера, который позволял писать более длинные программы. Следующий шаг был сделан в 1950 году, когда был создан первый язык высокого уровня Фортран.

Используя язык высокого уровня, программисты могли писать программы до нескольких тысяч строк длиной. Для того времени указанный подход к программированию был наиболее перспективным. Однако язык программирования, легко понимаемый в коротких программах, когда дело касалось больших программ, становился нечитабельным (и неуправляемым). Избавление от таких неструктурированных программ пришло после изобретения в 1960 году языков структурного программирования. К ним относятся языки Алгол, Паскаль, и С. Структурное программирование подразумевает точно обозначенные управляющие структуры, программные блоки, отсутствие (или, по крайней мере, минимальное использование) инструкций GOTO, автономные подпрограммы, в которых поддерживается рекурсия и локальные переменные. Сутью структурного программирования является возможность разбиения программы на составляющие элементы. Используя структурное программирование, программист может создавать и поддерживать программы свыше 50000 строк длинной.

Хотя структурное программирование, при его использовании для написания умеренно сложных программ, принесло выдающиеся результаты, даже оно оказывалось несостоятельным тогда, когда программа достигала определённой длины. Чтобы написать более сложную программу, необходим был новый подход к программированию. В итоге были разработаны принципы объектно–ориентированного программирования. ООП аккумулирует лучшие идеи, воплощённые в структурном программировании, и сочетает их с мощными новыми концепциями, которые позволяют оптимально организовывать ваши программы. Объектно-ориентированное программирование позволяет вам разложить проблему на составные части. Каждая составляющая становится самостоятельным объектом, содержащим свои собственные коды и данные, которые относятся к этому объекту. В этом случае вся процедура в целом упрощается, и программист получает возможность оперировать с гораздо большими по объёму программами.

Все языки ООП основаны на трёх основополагающих концепциях, называемых инкапсуляцией, полиморфизмом и наследованием:

Инкапсуляция – это механизм, который объединяет данные и код, манипулирующий с этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования.

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

Наследование – это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него.

В контрольно-курсовой работе реализуем класс «грузовой лифт». Лифты можно подразделять по множеству признаков, например: грузовые и легковые, пассажирские и непассажирские и т. д. В данном случае будет написан класс для демонстрации работы лифта для перевозки груза в сопровождении человека. В качестве параметров работы лифта будут использованы: грузоподъёмность, политика обслуживания запросов (останавливаться ли на промежуточных этажах), количество этажей в здании и активация безопасного режима работы. Данный класс может быть использован в аппаратуре управления лифтом, т. к. может быть настроен на конкретные условия работы. В качестве демонстрационной программы покажем порядок выполнения запросов при разных настройках лифта и разных входных данных.


1. Постановка задачи

Требуется создать класс «лифт», в котором будет реализована базовая функциональность лифта, затем создать производный от него класс «грузовой лифт». Класс должен быть настраиваемым на конкретные условия работы. Параметрами такой настройки могут быть: количество этажей в здании, политика обслуживания запросов, грузоподъёмность лифта и т. д. Должны быть продуманы вопросы безопасности и оптимизации работы лифта.


2. Построение абстрактной модели

класса «грузовой лифт»

В начале работы создан базовый класс «лифт», реализующий основную функциональность лифта.

Параллельно с базовым классом создан класс «груз» со следующими членами класса:

· этаж, на котором находится груз;

· этаж, на котором ему нужно оказаться;

· вес груза.

На базе классов «лифт» и «груз» создадим класс «грузовой лифт». Этот класс будем наследовать от класса «лифт», а одним из членов этого класса будет массив из элементов класса «груз».

Приведём описание класса «лифт»:

class lift

{

float weight;//грузоподъемность

int height;//кол-во этажей

bool stop;//остановка на промежуточных этажах

float weight_load;//вес груза

float exc_weight;//превышение грузоподъемности

bool safety;//активация безопасности

public:

lift();

void put_weight(float weigh);

void put_h(int h);

void put_stop(bool stp);

void put_wload(float weigh);

void put_excess(float exc);

void put_safety(bool saf);

float get_weight();

int get_h();

bool get_stop();

float get_wload();

float get_excess();

bool get_safety();

void global_tuning();

};

Класс имеет следующие члены-данные:

weight – грузоподъёмность лифта;

height – высота дома, в котором эксплуатируется лифт (количество этажей);

stop – политика обслуживания запросов (останавливаться ли на промежуточных этажах);

weight_pas – вес пассажиров и груза, находящихся в лифте;

exc_weight – допустимое превышение грузоподъёмности лифта;

safety – активация безопасной работы лифта.

Также в классе определены следующие операции над членами-данными:

· установка и возврат значений членов-данных;

· настройка лифта перед запуском в эксплуатацию;

· подъём и спуск кабины лифта;

· подсвечивание датчиков положения лифта на этаже, открытия дверей и сообщения о перегрузке.

Далее приведём описание класса «груз»:

class load

{

int first_floor;//начальный этаж

int last_floor;//конечный этаж

float weight_load;//вес сопровождаемого груза

float pas_weight;//вес пассажира

bool in_lift;//в лифте

bool out_lift;//вне лифта

public:

load();

void put_first(int floor);

void put_last(int floor);

void put_load(float car);

void put_in(bool in);

void put_out(bool out);

int get_first();

int get_last();

float get_load();

float get_pweight();

bool get_in();

bool get_out();

};

Класс имеет следующие члены-данные:

first_floor – этаж, на котором находится груз перед отправкой;

last_floor – этаж, на котором должен оказаться груз;

weight_load – вес груза;

pas_weight – вес пассажира, сопровождающего груз;

in_lift – нахождение груза в лифте;

out_lift – нахождение груза вне лифта.

В классе определены операции установки и возврата значений членов-данных.

На базе предыдущих двух классов получим класс «грузовой лифт». Описание класса приведено ниже:

class car_lift: public lift

{

load *cargo;//массив грузов

int qual;//количество вызовов

public:

car_lift();

~car_lift();

int get_first(int k);

int get_last(int k);

float get_load(int k);

float get_pweight(int k);

bool get_in(int k);

bool get_out(int k);

void put_load(int ql);

void turning();

void entry(load &l);

void out(load &l);

void overl(int floor);

void work();

};

В классе определены члены-данные: