Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Лабораторна робота № 2
Візуальне моделювання і розробка коду в
Visual Studio
Мета роботи
Ознайомитись з діаграмами класів UML. Вивчити інструменти візуального моделювання структури
програмної системи у виді діаграм класів. Вивчити засоби представлення діаграм класів та візуального
програмування в інтегрованому середовищі MS Visual Studio.
Короткі теоретичні відомості
Діаграми класів UML
Багато розробників звикли до використання схем, оскільки досить корисним є представляти свій
додаток як сукупність класів з певною семантикою і звязками між ними.
Для створення моделей аналізу і проектування об'єктно-орієнтованих програмних систем
використовують мови візуального моделювання. З'явившись порівняно недавно, в період з 1989 по 1997
рік, ці мови вже мають представницьку історію розвитку.
UML стандартна мова для написання моделей аналізу, проектування і реалізації об'єктно-
орієнтованих програмних систем. UML може використовуватися для візуалізації, специфікації,
конструювання і документування результатів програмних проектів. UML це не візуальна мова
програмування, але її моделі прямо транслюються в текст на мовах програмування(Java, C++, Visual Basic,
Ada 95, Object Pascal) і навіть в таблиці для реляційної БД.
Основна ідея UML - можливість моделювати програмне забезпечення і інші системи як набори
взаємодіючих об'єктів. UML складається всього з трьох будівельних блоків:
· Сутності це самі елементи моделі.
· Стосунки зв'язують сутності. Стосунки визначають, як семантично пов'язані дві або більше за сутності.
· Діаграми це представлення моделей UML. Вони показують набори сутностей, які « розповідають»
про програмну систему і є нашим способом візуалізації того, що робитиме система (аналітичні діаграми)
або як вона робитиме це(проектні діаграми).
Існує тринадцять різних типів UML- діаграм. У цій роботі вивчається лише одна з діаграм: діаграма
класів.
Діаграма класів показує набір класів, інтерфейсів, їх атрибутів і операцій, та відношення між ними. При
моделюванні об'єктно-орієнтованих систем діаграми класів використовуються найчастіше. Діаграми класів
забезпечують статичне проектне представлення системи.
Раніше ніж докладніше розглянути діаграми класів необхідно нагадати деякі поняття об'єктно-
орієнтованого моделювання.
Об'єкт деяка суть реального світу або концептуальна суть, або - програмна одиниця, що складається з
атрибутів (полів) і методів для їх обробки.
(характеризується станом, поведінкою, і унікальністю). Стан визначається атрибутами(пам'ять станів
об'єкту), поведінка - методами.
Клас шаблон для створення об'єктів або тип об'єктів(спрощено).
Інтерфейс синонім абстрактного класу, тобто класу, у якого є принаймні один метод без реалізації
(тобто тільки сигнатура, або сукупність імені методу, типу, що повертається, кількості, порядку і типів
параметрів). Таким чином, у абстрактного класу не може бути екземплярів, тобто об'єктів з типом цього
класу. Екземпляри можуть бути у спадкоємців такого класу, що реалізовують відсутні методи. З іншого
боку, допускаються посилання на об'єкти з типом абстрактного базового класу і виклик методів
абстрактного класу. Така можливість і пояснює роль абстрактного класу, який виступає програмним
інтерфейсом: для одного і того ж інтерфейсу допускається безліч реалізацій.
Відношення між класами двонаправлений семантичний зв'язок.
Види відношень. Відношення діляться на дві основні групи: відношення типу асоціацій і відношення
типу спадкоємства.
До стосунків типу асоціацій відносяться власне асоціація, агрегація, композиція і залежність.
1
Асоціація найбільш загальний тип відношень першого роду, пов'язаних з передачею повідомлень
асоційованих класів шляхом делегування. Реалізується за допомогою включення посилань на асоційовані
класи в список атрибутів класу.
Агрегація відношення типу "частина-ціле" ("part of" - логічне включення). Це вільний тип відношення
між обєктами як між компютером і його периферійним обладнанням.
Композиція відношення типу "частина-ціле" ("part of" - фізичне включення). Це строгий тип
відношення між обєктами як між деревом і його листам.
Відношення агрегації і композиції в основному розрізняються за критерієм часу життя об'єктів і
можливості їх окремого існування.
Залежність найслабкіший тип стосунків. Зазвичай пов'язаний з непрямим посиланням (відсутність
посилання в списку атрибутів класу, наприклад, є присутньою в списку параметрів методів, створюється
усередині тіла методу, повертається при якомусь виклику і ін.).
До стосунків типу спадкоємства відносять власне спадкоємство і реалізацію.
Спадкоємство другий тип стосунків, пов'язаний з передачею повідомлень шляхом передачі за
ієрархією.
Реалізація спадкоємство від абстрактного класу (інтерфейсу) з реалізацією його невизначених методів
(чисто віртуальних функцій в C++).
На діаграмі класів використовуються наступні основні позначення:
Класи
Клас прямокутник, розділений на три секції (розділи), в першій наводиться ім'я класу, в другій
список атрибутів, в третій список методів.
Допускається опускати розділ атрибутів, розділ методів або обидва розділи. Для абстрактних класів
вказується шаблон <<abstract>> або <<interface>> після імені класу. Для абстрактних класів зазвичай також
ім'я класу вказується похилим шрифтом.
Для атрибутів може вказуватися тип і видимість (+ public, private, # protected).
Для методів також можуть вказуватися тип, список параметрів і видимість.
Class
Attribute
operation()
<<interface>>
SomeInterface
SomeOperation()
GeometricObject
color
positipon
move(delta: Vector)
select(p:Point):Boolean
rotate(in angle:float=0.0)
Відношення
Асоціація
Order
order_number: integer
order_date: Date
order_value: Currency
Shipment
shipment_id: integer
shipment_date: Date
carrier: String
shipOrder()
Дане відношення встановлює звязок між класами Order (Замовлення) і Поставка (Shipment) та
символізує можливість виконання постачання за замовленнями.
Агрегація. Цільовий елемент є частиною вихідного елементу
2
Вікно (Window) може включати кілька геометричних форм (Shape). Але форми можуть існувати і окремо
від вікна.
Композиція. Строга (обмеженіша) форма агрегації
Коло (Circle) складається з Точок (Point). Тут мається на увазі, що точки не можуть існувати окремо від
кола. При знищенні кола, знищуються і всі його точки.
Спадкоємство (узагальнення). Вихідний елемент є спеціалізацією узагальненого цільового елементу (зі
сторони стрілки) і може заміщувати його.
Підкласи Коло (Circle) і Квадрат (Square) є геометричними фігурами успадковані від суперкласу Фігура
(Shape)
Залежність. Вихідний елемент залежить від цільового елементу і зміна останнього може вплинути на
перший.
Показана залежність класу Замовлення від класу Книга, оскільки Книга використовується в операціях
перевіркаДоступності, додати і видалити класу Замовлення. На цьому малюнку зображена ще одна
залежність, яка показує, що клас ПереглядЗамовлення використовує клас Замовлення. Причому
Замовлення нічого не знає про ПереглядЗамовлення. Ця залежність помічена стереотипом « friend», який
розширює просту залежність, визначену в мові.
Реалізація (тут же показується спосіб відображення інтерфейсу - круг)
3
Клас Shape реалізує інтерфейс WindowsDC.
Інший варіант відображення реалізації пунктирна лінія із стрілкою, як у спадкоємства (за умови, що
сам інтерфейс відображається звичайним прямокутником).
Як приклад на рис. 1 приведена діаграма класів для інформаційної системи театру. Цю систему утворює
6 класів.
Класи-агрегати Театр і Трупа мають операції додавання і видалення своїх частин, які включаються в
агрегати по посиланню. Частинами Театру є Глядачі і Трупи, а частинами Трупи Актори. Стосунки агрегації
між класом Театр і класами Трупа і Глядач злегка відмінні. Театр може складатися з однієї або декількох
труп, але кожна трупа знаходиться в одному і тільки одному театрі. З іншого боку, в театр може ходити
будь-яка кількість глядачів (включаючи нульову кількість), причому глядач може відвідувати один або
декілька театрів.
Між класами Трупа і Актор існують два відношення агрегація і асоціація. Агрегація показує, що кожен
актор працює в одній або декількох трупах, а в кожній трупі має бути хоч би один актор. Асоціація
відображає, що кожною трупою управляє тільки один актор художній керівник, а деякі актори не є
керівниками.
Асоціація між класами Спектакль і Актор фіксує, що в спектаклі має бути зайнятий хоч би один актор,
втім, актор може грати у будь-якій кількості спектаклів (чи взагалі може нічого не грати).
Між класами Спектакль і Глядач теж визначена асоціація. Вона пояснює, що глядач може дивитися
будь-яке число спектаклів, а на кожному спектаклі може бути будь-яке число глядачів.
І нарешті, на діаграмі відображено два відношення спадкоємство, що стверджує, що і в глядачах, і в
акторах є людський початок.
Рис. 1. Діаграма класів інформаційної системи театру
Візуальний конструктор класів Visual Studio Class Designer
Візуальний конструктор класів Class Designer в Visual Studio 2008 надає графічні засоби для створення і
модифікації класів, які складають вашу предметну область. Ви можете використати його для опису класів і
їх зв'язків, додавання в ці класи властивостей і методів, і навіть для рефакторинга коду. Class Designer не
лише уміє представляти ваші об'єкти візуально; він забезпечує також і представлення вашого коду в
реальному часі. За допомогою Class Designer ви можете моделювати ваше застосування і одночасно
візуально розробляти код.
Схема класів дозволяє вам отримати статичне уявлення про ваш код. Ви також отримуєте
синхронізацію в реальному часі між моделлю і фактичним кодом.
4
Візуальний конструктор класів можна уявляти собі як візуальний редактор коду
а не як схему. Якщо ви робите в коде зміну, то воно відбивається на схемі. Коли ви
змінюєте схему, то ваш код також міняється.
Існує декілька способів створення схеми класів. Перший додати у ваш проект схему класів з
діалогового вікна Add New Item. Тут треба вибрати шаблон схеми класів(з розширенням cd) і додати його в
проект. Потім ви можете додати на цю схему елементи з панелі Toolbox або з існуючих класів в Solution
Explorer.
Другий спосіб додати в проект схему класів вибрати пункт View Class Diagram в контекстному меню
проекту. При цьому Visual Studio згенерує схему класів для існуючого проекту. Цей варіант показаний на
рис. 2.
Рис. 2. Запуск візуального конструктора класів
На рис. 3 показаний приклад файлу візуального конструктора класів Class Designer.
Рис. 3. Візуальний конструктора класів
Елементи у візуальний конструктор класів додаються за допомогою або панелі Toolbox, або Solution
Explorer. Панель Toolbox служить для додавання нових елементів. Solution Explorer застосовується для
додавання в схему вже існуючих класів. У обох випадках ви просто перетягуєте елементи у вікно
візуального конструктора Class Designer. Якщо елемент вже існує, то Visual Studio створить для вас
подробиці класу. Якщо файл класу містить більше за один клас, то кожен клас буде поміщений на схему як
окремий об'єкт.
На рис. 4 показаний приклад інструментів Class Designer в панелі Toolbox. Зверніть увагу, що ви можете
описати тут усі об'єктно-орієнтовані концепції, у тому числі класи, інтерфейси, спадкоємство і т. д.
5
Рис. 4. Панель інструментів Class Designer
Коли ви додаєте у візуальний конструктор новий елемент(такий як клас або структуру), то він запросить
у вас назву і місце розташування. Ви можете вибрати чи: новий файл для цього елементу або розмістити
його в існуючому файлі. На рис. 5 показано діалогове вікно New Class. Тут ви можете дати класу назву,
задати модифікатор доступу, а також вказати ім'я файлу. згенерувати
Рис. 5. Додавання в конструктор нового класу
Однією з найголовніших переваг схеми класів є те, що вона візуально представляє зв'язку між класами.
Ці стосунки набагато легше побачити на схемі, чим в коде.
Можуть бути представлені наступні зв'язки:
Inheritance(Спадкоємство) вказує спадкоємство від іншого класу;
Interface(Інтерфейс) вказує, що клас реалізує один або декілька інтерфейсів;
Association(Зв'язок) вказує зв'язок між класами.
Спадкоємство
Спочатку подивимося на спадкоємство у візуальному конструкторі. Припустимо, що у вас є базовий
клас Product. Цей клас у вашій системі є узагальненим продуктом. Потім ви хочете створити конкретний
клас Book, який наслідує від Product. Щоб зробити це за допомогою візуального конструктора Class
Designer, переконаєтеся в тому, що обидва класи знаходяться на екрані. Потім виберіть в панелі Toolbox
інструмент Inheritance. Він має власний спеціальний значок, на якому зображена стрілка вгору. Ця підказка
означає, що ви хочете намалювати спадкоємство від класу реалізації до базового класу (рис. 6).
Коли ви закінчите малювати, стрілка спадкоємства повинна вказувати у напрямку до базового класу.
Приклад показаний на рис. 7. Зверніть також увагу, що в класі Book тепер є значок, який вказує, що клас
наслідує від Product.
Інтерфейс
Наступний візуальний зв'язок, який ми розглянемо, це інтерфейс. Для нашого прикладу припустимо,
що усі бізнес-сутності нашої системи реалізують однаковий контракт. У цьому контракті можуть бути
описані властивості: ідентифікатор і назва. У нім можуть бути також описані такі методи, як Get, Delete і
Save.
6
Рис. 6. Опис спадкоємства
Рис. 7. Опис спадкоємства
Для реалізації цього інтерфейсу ви знову використовуєте інструмент Inheritance з панелі інструментів
візуального конструктора Class Designer. Перетягніть його від класу(який робить реалізацію) до інтерфейсу.
На рис. 8 показаний результат реалізованого інтерфейсу. Зверніть увагу на значок-льодяник над класом
Customer; він означає реалізацію інтерфейсу.
Рис. 8. Реалізація інтерфейсу
7
Зв'язок
Останнє це зв'язок. Це відношення у світі UML зазвичай дуже нестроге. Проте у візуальному
конструкторі Class Designer зв'язок дуже реальний. Зазвичай це означає, що два класи пов'язані через
використання одного з них. Це відношення необов'язкове в сенсі показу. Воно може існувати, але ви не
зобов'язані показувати його в схемі.
Припустимо, що у вас є об'єкт Order. Цей об'єкт може надавати властивість OrderStatus. Припустимо, що
він також має властивість Customer для доступу до запису, пов'язаного із замовленням. Ці дві властивості є
зв'язками. Ви можете залишити їх як властивості або показати їх як зв'язки.
Ви можете також намалювати ці властивості-зв'язки на схемі. Для цього виберіть інструмент Association
з панелі Toolbox. У цього інструменту такий же значок, що і у Inheritance. Після цього намалюйте зв'язок від
класу, який містить зв'язок, до того класу, який є об'єктом зв'язку. Ви можете також клацнути правою
кнопкою миші по тій властивості, яка представляє зв'язок, і вибрати в контекстному меню пункт Show as
Association(чи Show as Collection Association для зв'язків, які є частиною колекції). На рис. 9 показаний
приклад.
Рис. 9. Відображення як звязок
В результаті властивість-зв'язок відображатиметься на стрілці зв'язку. Це означає, що клас, з якого
починається зв'язок, містить цю властивість(проте воно відображається тільки на цій лінії). Це показано на
рис. 10.
Рис. 10. Створення звязку
Class Designer дозволяє вам не лише описувати класи і зв'язки. Насправді ви можете робити
заглушечный код і рефакторинг.
8
Є два способи додавати код у ваші класи, структури, інтерфейси і т. п. Перший спосіб дозволяє вводити
його безпосередньо у візуальному конструкторі. Наприклад, якщо ви знаходитеся в розділі Properties класу,
то можете клацнути по ньому правою кнопкою миші і вибрати додавання нової властивості. При цьому
властивість буде поміщена у ваш клас, і ви зможете редагувати його в схемі. Цей метод працює і для інших
членів класу. Проте він має і декілька недоліків. Наприклад, ви не можете описати повну сигнатуру методу
або вказати рівні доступу. Для цього вам треба вікно Class Details.
Другий спосіб припускає використання вікна Class Details, яке дозволяє вам повністю описати методи,
поля, властивості і події класу. Воно працює також і з іншими конструкціями, такими як інтерфейси,
делегати і перерахування. Для використання цього вікна вам необхідно клацнути по класу правою кнопкою
миші і вибрати в контекстному меню пункт Class Details. Вибір цього пункту відкриє редактор Class Details
для виділеного класу. На рис. 11 показано вікно редактора Class Details.
Рис. 11. Вікно Class Details
Висновок: В даній лабораторній роботі ми ознайомитися з діаграмами класів UML. Вивчили інструменти візуального моделювання структури програмної системи у виді діаграм класів. Вивчили засоби представлення діаграм класів та візуального програмування в інтегрованому середовищі MS Visual Studio.