Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метод_лаб_укр.doc
Скачиваний:
90
Добавлен:
20.02.2016
Размер:
834.05 Кб
Скачать
  1. Лабораторна робота №3

  2. Розробка діаграм класів

Ціль роботи

Освоїти:

  • особливості розробки діаграм класів у середовищі IBM Rational Rose 2003;

  • додавання класу на діаграму класів і редагування його властивостей;

  • стереотипи класу сутності й керуючого класу і їх графічне представлення;

  • графічні стереотипи граничного класу й інтерфейсу;

  • додавання атрибутів класів;

  • діалогове вікно редагування властивостей атрибута класу;

  • додавання операцій класів;

  • діалогове вікно редагування властивостей операції класу;

  • додавання асоціації на діаграму класів і редагування її властивостей;

  • додавання відносин агрегації й композиції й редагування їх властивостей;

  • додавання відносини узагальнення й редагування його властивостей;

  • побудова діаграми класів моделі банкомата.

Хід роботи.

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

  • вікно діаграми класів з'являється за замовчуванням у робочім вікні діаграми після створення нового проекту;

  • клацнути на кнопці із зображенням діаграми класів на стандартній панелі інструментів;

  • розкрити логічне представлення (Logical View) у браузері проекту й двічі клацнути на піктограмі Main (Головна);

  • виконати операцію головного меню: BrowseClass Diagram (ОглядДіаграмакласів).

При цьому з'являється нове вікно із чистим робочим аркушем діаграми класів і спеціальна панель інструментів, що містить кнопки із зображенням графічних примітивів, необхідних для розробки діаграми класів (табл. 3.1). Призначення окремих кнопок панелі можна довідатися також зі спливаючих підказок.

Таблиця 3.1.

Призначення кнопок спеціальної панелі інструментів для діаграми класів

Графічне зображення

Спливаюча підказка

Призначення кнопки

Selection Tool

Перетворює зображення курсору у форму стрілки для наступного виділення елементів на діаграмі

Text Box

Додає на діаграму текстову область

Note

Додає на діаграму примітку

Anchor Note to Item

Додає на діаграму зв'язок примітки з відповідним графічним елементом діаграми

Class

Додає на діаграму клас

Interface

Додає на діаграму інтерфейс

Unidirectional Association

Додає на діаграму спрямовану асоціацію

Association Class

Додає на діаграму асоціацію клас

Package

Додає на діаграму пакет

Dependency or Instantiates

Додає на діаграму відношення залежності

Generalization

Додає на діаграму відношення узагальнення

Realize

Додає на діаграму відношення реалізації

Для додавання класу на діаграму класів потрібно за допомогою лівої кнопки миші нажати кнопку із зображенням піктограми класу на спеціальній панелі інструментів, відпустити ліву кнопку миші й клацнути лівою кнопкою миші на вільнім місці робочого аркуша діаграми. На діаграмі з'явиться зображення класу з маркерами зміни його геометричних розмірів і запропонованим середовищем іменем за замовчуванням Newclass.

Для класу Транзакція Банкомата можна уточнити його призначення в моделі за допомогою зазначення стереотипу й пояснювального тексту у формі документації. Із цією метою подвійним клацанням лівою кнопкою миші на зображенні цього класу на діаграмі або в браузері проекту слід відкрити діалогове вікно специфікації властивостей цього класу й на вкладці General (Загальні) вибрати із вкладеного списку Stereotype стереотип entity (сутність).

Вибір даного стереотипу означає, що відповідний клас призначений для зберігання інформації, яка повинна зберігатися в системі після знищення об'єктів даного класу. Далі в секцію документації даного класу можна ввести текст, що пояснює: "Використовується для збереження інформації про виконані банкоматом транзакціях" і нажати кнопку Apply або OK, щоб зберегти результати редагування властивостей обраного класу. Після призначення стереотипу класу Транзакція банкомата текст даного стереотипу в кутових дужках з'явиться вище імені даного класу.

Для окремого класу можна уточнити також і інші його властивості, доступні для редагування на вкладці Detail (Докладно) вікна специфікації властивостей цього класу. Наприклад, на цій вкладці за допомогою вкладеного списку Multiplicity (Кратність) можна задати кількість об'єктів або екземплярів даного класу, для чого слід вибрати рядок з буквою n. Дане значення означає, що в класу Транзакція банкомата може бути будь-яке кінцеве число екземплярів. Поле введення з іменем Space (Простір) служить для вказівки обсягу абсолютної або відносної пам'яті, яка потрібно, по оцінці розроблювача, для реалізації кожного об'єкта даного класу. Стосовно до розглянутої моделі це поле можна залишити порожнім.

