Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив3 / Kursach(33) / 05.ТСПП (курсачь).docx
Скачиваний:
32
Добавлен:
07.08.2013
Размер:
311.65 Кб
Скачать

3. Проектування програмного блоку

3.1 Проектування системи

Cистема ліфтів (клас Elevator).

Ліфти можуть бути приблизно однаковими, тому є сенс зробити їх об'єктами одного класу під назвою Elevator. У цьому класі містяться дані, характерні для кожного окремо взятого ліфта: поточне місце розташування, напрямок руху, номери поверхів призначення і т. д.

Методи Elevator ініціалізували за допомогою конструктора окремі ліфти, встановлюють два метронома для кожної кабінки, виводять зображення ліфтів, їх напрямки, приймають рішення, рухають ліфти і отримують номери кінцевих поверхів від користувача.

##

стічка

Клас Elevator

9…16

-car_number

номер ліфта

-“-

-current_dir

в якому направленні

-“-

-current_floor

де ми

-“-

-destination

направлення

-“-

-old_floor

куди їдем

-“-

-ptrBuilding

 

-“-

-loading_timer

таймер (не нуль)

-“-

-unloading_timer

таймер (не нуль)

18..

+Elevator

конструктор

220..

+car_display

виводим образ ліфта

34.

+car_tick1

метроном-1

270..

+car_tick2

метроном-2

45..

+decide

прийняте рішення

208..

+dests_display

вивести конечні етажі

##

стрічка

Клас Elevator

292..

+get_direction

куди їдем

297..

+get_distinations

кінцевий етаж

286..

+get_floor

даний етаж

275

+ move

рух ліфта

Табл. 1. Діаграма класу Elevator

Будівля (клас Building)

Є дані про все будівлі в цілому. Ці дані будуть частиною класу Building. По-перше, є массив запитів з поверхів floor_request. Це список поверхів, де люди, що чекають ліфта, натиснули кнопку «вгору» або «вниз» і тим самим попросили ліфт під'їхати до них. Будь-який з ліфтів може відповідати на ці запити, тому всі вони повинні мати доступ до цього масиву. У програмі використовується масив розміром Nx2 типу booL, де N - кількість поверхів, а два (2) поля на кожен поверх дозволяють розділяти запити на рух вгору і вниз.

Всі ліфти звертаються до цього масиву, щоб зрозуміти, що їм робити далі. Крім того, кожен ліфт повинен бути обізнаний про те, де знаходяться інші. Якщо один з ліфтів знаходиться на першому поверсі, то немає ніякого резону гнати його на п'ятнадцятий, якщо є ліфт, що знаходиться на десятому. Виконувати запити повинен найближчий до місця призначення ліфт. Для забезпечення інформування ліфтів про всіх інших в клас Building вводиться також масив car_list. Масив car_list дозволяє кожній кабінці опитувати всі інші, з'ясовуючи їх місцезнаходження і напрямок руху.

Методи Building ініціалізують систему, встановлюють метроном, отримують і виводять запити.

##

стрічка

Класс Building

9, 10

-car_list

масив ліфтів

-“-

-floor_request

масив запросів з етажів

13..

+Building

конструктор

74..

+ get_cars_dir

Направлення руху

69..

+ get_cars_floor

Пошук ліфту

64..

+ set_floor_req

Установка запросів

49..

+ get_floor_req

Перевірка запросів

33..

+ master_tick

метроном

96..

+ record_floor_reqs

Получення запросів

79..

+ show_floor_reqs

Вивід запросів

Табл. 2. Діаграма класу Building