Файл: Практикум по промышленному.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.03.2024

Просмотров: 96

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Теоретические сведения

Способы применения UML

Диаграммы UML

Диаграмма классов (Class diagram) Диаграмма классов описывает типы объектов системы и различного рода статические отношения, которые существуют между ними. На диаграммах классов отображаются также свойства классов, операции классов и ограничения, которые накладываются на связи между объектами.Описаниеклассаможет включать множество различных элементов, и чтобы они не путались, в языке предусмотрено группирование элементов описания класса по секциям. Стандартных секций три: секция имени — наряду с обязательным именем может содержать также стереотип, кратность и список именованных значений; секция свойств — содержит список описаний свойств класса; секция операций — содержит список описаний операций класса. Как и все основные сущности UML, класс обязательно имеет имя, а стало быть, секция имени не может быть опущена. Прочие секции могут быть пустыми или отсутствовать вовсе.Класс изображается прямоугольником. Если секций более одной, то внутренность прямоугольника делится горизонтальными линиями на части, соответствующие секциям.На рис. 2 изображена упрощенная диаграмма классов системы, занимающейся обработкой заказов клиентов. Прямоугольники на диаграмме представляют классы и разделены на три части: имя класса (жирный шрифт), его атрибуты и его операции. На рис. 2 также показаны два вида связей между классами: ассоциации и обобщения.Свойства Свойства представляют структурную функциональность класса. В первом приближении можно рассматривать свойства как поля класса. Свойства представляют единое понятие, воплощающееся в двух совершенно различных сущностях: в атрибутах и в ассоциациях. Хотя на диаграмме они выглядят совершенно по­разному, в действительности это одно и то же.Атрибуты Атрибут описывает свойство в виде строки текста внутри прямоугольника класса. Полная форма атрибута:видимость имя: тип кратность = значение по умолчанию {строка свойств} Например: имя: String [1] = "Без имени" {readOnly} Обязательно только имя. Метка видимости обозначает, относится ли атрибут к открытым (обозначается значком +) (public), закрытым (­) (private), защищенным (#) (protected), пакетным () (package);

Диаграмма последовательности (Sequence diagram)

Практическая часть

Инструментарий

Начало работы

Создание первого проекта

Пример создания UML-диаграмм архитектуры проекта с помощью PlantUML

Задания для самостоятельной работы

Вариант №1, 16

Вариант №2, 17

Вариант №3, 18

Вариант №4, 19

Вариант №5, 20

Вариант №6, 21

Вариант №7, 22

Вариант №8, 23

Вариант №9, 24

Вариант №10, 25

Вариант №11, 26

Вариант №12, 27

Вариант №13, 28

Вариант №14, 29

Вариант №15, 30

Литература, ссылки

и свое имя и фамилию.

После создания проекта и его сканирования (это может занять до полминуты) будет показано основное окно IntelliJ IDEA. На скриншоте показаны основные части среды разработки.






Рекомендуется включить расширенный вид тулбара через меню View>Toolbar. При включении тулбар приобретет следующий вид (на скриншоте он вместе с меню).



В редакторе кода вместо комментария “write your code here” наберите код, отвечающий за вывод классического “Hello world!”.

System.out.println("Hello world!");

Запустим программу нажатием кнопки Run. На скриншоте видно, что запуск успешен, программа работает корректно.




Пример создания UML-диаграмм архитектуры проекта с помощью PlantUML


Задание: разработать эскиз проекта системы управления книгами в библиотеке. При выполнении задания ограничимся диаграммами классов и последовательности.

Создадим новый проект. В меню необходимо выбрать File>New Project. В диалоге выбора шаблона проекта, не нужно выбирать никакого шаблона (т.е. проект будет пустой, но с одним одноименным модулем). Название проекта ­ UMLLab. Если появится запрос на замену текущего проекта создаваемым, то лучше разрешить замену, так как старый проект уже не нужен.



После открытия проекта разверните содержимое модуля UMLLab с помощью серого треугольника. Папка .idea и файл UMLLab.iml хранят в себе все настройки проекта и модуля. Папка src будет включать в себя исходные коды .java программы.



Создание диаграммы классов


Откройте контекстное меню модуля и выберите создание новой UML­диаграммы классов.

В качестве имени файла можно ввести LibraryClassDiagram. В итоге среда разработки примет следующий вид.




В центре показан “код” диаграммы, которая загружается в качестве примера каждый раз при создании новой диаграммы классов. Слева показана уже нарисованная диаграмма. При редактировании кода диаграмма сразу же изменяется.

Код диаграммы начинается строчкой @startumlи заканчивается @enduml. Между ними описываются сущности (классы, интерфейсы, перечисления и т. д.), а также связи между сущностями. Как именно это делать, будет пояснено ниже, но полнуюинформациюможнопосмотретьвфайле PlantUML_Language_Reference_Guideили по адресу http://plantuml.sourceforge.net/classes.html.

Удалим все, что находится между конечной и начальной строкой и приступим к проектированию системы управления книгами в библиотеке.

Так как составляется диаграммаклассов, то главными сущностями будут именно классы, и диаграмма будет описывать большей частью структурусистемы. В будущей системе будут классы Book и Library. Создадим их.

@startuml class Book {

}

class Library {

}

@enduml




Видно, что ни атрибутов, ни операций у этих двух классов пока нет. Добавим их исходя из необходимой функциональности.

У класса Book должны быть атрибуты: международный стандартный книжный номер (ISBN), название, автор, номер
книги в библиотеке, год издания, а также операции, устанавливающие и получающие данные атрибуты. Однако по причине их многочисленности и общеупотребительности, эти операции не будут включаться в диаграмму классов. Помимо них, у класса Book нет других операций.

В классе Library должны быть атрибуты: количество книг и название библиотеки. Операции: найти нужную книгу по какому­либо параметру, например, по ISBN, добавить новую книгу в библиотеку, удалить необходимую книгу.

@startuml

skinparam classAttributeIconSize 0 class Book {

­ISBN : String

­author : String [1..*]

­numberInLibrary : long

­year : int

}

class Library {

­numberOfBooks : long

­name : String

+findBookByISBN(ISBN : String) : Book

+addNewBook(book : Book) : boolean

+deleteBook(number : long) : boolean

}

@enduml




Строка “skinparam classAttributeIconSize 0” отключает изображение метки видимости в виде картинки. Это нужно потому, что символы меток видимости стандартизированы, а картинки ­ нет, поэтому лучше использовать символы, если нет соглашений об иных обозначениях меток видимости.

Можно задать вопрос, а где же указано то, что в библиотеке хранятся книги? Пока на диаграмме изображены два разрозненных класса. Добавим эту информацию. Это можно сделать двумя
путями, добавить некий атрибут в класс Library, который будет представлять собой список книг, хранящихся в библиотеке, а можно эту же самую информацию представить в виде ассоциации, но не однонаправленной, а двунаправленной.

Представление такой информации в виде ассоциации нагляднее, поэтому лучше выбрать именно ассоциацию. Почему ассоциация двусторонняя? Потому что не только библиотеке нужно хранить в себе информацию о всех книгах, входящих в неё, но и книга должна знать, какой библиотеке она принадлежит. Добавим информацию об этой ассоциации, дописав следующую строчку.

Book "0..*" <­­> "1" Library




На диаграмме сразу отобразились все изменения, классы были перекомпонованы. Данная ассоциация может быть прочитана как “в библиотеке может быть от нуля до бесконечности книг, а у книги может быть только одна библиотека которой она находится)”.

Продолжим конкретизировать эскиз. В библиотеке могут находиться также не только обычные книги, но и, к примеру, журналы. Самым очевидным решением было бы сделать класс Magazine подклассом класса Book. Но у журналов нет ISBN и конкретного автора! К тому же для большинства журналов для обозначения даты издания только года недостаточно.