Далі можна задати стійкість класів у групі вибору Persistence. При цьому вибір властивості Persistent (Стійкий) означає, що інформація про об'єкти даного класу повинна бути збережена в системі. Вибір властивості Transient (Тимчасовий) означає, що немає необхідності зберігати інформацію про об'єкти даного класу в системі після завершення роботи програмного додатка. Стосовно до розглянутої моделі слід вибрати властивість Persistent.

У групі вибору Concurrency (Паралельність) можна специфікувати умови на можливість реалізації об'єктів даного класу в паралельних потоках керування. Для вибору можуть бути використані наступні властивості:

  • Sequential (Послідовний) - властивість за замовчуванням, яке означає, що об'єкти класу будуть поводитися нормально тільки при наявності одного потоку керування, тобто відповідні операції об'єктів повинні виконуватися послідовно. У той же час при наявності декількох потоків керування стабільна поведінка об'єктів класу не гарантується.

  • Guarded (Безпечний) - означає, що при наявності декількох потоків керування об'єкти класу будуть поводитися очікуваним від них образом. Для цього об'єкти в різних потоках повинні взаємодіяти один з одним для того, щоб гарантувати відсутність конфлікту між ними.

  • Active (Активний) - означає, що клас повинен мати свій власний потік керування.

  • Synchronous (Синхронний) - означає, що об'єкти класу будуть поводитися очікуваним від них образом при наявності декількох потоків керування. При цьому немає необхідності у взаємодії об'єктів у різних потоках керування, оскільки об'єкти даного класу можуть самостійно розв'язувати можливі конфлікти.

Для того, щоб специфікувати клас як абстрактний, тобто, що не має екземплярів, слід на цій же вкладці виставити позначку у властивості Abstract (Абстрактний). Стосовно до розглянутої моделі для класу Транзакція банкомата слід вибрати властивості Persistent і Sequential, а позначку для властивості Abstract залишити порожній.

На розроблювальній діаграмі класів обраний текстовий спосіб зображення стереотипів класів, при якім стереотип записується в кутових лапках вище імені відповідного класу. Програма IBM Rational Rose 2003 дозволяє альтернативно представляти стереотипи у формі спеціальних графічних зображень ( як у браузері проекту) або у формі невеликих декоративних значків у верхній секції прямокутника класу на діаграмі, а також взагалі відмовитися від зображення стереотипів.

Змінити зображення стереотипу для окремого класу можна, наприклад, за допомогою однієї із вкладених операцій контекстного меню: OptionsStereotype Display (ПараметриЗображення стереотипу). Як приклад можна представити зображеннякласу Транзакція Банкомата у формі спеціальної графічної піктограми стереотипу. Із цією метою слід виконати операцію контекстного меню: OptionsStereotype DisplayIcon (ПараметриЗображення стереотипуПіктограма). Відповідне графічне зображення стереотипу <<entity>> длякласу Транзакція Банкомата у формі піктограми буде мати такий вигляд (мал. 4.5, а).

Для порівняння можна вибрати зображення класу Транзакція Банкомата у формі декоративного графічного стереотипу. Із цією метою виконаємо операцію контекстного меню: OptionsStereotype DisplayDecoration (ПараметриЗображення стереотипуДекорація). Відповідне графічне зображення стереотипу <<entity>> длякласу Транзакція Банкомата у формі декорації буде мати такий вигляд (мал. 3.1, б).

Рис. 3.1.  Графічні способи зображення стереотипу <<entity>> для класу Транзакція Банкомата

Продовжуючи розробку моделі банкомата, додамо на діаграму другий клас із іменем Контролер Банкомата, для якого у вікні специфікації властивостей виберемо стереотип control (керуючий клас), а в якості документації введемо текст: "Реалізує логіку функціонування банкомата". При цьому атрибути й операції в даного класу будуть відсутні.

Далі додамо на діаграму третій клас із іменем Обладнання читання картки, для якого у вікні специфікації властивостей виберемо стереотип boundary (граничний клас). Застосування цього стереотипу означає, що даний клас перебуває на границі системи, що моделюється, у якості якої розглядається модель банкомата. Після цього в секцію документації даного класу можна ввести текст, що пояснює: "Установлюється на банкоматі".

