Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторна робота ’ 5 ПОБУДОВА ДІАГРАМ КЛАСІВ Теоретичні відомості Діаграми класів Clss digrms ~ головний.html

Работа добавлена на сайт samzan.net:


Лабораторна робота № 5

ПОБУДОВА ДІАГРАМ КЛАСІВ

Теоретичні відомості

Діаграми класів (Class diagrams) – головний тип діаграм UML, які відображають логічну структуру програмної системи та суттєво впливають на процес генерації програмного коду. Основними елементами діаграми класів є безпосередньо класи (classes) та відношення між ними (relations).

Клас – сукупність логічних об’єктів, які мають схожі характеристики і відрізняються однаковою поведінкою. В ООП характеристики об’єктів певного  класу  представлені  сукупністю  атрибутів, а  поведінка – сукупністю операцій.

Рис. 1. Графічне представлення класу на діаграмі класів

Кожен клас графічно представлений прямокутником, що має три секції: ім’я класу, перелік атрибутів та перелік операцій (рис. 1). Для кожного атрибуту задається тип даних, для кожної операції тип даних для значення, що повертається, та перелік параметрів. Атрибути та операції можуть бути визначені для кожного об’єкта класу, чи для класу в цілому (static attributes and operations). Також для всіх атрибутів та операцій можна визначити тип видимості (public, protected, private).

Розрізняють декілька типів класів:

1.  Конкретний клас – для даного класу можна створити об’єкт.

2.  Абстрактний клас – клас, для якого не можна створити об’єкт. Даний  клас  виступає  чистою  абстракцією,  від  нього  можна наслідувати конкретні класи.

3.  Параметризований  клас  –  клас,  для  визначення  якого використовується список формальних параметрів, які впливають на атрибути та операції (аналог шаблона в С++). Найчастіше такі класи використовуються для створення абстрактних типів даних (списки, вектори, стеки, черги і т. п.).

4.  Інтерфейс – клас, що містить тільки визначення набору операцій (без реалізації). У мові С++ аналогом даного класу є клас, всі операції якого є чистими віртуальними функціями. В мові Java класи можуть реалізовувати декілька інтерфейсів (інтерфейси використовуються  для  реалізації  концепції  множинного наслідування).

Створення нових класів та операцій класів:

Для кожного об’єкта на діаграмах взаємодії існує можливість призначити певний клас (чи створити новий). При цьому в  прямокутнику  об’єкта  дані  відображаються  в  наступному  форматі <ім’я об’єкта>:<ім’я класу>. Також кожне повідомлення на діаграмі взаємодії представляє певну операцію класу-приймача. Для кожного повідомлення можна обрати існуючий метод класу-приймача чи створити новий. На рис. 2 наведено фрагмент модифікованої діаграми послідовності для варіанта використання «Переглянути список студентів».

Рис. 2. Фрагмент діаграми послідовності для варіанта використання

«Переглянути список студентів»

Після створення набору класів з операціями можна відобразити їх на діаграмі класів. При цьому кожен клас буде мати ім’я та перелік операцій, визначених користувачем. На рис. 3 показано відображення класу MainDialog з операціями, створеними для повідомлень 2 та 4 попередньої  діаграми  (повідомлення  1  буде  показано  пізніше  на загальному вигляді діаграми класів, оскільки воно визначено для класу Dialog, який є базовим для даного класу).

Рис. 3. Відображення класу MainDialog на діаграмі класів

Додавання атрибутів класів:

Після створення переліку класів із набором операцій необхідно для кожного класу створити набір атрибутів – даних, якими оперує програма у процесі виконання операцій класу. Наприклад, виходячи з діаграми послідовності,  зображеної  на  рис. 4  можна  визначити  для  класу MainDialog  атрибути  для  кнопки  (Button),  яку  натискає  користувач для  перегляду  списку  студентів  та  списку,  до  якого  безпосередньо додається інформація про кожного студента.

Рис. 4. Клас MainDialog з повним набором атрибутів та операцій

Повний формат відображення атрибутів на діаграмі класів: <attribute_name>:<attribute_type>

Повний формат відображення операцій на діаграмі класів: <operation_name>(<list_of_arguments>):<type_of_return_value>

Відношення між класами:

Можна  задати  5  основних  типів відношень між класами:

1.  Відношення асоціації (association) – визначає абстрактний зв’язок між класами, може представляти аналог відношення «m до n».

Приклад:  відношення  між  класами  Student  та  Course  (кожен студент відвідує декілька курсів (дисциплін), для кожної дисципліни визначений набір студентів, які її відвідують). Представлення в програмному коді:

class Student

{ .............

 Course* theCourses;

....................};
class Course

{.................

 Student* theStudents;

.................};

При  цьому  Course*  в  класі  Student  може  вказувати  на  масив дисциплін, а Student* у класі Course – на перелік студентів.

