Рефераты. Класс "Грузовой лифт"

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();

};

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

сargo – массив элементов класса «груз»;

qual – количество человек вызовов лифта.

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

·                    установка количества пассажиров, ожидающих лифт;

·                    ввод данных для работы лифта;

·                    изменение членов-данных класса в связи со входом пассажира в лифт;

·                    изменение членов-данных класса в связи с выходом пассажира из лифта;

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

·                    движение лифта.

 

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


Диаграмма классов показывает классы и их отношения, тем самым, представляя логический аспект проекта. Отдельная диаграмма классов представляет определенный ракурс структуры классов. На стадии анализа используются диаграммы классов, чтобы выделить общие роли и обязанности сущностей, обеспечивающих требуемое поведение системы. На стадии проектирования пользуются диаграммой классов, чтобы передать структуру классов, формирующих архитектуру системы.

Два главных элемента диаграммы классов - это классы и их основные отношения.

Основные атрибуты и функции данных классов, а также их взаимосвязь и иерархию удобно показать на диаграмме классов (рисунок 2.1).


Рис. 2.1 – Диаграмма классов для объекта «грузовой лифт»


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


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

Единственная связь, которая может существовать между двумя модулями, - компиляционная зависимость - представляется стрелкой, выходящей из зависимого модуля. В C++ такая зависимость указывается директивой #include. В множестве компиляционных зависимостей не могут встречаться циклы. Чтобы определить частичную упорядоченность компиляций, достаточно выполнить частичное упорядочение структуры модулей системы.

На рисунке 2.2 показана диаграмма модулей для нашей задачи.



Рис. 2.2 – Диаграмма модулей


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


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

 

Далее приведены заголовочные h –файлы с комментариями.

Заголовочный файл класса «груз»:

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();//возврат нахождения груза вне лифта

};

Заголовочный файл класса «лифт»:

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();//настройка лифта

};

Заголовочный файл класса «грузовой лифт»:

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();//работа лифта

};


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


Далее приведено описание структур данных и функций используемых классов.

·                    void global_turning()

Функция используется для глобальной настройки работы лифта. Пример реализации функции приведён ниже:

void lift::global_tuning()

{

clrscr();

float f_number=0;

int i_number=0;

cout<<"Глобальная настройка работы лифта:"<<endl;

do

{

cout<<"Грузоподъемность лифта(кг): ";

cin>>f_number;

if(f_number<=0)

cout<<"Грузоподъемность должна быть больше 0"<<endl;

} while (f_number<=0);

put_weight(f_number);

cout<<"Активировать безопасность?('да'-1) ";

cin>>i_number;

if(i_number==1) put_safety(true);

else put_safety(false);

if(get_safety()==false)

{

do

{

cout<<"Допустимое превышение грузоподъемности(кг): ";

cin>>f_number;

if(f_number<0)

cout<<"Превышение грузоподъемности должно быть положительным"<<endl;

} while (f_number<0);

put_excess(f_number);

}

do

{

cout<<"Количество этажей в здании: ";

cin>>i_number;

if(i_number>25) cout<<"Количество этажей должно быть меньше 25"<<endl;

} while (i_number>25);

put_h(i_number);

cout<<"Останавливаться на промежуточных этажах?('да'-1) ";

cin>>i_number;

if(i_number==1) put_stop(true);

else put_stop(false);

}

В данной реализации производится проверка вводимых значений, чтобы избежать некорректных данных. Например, грузоподъёмность лифта должна быть положительной (больше 0), а количество этажей в здании, в котором эксплуатируется лифт, меньше 25 (это связано демонстрационной программой).

·                    int up(int a, int b)

Функция используется для подъёма кабины лифта с этажа a на этаж b. Пример реализации функции приведён ниже:

int up(int a, int b)

{

char num[10];

delay(4000);

setcolor(0);

outtextxy(25,47,"Двери открыты!");

int x=5+(a-1)*25;

for(int i=a;i<=b;i++)

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.