Далі слід додати клас із іменем IКонтролер Банку, для якого вибрати стереотип Interface (Інтерфейс), що означає, що банкомат користується послугами Банку при обробці своїх транзакцій. Помітимо, що першою буквою в імені цього класу є англійське "I", яке служить у мові UML для вказівки інтерфейсу.

Додати атрибут до створеного раніше класу можна одним з наступних способів:

  • За допомогою операції контекстного меню New Attribute (Новий атрибут) для класу, виділеного на діаграмі класів. У цьому випадку активізується курсор уведення тексту в області графічного зображення класу на діаграмі.

  • За допомогою операції контекстного меню: NewAttribute (НовийАтрибут) для класу, виділеного в браузері проекту. У цьому випадку активізується курсор уведення тексту в області ієрархічного представлення класу в браузері проекту під іменем відповідного класу.

  • За допомогою операції контекстного меню Insert (Вставити), викликаного при позиціонуванні курсору в області відкритої вкладки атрибутів у діалоговім вікні властивостей Class Specification відповідного класу.

Для розглянутої моделі банкомата ім'я доданого атрибута слід змінити на ідентифікатор картки. Нагадаємо, що імена атрибутів і операцій класів повинні починатися з рядкової букви. Видимість атрибутів на діаграмі класів зображується у формі спеціальних піктограм або прикрас. Використовувані піктограми видимості зображуються перед іменем відповідного атрибута й мають наступний сенс (табл. 3.2).

Таблиця 3.2.

Піктограми видимості атрибутів класів

Графічне зображення

Текстовий аналог

Призначення піктограми

Public

Загальнодоступний або відкритий. У нотації мови UML такому атрибуту відповідає знак «+»

Protected

Захищений. У нотації мови UML такому атрибуту відповідає знак «#»

Private

Закритий. У нотації мови UML такому атрибуту відповідає знак «-»

Implementation

Реалізація. У нотації мови UML такому атрибуту відповідає знак «∼»

Для редагування властивостей атрибутів призначене спеціальне діалогове вікно специфікації атрибута Class Attribute Specification, яке відкривається подвійним клацанням миші на рядку обраного атрибута у вікні специфікації властивостей класу. У вікні властивостей окремого атрибута класу можна задати тип даних атрибута і його початкове значення, а також призначити атрибуту стереотип зі списку, що розкривається, або змінити його квантор видимості.

Для атрибута ідентифікатор картки як типу його припустимих значень із вкладеного списку Type слід вибрати тип Integer, а для завдання квантора видимості слід вибрати в групі Export Control (Керування експортом) квантор Public. Оскільки початкове значення для даного атрибута не визначене, поле уведення слід залишити порожнім. У секцію документації даного атрибута класу можна ввести текст, що пояснює: «Обладнання читання картки зчитує значення цього атрибута із кредитної картки клієнта» і нажати кнопку Apply або OK, щоб зберегти результати редагування цих властивостей атрибута.

Для окремого атрибута можна також визначити додаткові властивості, доступні для редагування на вкладці Detail (Докладно) діалогового вікна специфікації властивостей обраного атрибута.

На вкладці Detail у групі вибору Containment (Локалізація) можна специфіцирувати умови зберігання атрибута в об'єктів обраного класу. Для вибору можуть бути використані наступні властивості:

  • By value ( За значенням) - властивість за замовчуванням, яке означає, що значення атрибута зберігаються в межах адресного простору, виділеного для об'єкта даного класу. Наприклад, якщо є атрибут типу String, то значення цього рядка втримується в межах визначення класу.

  • By reference ( По посиланню) - означає, що значення атрибута зберігається поза адресним простором, виділеним для об'єкта даного класу, але в об'єктів класу є покажчик на цей атрибут.

  • Unspecified (Не визначений) - означає, що метод локалізації даного атрибута не визначений. У цьому випадку при генерації програмного коду для даного атрибута за замовчуванням вибирається значення By value.

Далі можна визначити атрибут як статичний, виставивши позначку в рядку вибору Static. Статичний атрибут по визначенню має одне й теж значення для всіх об'єктів розглянутого класу. Нарешті, на вкладці Detail можна визначити атрибут як похідний, виставивши позначку в рядку вибору Derived. Значення похідного атрибута по визначенню може бути обчислене на підставі значень інших атрибутів цього або іншого класу.

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