2.  Відношення агрегації (aggregation) – відношення типу «частина – ціле», при якому час життя класа частини не співпадає з часом життя класа цілого.

Приклад:  відношення  між  класами  Student  та  Ticket  (у  час переоформлення студентського квитка студент не має його).

Представлення у програмному коді:

class Student

{ .............

 Ticket* ticket;

............};

Атрибут ticket при цьому може створюватися та видалятися (за допомогою операторів new та delete) в коді будь-яких методів класу Student.

3.  Відношення композиції (composition) – відношення типу «частина – ціле»,  при  якому  час  життя  класа  частини  співпадає  з  часом життя класа цілого.

Приклад: відношення між класами Student та Date_of_Birth (кожен

студент  у  будь-який  момент  часу  характеризується  датою народження).

Представлення у програмному коді:

class Student

{ .............

 Date_of_Birth theDate_of_Birth;

...............}

Атрибут theDate_of_Birth існує протягом усього часу життя обєкта класу Student.

4.  Відношення  наслідування  (generalization)  –  відношення  типу «загальнечасткове».

Приклад: відношення між класами Student та Astudent (студент відмінник є частковим випадком студента).

Представлення в програмному коді:

class Student ;

class Astudent : public Student{......

 float GetScholarBonus();

.........}

Клас  Astudent  має  додатковий  метод  GetScholarBonus(),  який

розраховує надбавку до стипендії для студента відмінника.

5.  Відношення інстанціювання (instantiation) – визначає інстанціювання нового класу з параметризованого класу шляхом підставлення фактичних параметрів у формальні параметри шаблона.

Приклад:  відношення  між  класами  List  та  StudentsList  (з абстрактного списку інстанціюється список студентів).

Представлення в програмному коді:

template <class T> class List {………….} // List – абстрактний список

typedef List <Student> StudentsList; // List<Student> – список студентів 

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

На рис. 5 наведено приклад діаграми класів  для системи обліку успішності студентів у деканаті, яка містить перелік класів, пов’язаних різними типами відношень.

Рис. 5. Діаграма класів для системи обліку успішності навчання

студентів у деканаті

Завдання

1.  Для  всіх  об’єктів  на  діаграмах  взаємодії  призначити  (створити) певний  клас;  для  кожного  повідомлення  призначити  (створити) відповідний метод (операцію) для класу об’єкта-приймача.

2.  Розташувати створені класи з переліком операцій на діаграмі класів.

3.  Для  кожної  операції  визначити  атрибути,  які  вона  використовує та при необхідності додати їх до списку атрибутів класу.

4.  Для  кожного  атрибуту  задати  логічний  тип  даних,  для  кожної операції  логічний  тип  даних  для  return  value  та  для  переліку аргументів, якщо вони присутні.

5.  Пов’язати  класи  на  діаграмі  класів,  використовуючи  різні  типи відношень  (асоціацію,  агрегацію,  композицію,  наслідування, інстанціювання).

 

Вимоги

1.  Діаграма класів повинна містити не менше 10 класів.

2.  Для кожного класу визначити не менше 5 атрибутів та 5 операцій.

3.  По можливості використати всі типи відношень між класами.




1. мехатроники как науки
2. Одним из полномочий нанимателя является право сдачи в поднаем жилого помещения а также право вселения в ж
3. Цезарь блинподумал он
4. СанктПетербургский государственный инженерноэкономический университет Кафедра финансов и банковс
5. Юность ~ период завершения физического созревания человека бурного роста его самосознания формирования м
6. 28марта 2013 г. Дисциплина БИОЛОГИЯ Курс I
7. Создание и развитие информационных технологий систем управления
8. История Российского флага
9. тема функциональных стилей
10. Изохорный процесс vconst Такой процесс может совершаться рабочим телом находящимся в цилиндре при неподви
11. The Fscist corporte stte is here
12. Виды сотового мошенничества
13. і. Оскільки першими кредиторами в історії були суб~єкти що володіють значними надлишками предметів споживан.
14. реферату- Демократія в АмериціРозділ- Політологія Демократія в Америці ЗМІСТ Вступ Історичні передумо
15. человек и мир рассматривалась она поразному
16. Тема 4 23Самая совершенная письменность Древней Америки была у майя
17. БЕЛОРУССКАЯ ГОСУДАРСТВЕННАЯ СЕЛЬСКОХОЗЯЙСТВЕННАЯ АКАДЕМИЯ А
18. Макрорегионы Зарубежной Азии, Африка и глобальные проблемы человечества
19. КОНСПЕКТ ЛЕКЦИЙ ПО ДИСЦИПЛИНЕ ФИНАНСЫ И КРЕДИТ
20. Анализ изменения дебитов нефти после ГРП и прогноз дополнительной добычи на Вынгаяхинском месторождении