
- •Лабораторна робота №12 Тема. Особливості генерації програмного коду в середовищі ibm Rational Rose
- •1. Підготовка моделі для генерації програмного коду
- •2. Перевірка моделі незалежно від вибору мови генерації коду
- •3. Створення компонентів для реалізації класів і відображення класів на компоненти
- •4. Вибір мови програмування й редагування властивостей генерації програмного коду
- •4. Вибір класу або компонента й генерація для нього програмного коду
4. Вибір класу або компонента й генерація для нього програмного коду
Вибір класу або компонента для генерації програмного коду означає виділення відповідного елемента моделі в браузері проекту. Стосовно до розглянутої моделі системи керування банкоматом для генерації програмного коду мовою ANSI C++ виберемо компонент із ім'ям MainATM.exe.
Генерація програмного коду в середовищі IBM Rational Rose можлива для окремого класу або компонента. Для цього потрібний елемент моделі попередньо варто виділити в браузері проекту й виконати операцію контекстного меню: ANSI C++ Generate Code (Мова ANSI C++ Генерувати код). У результаті цього буде відкрите діалогове вікно із пропозицією вибору класів для генерації програмного коду обраною мовою програмування (рис. 7). Після вибору відповідних класів і натискання кнопки OK програма IBM Rational Rose виконує генерацію коду.
Рис.
7. Вікно вибору класів для генерації
програмного коду
Для перегляду редагування створених файлів з текстом програмного коду мовою ANSI C++ призначений убудований текстовий редактор, якому можна відкрити за допомогою операції контекстного меню: ANSI C++ Browse Header (Мова ANSI C++ Переглянути заголовний файл) або ANSI C++ Browse Body (Мова ANSI C++ Переглянути файл реалізації) для обраного класу в браузері проекту.
Після генерації програмного коду для компонента MainATM.exe кожному класу, реалізованому в даному компоненті, буде відповідати 2 файли з текстом коду мовою ANSI C++. Так, наприклад, для класу ATMTransaction буде згенеровано заголовний файл із розширенням «h» (рис. 7) і файл реалізації з розширенням «cpp» (рис. 8).
-
#ifndef ATMTRANSACTION_H_HEADER_INCLUDED_B9F068FC
#define ATMTRANSACTION_H_HEADER_INCLUDED_B9F068FC
// Використається для збереження інформації про виконаний банкоматом
// транзакціях
//##ModelId=45D8F9AD00EA
class ATMTransaction
{
public:
// Викликається після того, як кредитна картка вставлена в Пристрій читання
// картки
//##ModelId=45D90D5303D8
createNewTransction();
// Викликається після того, як клієнтом уведено значення ПІН-коду із
// клавіатури банкомата
//##ModelId=45D91244007D
bool checkPinCod();
// Викликається після завершення всіх дій банкомата по обслуговуванню
// клієнта
//##ModelId=45D912BD03D8
completeTransction();
// Пристрій читання картки зчитує значення цього атрибута із кредитної
// картки клієнта
//##ModelId=45D908840138
int valueIDCard;
// Пристрій читання картки зчитує значення цього атрибута із кредитної
// картки клієнта
//##ModelId=45D910B9000F
int valuePINCard;
// Значення цього атрибута вводиться клієнтом із клавіатури банкомата
//##ModelId=45D911580290
int inputPINCard;
// Значення цього атрибута вводиться клієнтом із клавіатури банкомата
//##ModelId=45D911A201B5
float inputSumma;
};
#endif /* ATMTRANSACTION_H_HEADER_INCLUDED_B9F068FC */
Рис. 8. Вигляд вбудованого текстового редактора із завантаженим у нього заголовним файлом ATMTransaction.h
-
#include "ATMTransaction.h"
//##ModelId=45D90D5303D8
ATMTransaction::createNewTransction()
{
}
//##ModelId=45D91244007D
bool ATMTransaction::checkPinCod()
{
}
//##ModelId=45D912BD03D8
ATMTransaction::completeTransction()
{
}
Рис. 9. Вигляд убудованого текстового редактора із завантаженим у нього заголовним файлом ATMTransaction.cpp
Як видно з розгляду отриманого заголовного файлу, у ньому міститься оголошення відповідно до правил синтаксису мови ANSI C++ всіх операцій й атрибутів класу ATMTransaction. При цьому інформація про документування операцій й атрибутів міститься в коментарі перед відповідними елементами програми.
В файлі реалізації міститься заготівка для реалізації всіх операцій класу ATMTransaction відповідно до правил синтаксису мови ANSI C++. При цьому кожна з операцій має порожнє тіло реалізації, яке варто написати додатково, виходячи з функціональних вимог моделі й синтаксису мови програмування ANSI C++. Дану роботу зручніше виконувати в обраному інтегрованому середовищі програмування, наприклад, MS Visual C++ або Borland C++. При використанні інтегрованого середовища крім компіляції, налагодження й тестування вихідних модулів програми розроблювач одержує можливість доповнити додаток графічним інтерфейсом, необхідним для взаємодії з користувачем.
Варто помітити, що при встановленому на комп'ютер розроблювача інтегрованого середовища згенеровні файли з текстом програмного коду автоматично відкриваються в цьому середовищі після подвійного клацанні на піктограмі цих файлів. Проте, краще копіювати вміст цих файлів у попередньо створені програмні проекти для повного контролю в цих середовищах процесу програмування й налагодження додатків.
Згенеровані програмою IBM Rational Rose файли з текстом програмного коду містять мінімум інформації. Для включення додаткових елементів у програмний код варто змінити властивості генерації програмного коду, установлені за замовчуванням. Згенерувати файли з текстом програмного коду при різних значеннях властивостей обраної мови програмування пропонується читачам самостійно як вправа.
Слід зазначити, що ефект від використання засобу IBM Rational Rose проявляється при розробці масштабних проектів у складі команди або проектної групи. Дійсно, при розгляді моделі системи керування банкоматом може зложитися враження того, що написати й налагодити відповідну програму набагато простіше безпосередньо в тієї або іншому інтегрованому середовищі програмування.
Однак ситуація здасться не настільки тривіальною, коли стане необхідно виконати проект із декількома десятками варіантів використання й сотнею класів. Саме для подібних проектів явно виявляється перевага використання засобу IBM Rational Rose і нотації мови UML для документування й реалізації відповідних моделей.