Додати операцію до створеного раніше класу можна одним з наступних способів:

  • За допомогою операції контекстного меню New Operation (Нова операція) для класу, виділеного на діаграмі класів. У цьому випадку активізується курсор вводу в області графічного зображення класу на діаграмі.

  • За допомогою операції контекстного меню: NewOperation (НоваОперація) для класу, виділеного в браузері проекту. У цьому випадку активізується курсор вводу в області ієрархічної вистави класу в браузері під іменем відповідного класу.

  • За допомогою операції контекстного меню Insert (Вставити), викликаного при позиціонуванні курсору в області відкритої вкладки операцій у діалоговім вікні властивостей Class Specification відповідного класу.

Після додавання операції до класу за замовчуванням їй привласнюється ім'я opname і деякий квантор видимості. Видимість операцій на діаграмі класів також зображується у формі спеціальних піктограм або прикрас. Використовувані піктограми видимості зображуються перед іменем відповідної операції й мають наступний сенс (табл. 5.2).

Таблиця 5.2.

Піктограми видимості операцій класів

Графічне зображення

Текстовий аналог

Призначення піктограми

Public

Загальнодоступний або відкритий. У нотації мови UML такому атрибуту відповідає знак «+»

Protected

Захищений. У нотації мови UML такому атрибуту відповідає знак «#»

Private

Закритий. У нотації мови UML такому атрибуту відповідає знак «-»

Implementation

Реалізація. У нотації мови UML такому атрибуту відповідає знак «∼»

У контексті розглянутої моделі банкомата ім'я першої операції для класу Транзакція Банкомата слід задати: створити нову транзакцію. При цьому дужки при завданні імені операції не записуються, оскільки програма IBM Rational Rose 2003 додає їх автоматично.

Кожна з операцій класів має власне діалогове вікно специфікації властивостей Operation Specification, яке може бути відкрито по подвійнім клацанню на імені операції на відповідній вкладці специфікації класу або на імені цієї операції в браузері проекту. Для операції створити нову транзакцію(), у якості квантора видимості слід вибрати із вкладеного списку квантор public. У секцію документації даної операції класу можна ввести текст, що пояснює: «Викликається після того, як кредитна картка вставлена в Обладнання читання картки» і нажати кнопку Apply або OK, щоб зберегти результати редагування властивостей цієї операції.

Для операцій класів крім квантора видимості можна також задати: аргументи і їх тип, тип результату, що вертається, стереотип операції, а також визначити протокол і розмір, задати виняткові ситуації, специфікувати передумови й післяумови й цілий ряд інших властивостей. Для окремої операції ці додаткові властивості доступні для редагування на вкладці Detail (Докладно) діалогового вікна специфікації властивостей обраної операції.

На вкладці Detail у багатосторінковім полі Arguments (Аргументи) можна визначити аргументи операції, що редагується. Для цього слід виконати операцію контекстного меню Insert (Вставити). Після цього в цьому полі з'явиться аргумент даної операції з іменем за замовчуванням argname. Для редагування властивостей аргументу призначене спеціальне вікно властивостей аргументу.

На вкладці Detail у поле Protocol (Протокол) можна специфікуовати порядок виконання операцій класу, наприклад, указати, що одна операція не може бути викликана раніше іншої. У поле Qualification (Кваліфікація) можна уточнити деталі реалізації операції, пов'язані з конкретною мовою програмування. Відповідний текст також уводиться в дане поле із клавіатури.

Далі на цій же вкладці в полях Size (Розмір) і Time (Час) можна специфікуовати передбачуваний обсяг пам'яті й час, необхідний для виконання операції.

У групі вибору Concurrency (Паралельність) можна специфікуовати умови на можливість паралельного виконання даної операції. Для вибору можуть бути використані наступні властивості:

  • Sequential (Послідовна) - властивість за замовчуванням, яке означає, що дана операція класу може бути виконана тільки при наявності одного потоку керування, тобто відповідна операція класу повинна виконуватися послідовно. При наявності декількох потоків керування виконання даної операції класу не гарантується.

  • Guarded (Безпечна) - означає, що при наявності декількох потоків керування виконання даної операції класу гарантується тільки в тому випадку, коли забезпечена взаємодія об'єктів один з одним у різних потоках.

  • Synchronous (Синхронна) - означає, що виконання даної операції класу гарантується при наявності декількох потоків керування. При цьому немає необхідності у взаємодії об'єктів у різних потоках керування, оскільки дана операція класу буде виконуватися в окремому потоці керування аж до свого завершення.

Стосовно до розглянутої моделі для операції створити нову транзакцію() слід вибрати властивість Sequential, а поля всіх інших властивостей залишити порожніми.

Щоб закінчити специфікацію класу Транзакція Банкомата аналогічним способом слід додати ще 3 атрибута й 2 операції з наступними властивостями:

  • значення Пін-коду картки із квантором видимості public. У якості типу цього атрибута слід вибрати тип Integer, а в секцію документації атрибута ввести текст, що пояснює: «Обладнання читання картки зчитує значення цього атрибута із кредитної картки клієнта».

  • введений Пін-код із квантором видимості public. У якості типу цього атрибута слід вибрати тип Integer, а в секцію документації атрибута ввести текст, що пояснює: «Значення цього атрибута вводиться клієнтом із клавіатури банкомата».

  • введена сума готівки із квантором видимості public. У якості типу цього атрибута слід вибрати тип Currency (Грошовий), а в секцію документації атрибута ввести текст, що пояснює: «Значення цього атрибута вводиться клієнтом із клавіатури банкомата».

  • перевірити правильність Пін-коду() із квантором видимості public. У якості типу, що вертається результату для цієї операції слід вибрати тип Boolean (логічний), а в секцію її документації ввести текст, що пояснює: «Викликається після того, як клієнт увів значення Пін-коду із клавіатури банкомата».

  • завершити транзакцію() із квантором видимості public. У секцію її документації ввести текст, що пояснює: «Викликається після завершення всіх дій банкомата по обслуговуванню клієнта».

Відповідний фрагмент діаграми класів після додавання й специфікації атрибутів і операцій для класу Транзакція Банкомата буде мати такий вигляд (мал. 3.2).

Рис. 3.2.  Фрагмент діаграми класів моделі банкомата після додавання атрибутів і операцій для класу Транзакція банкомата

Додавання на діаграму асоціації між двома класами виконується в такий спосіб. На спеціальній панелі інструментів необхідно нажати кнопку із зображенням піктограми спрямованої асоціації й відпустити ліву кнопку миші. Якщо асоціація - спрямована, то на діаграмі класів треба виділити перший елемент асоціації або джерело, від якого виходить стрілка, і, не відпускаючи натиснуту ліву кнопку миші, перемістити її покажчик до другого елемента відносини або приймачу, до якого спрямована стрілка. Після переміщення до другого елемента кнопку миші слід відпустити, у результаті чого на діаграму класів буде додана спрямована асоціація з іменем Untitled між двома обраними класами.

Змінимо ім'я для даної асоціації, запропоноване середовищем за замовчуванням. Це можна виконати за допомогою вікна специфікації властивостей асоціації. Доступ до діалогового вікна специфікації властивостей асоціації Association Specification можна одержати після виділення лінії асоціації на діаграмі класів або в браузері проекту й подвійного клацання на ній лівої кнопки миші.

Для завдання імені асоціації прямує на вкладці General (Загальні) у поле введення Name (Ім'я) увести текст її імені: Створює й нажати кнопку Apply або OK, щоб зберегти результати редагування імені асоціації. Для асоціації можна задати також кратність кожного з кінців асоціації, стереотип, використовувати обмеження й ролі, а також деякі інші властивості.

Для доданої на діаграму класів асоціації задамо кратність кінця асоціації в класу Контролер Банкомата, рівну 1. Для цього потрібно у вікні специфікації властивостей асоціації перейти на вкладку Role B Detail і вибрати значення 1 із вкладеного списку Multiplicity. Аналогічним образом слід задати кратність кінця асоціації в класу Транзакція Банкомата рівну 1..n, для чого на вкладці Role A Detail і слід вибрати значення 1..n із вкладеного списку Multiplicity. Змістовно це буде означати, що кожний об'єкт класу Контролер Банкомата може бути пов'язаний з одним або декількома об'єктами класу Транзакція Банкомата.

Якщо асоціація є ненаправленою, то порядок вибору класів може бути довільний, а після додавання асоціації на діаграму класів слід змінити значення відповідної властивості даної асоціації. Із цією метою необхідно перейти на вкладку Role A Detail у вікні специфікації властивостей асоціації й усунути позначку у властивості Navigable (Навігація).

Продовжуючи розробку діаграми класів моделі банкомата, додамо на неї описаним способом спрямовану асоціацію між класом Контролер Банкомата й додатково створеним абстрактним класом Контролер (мал. 3.3). Останній клас може бути призначений для специфікації системних атрибутів і операцій, необхідних при виконанні відповідної програми. Нагадаємо, що на абстрактний характер класу вказує написання курсивом його імені, а для специфікації даного властивості класу необхідно на вкладці Detail (Докладно) вікна специфікації властивостей класу Контролер виставити позначку в рядку вибору Abstract.

Рис. 3.3.  Діаграма класів моделі банкомата після додавання на неї відносини узагальнення

Змінимо ім'я відносини узагальнення, запропоноване середовищем за замовчуванням. Це можна виконати за допомогою вікна специфікації властивостей узагальнення. Доступ до діалогового вікна специфікації властивостей відносини узагальнення Generalize Specification можна одержати після виділення лінії узагальнення на діаграмі класів або в браузері проекту й подвійного клацання на ній лівої кнопки миші.

Для завдання імені узагальнення прямує на єдиній вкладці General (Загальні) у поле введення Name (Ім'я) увести текст її імені: Успадковує й нажати кнопку Apply або OK, щоб зберегти результати редагування імені асоціації.

Для остаточної побудови діаграми класів розглянутої моделі банкомата слід описаним вище способом додати класи й асоціаці, що залишилися ї, а також специфікувати стереотипи, атрибути й операції цих класів. Із цією метою слід виконати наступні дії:

  1. Для класу IИнтерфейс Банку додати операцію: перевірити ідентифікатор картки (ідентифікатор картки: Integer) із квантором видимості public. У якості типу, що вертається результату для цієї операції слід вибрати тип Boolean (логічний), а в якості цілочисельного аргументу задати ідентифікатор картки. Для завдання аргументу необхідно перейти на вкладку Detail (Докладно) вікна специфікації властивостей даної операції й після додавання аргументу за допомогою операції контекстного меню Insert ввести ім'я аргументу і його тип Integer у відповідні поля вводу.

  2. Для класу IИнтерфейс Банку додати операцію: відкрити рахунок клієнта (ідентифікатор картки: Integer) із квантором видимості public. У якості цілочисельного аргументу цієї операції слід задати ідентифікатор картки.

  3. Для класу IИнтерфейс Банку додати операцію: перевірити баланс клієнта (ідентифікатор картки: Integer, введена сума готівки: Currency) із квантором видимості public. У якості типу, що вертається результату для цієї операції слід вибрати тип Boolean (логічний). У якості першого цілочисельного аргументу цієї операції слід задати ідентифікатор картки, а в якості другого аргументу - введена сума готівки з типом Currency (Грошовий).

  4. Для класу IИнтерфейс Банку додати операцію: зменшити рахунок клієнта (ідентифікатор картки: Integer, введена сума готівки: Currency) із квантором видимості public. У якості типу, що вертається результату для цієї операції слід вибрати тип Boolean (логічний). У якості першого цілочисельного аргументу цієї операції слід задати ідентифікатор картки, а в якості другого аргументу - введена сума готівки з типом Currency (Грошовий).

  5. Для класу Обладнання читання картки додати операцію: прочитати ідентифікатор картки() із квантором видимості public. У якості типу, що вертається результату для цієї операції слід вибрати тип Integer, а в секцію документації даної операції слід ввести текст, що пояснює: «Викликається після того, як кредитна картка вставлена в Обладнання читання картки».

  6. Для класу Обладнання читання картки додати операцію: прочитати Пін-код() із квантором видимості public. У якості типу результату, що вертається, для цієї операції слід вибрати тип Integer, а в секцію документації даної операції слід ввести текст, що пояснює: «Викликається після того, як кредитна картка вставлена в Обладнання читання картки».

  7. Для класу Обладнання читання картки додати операцію: повернути кредитну картку() із квантором видимості public. У секцію документації даної операції слід ввести текст, що пояснює: «Викликається після завершення транзакції».

  8. Для класу Обладнання читання картки додати операцію: блокувати кредитну картку() із квантором видимості public. У секцію документації даної операції слід ввести текст, що пояснює: «Викликається після того, як установлений факт втрати кредитної картки власником».

  9. Додати клас із іменем Екран Банкомата, для якого вибрати стереотип boundary. Даний клас також перебуває на границі системи, на що й указує цей стереотип. У секцію документації даного класу слід ввести текст, що пояснює: «Установлюється на банкоматі».

  10. Для класу Екран Банкомата додати операцію: показати меню опцій() із квантором видимості public.

  11. Для класу Екран Банкомата додати операцію: показати меню зняття суми() із квантором видимості public.

  12. Додати клас із іменем Клавіатура Банкомата, для якого вибрати стереотип boundary. У секцію документації даного класу слід ввести текст, що пояснює: «Установлюється на банкоматі».

  13. Для класу Клавіатура Банкомата додати операцію: ввести Пін-код() із квантором видимості public. У якості типу результату, що вертається, для цієї операції слід вибрати тип Integer, а в секцію документації даної операції слід ввести текст, що пояснює: «Викликається після того, як клієнт увів значення Пін-коду із клавіатури».

  14. Для класу Клавіатура Банкомата додати операцію: ввести тип транзакції() із квантором видимості public. У якості типу результату, що вертається, для цієї операції слід вибрати тип Boolean (логічний), а в секцію документації даної операції слід ввести текст, що пояснює: «Повертає значення Істина, якщо клієнт вибирає зняття готівки, і значення Неправда, якщо клієнт вибирає одержання довідки про стан рахунку».

  15. Для класу Клавіатура Банкомата додати операцію: ввести суму зняття готівки() із квантором видимості public. У якості типу результату, що вертається, для цієї операції слід вибрати тип Currency (Грошовий), а в секцію документації даної операції слід ввести текст, що пояснює: «Викликається після того, як клієнт ввів значення суми, що знімається, із клавіатури».

  16. Додати клас із іменем Обладнання видачі готівки, для якого вибрати стереотип boundary. У секцію документації даного класу слід ввести текст, що пояснює: «Установлюється на банкоматі».

  17. Для класу Обладнання видачі готівки додати операцію: видати готівка() із квантором видимості public. У секцію документації даної операції слід ввести текст, що пояснює: «Викликається після того, як виконано зняття запитаної клієнтом суми з рахунку».

  18. Додати клас із іменем Принтер Банкомата, для якого вибрати стереотип boundary. У секцію документації даного класу слід ввести текст, що пояснює: «Установлюється на банкоматі».

  19. Для класу Принтер Банкомата додати операцію: роздрукувати чек() із квантором видимості public. У секцію документації даної операції слід ввести текст, що пояснює: «Викликається по додатковому запиту клієнта».

  20. Додати спрямовану асоціацію від класу Контролер Банкомата до класу Обладнання читання картки. У якості кратності кінців цієї асоціації встановити значення 1.

  21. Додати спрямовану асоціацію від класу Контролер Банкомата до класу Принтер Банкомата. У якості кратності кінців цієї асоціації встановити значення 1.

  22. Додати спрямовану асоціацію від класу Контролер Банкомата до класу Клавіатура Банкомата. У якості кратності кінців цієї асоціації встановити значення 1.

  23. Додати спрямовану асоціацію від класу Контролер Банкомата до класу Обладнання видачі готівки. У якості кратності кінців цієї асоціації встановити значення 1.

  24. Додати спрямовану асоціацію від класу Контролер Банкомата до класу Екран Банкомата. У якості кратності кінців цієї асоціації встановити значення 1.

  25. Додати спрямовану асоціацію від класу Контролер Банкомата до класу IКонтроллер Банку. У якості кратності кінця цієї асоціації для першого класу встановити значення 0..n, а кратності кінця асоціації для другого класу встановити значення 1. У якості стереотипу даної асоціації вибрати із вкладеного списку значення <<communicate>>.

Побудована в результаті зазначених дій діаграма класів буде мати такий вигляд (мал. 3.4).

Рис. 3.4.  Остаточний вид діаграми класів для розроблювальної моделі банкомата

Слід помітити, що при зображенні діаграми класів усі класи представлені у формі графічних стереотипів, при цьому обраний спосіб відображення сигнатури операцій класів. Для більш компактного представлення діаграми можна усунути відображення атрибутів, операцій або сигнатури операцій окремих класів за допомогою відповідних операцій контекстного меню Options (Настроювання).