Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование диаграммы классов «Склад»

Содержание:

Введение

Центральное место в объектно-ориентированном программировании занимает разработка логической модели системы в виде диаграммы классов. Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывать их внутреннюю структуру и типы отношений.

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

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

ГЛАВА 1 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

1.1. Объектно-ориентированное программирование.

Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

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

Основные принципы структурирования в случае ООП связаны с различными аспектами базового понимания предметной задачи, которое требуется для оптимального управления соответствующей моделью:

- абстрагирование для выделения в моделируемом предмете важного для решения конкретной задачи по предмету, в конечном счете — контекстное понимание предмета, формализуемое в виде класса;

- инкапсуляция для быстрой и безопасной организации собственно иерархической управляемости: чтобы было достаточно простой команды «что делать», без одновременного уточнения как именно делать, так как это уже другой уровень управления;

- наследование для быстрой и безопасной организации родственных понятий: чтобы было достаточно на каждом иерархическом шаге учитывать только изменения, не дублируя все остальное, учтенное на предыдущих шагах;

- полиморфизм для определения точки, в которой единое управление лучше распараллелить или наоборот — собрать воедино.

То есть фактически речь идет о прогрессирующей организации информации согласно первичным семантическим критериям: «важное/неважное», «ключевое/подробности», «родительское/дочернее», «единое/множественное». Прогрессирование, в частности, на последнем этапе дает возможность перехода на следующий уровень детализации, что замыкает общий процесс.

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

Основные понятия ООП

Различают следующие основные понятия ООП:

  • Класс;
  • Объект;
  • Абстракция данных;
  • Инкапсуляция;
  • Полиморфизм;
  • Наследование.

Рассмотрим каждый из них подробнее.

Класс — универсальный, комплексный тип данных, состоящий из тематически единого набора «полей» (переменных более элементарных типов) и «методов» (функций для работы с этими полями), то есть он является моделью информационной сущности с внутренним и внешним интерфейсами для оперирования своим содержимым (значениями полей). В частности, в классах широко используются специальные блоки из одного или чаще двух спаренных методов, отвечающих за элементарные операции с определенным полем (интерфейс присваивания и считывания значения), которые имитируют непосредственный доступ к полю. Эти блоки называются «свойствами» и почти совпадают по конкретному имени со своим полем (например, имя поля может начинаться со строчной, а имя свойства — с заглавной буквы). Другим проявлением интерфейсной природы класса является то, что при копировании соответствующей переменной через присваивание, копируется только интерфейс, но не сами данные, то есть класс — ссылочный тип данных. Переменная-объект, относящаяся к заданному классом типу, называется экземпляром этого класса. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных. Обычно классы разрабатывают таким образом, чтобы обеспечить отвечающие природе объекта и решаемой задаче целостность данных объекта, а также удобный и простой интерфейс. В свою очередь, целостность предметной области объектов и их интерфейсов, а также удобство их проектирования, обеспечивается наследованием.

Объект - это экземпляр класса. Один класс в общем случае может иметь произвольное число экземпляров - конкретных реализаций. В большинстве случаев именно конкретными реализациями и оперирует программист во время своей работы. Поясним сказанное на примере. Рассмотрим класс computer - абстракцию Компьютер. К свойствам класса могут быть отнесены модель, габариты, характеристики, количество PCI слотов и так далее. К методам – включение, выключение, перезагрузка.

Абстракция данных

Абстрагирование означает выделение значимой информации и исключение из рассмотрения незначимой. В ООП рассматривают лишь абстракцию данных (нередко называя её просто «абстракцией»), подразумевая набор значимых характеристик объекта, доступный остальной программе.

Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Одни языки (например, С++, Java или Ruby) отождествляют инкапсуляцию с сокрытием, но другие (Smalltalk, Eiffel, OCaml) различают эти понятия.

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

Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом.

Например, бытовая техника имеет общие признаки: габариты, характеристики, производитель и так далее. А стиральная машина имеет свои признаки: класс потребления электроэнергии, класс шума и т.д. Он в то же время относится к бытовой техники и имеет те же характеристики.

Бытовая техника

Стиральная машина

Габариты

Производитель

Характеристики

Класс потребления электроэнергии

Класс шума

Множественное наследование

При множественном наследовании, у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости.

Множественное наследование реализовано в «C++». Из других языков, предоставляющих эту возможность, можно отметить «Python» и «Eiffel». Множественное наследование поддерживается в языке «UML».

Множественное наследование — потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имён методов в предках. В языках, которые позиционируются как наследники «C++» («Java», «C#» и другие), от множественного наследования было решено отказаться в пользу интерфейсов. Практически всегда можно обойтись без использования данного механизма. Однако, если такая необходимость всё-таки возникла, то для разрешения конфликтов использования наследованных методов с одинаковыми именами возможно, например, применить операцию расширения видимости — «::» — для вызова конкретного метода конкретного родителя.

Попытка решения проблемы наличия одинаковых имён методов в предках была предпринята в языке «Eiffel», в котором при описании нового класса необходимо явно указывать импортируемые члены каждого из наследуемых классов и их именование в дочернем классе.

Большинство современных объектно-ориентированных языков программирования («C#», «Java», «Delphi» и другие) поддерживают возможность одновременно наследоваться от класса-предка и реализовать методы нескольких интерфейсов одним и тем же классом. Этот механизм позволяет во многом заменить множественное наследование — методы интерфейсов необходимо переопределять явно, что исключает ошибки при наследовании функциональности одинаковых методов различных классов-предков.

Полиморфизм - свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Так же существуют и другие определения:

  • Полиморфизм в программировании - это способность предоставлять один и тот же интерфейс для различных базовых форм (типов данных);
  • Полиморфизм - возможность объектов иметь различную реализацию;
  • «один интерфейс - много реализаций»;
  • Полиморфизм - положение теории типов;
  • Абстракция невозможна без инкапсуляции и наследования, как невозможен полиморфизм без наследования.

Одним из основных механизмов, лежащих в основе полиморфизма, выступает динамическое связывание. В процедурных языках тело функции связывается с местом ее вызова на этапе компиляции. Такой подход получил название статического (или раннего) связывания. В объектных языках же возможна ситуация, кода указатель на экземпляр класса А на самом деле связан с экземпляром класса В (при этом В является наследником А). Вызов перегруженного метода через указатель должен повлечь работу метода из В, однако компилятору это не известно. Решением проблемы является динамическое (или позднее) связывание, то есть привязка тела метода к месту вызова непосредственно во время выполнения.

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

Параметрические типы. Вместо того, чтобы писать класс для каждого конкретного типа следует создать типы, которые будут реализованы во время выполнения программы, то есть мы создаем параметрический тип. Полиморфизм переопределения. Абстрактные методы часто относятся к отложенным методам. Класс, в котором определен этот метод может вызвать метод и полиморфизм обеспечивает вызов подходящей версии отложенного метода в дочерних классах. Специальный полиморфизм допускает специальную реализацию для данных каждого типа. Полиморфизм-перегрузка - это частный случай полиморфизма. С помощью перегрузки одно и то же имя может обозначать различные методы, причем методы могут различаться количеством и типом параметров, то есть не зависят от своих аргументов. Метод может не ограничиваться специфическими типами параметров многих различных типов.

Специальные таблицы. Каждый объект, имеющий хотя бы одну виртуальную функцию, хранит указатель на таблицу своего класса, с помощью которой вычисляется адрес расположения необходимой реализации метода в памяти. Остается добавить, что использование виртуальных функций актуально не для всех языков программирования.

Формы полиморфизма

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

Язык графического описания UML

Язык UML представляет собой общецелевой язык визуального моделирования, который разработан для спецификации, визуализации, проектирования и документирования компонентов программного обеспечения, бизнес-процессов и других систем. Язык UML одновременно является простым и мощным средством моделирования, который может быть эффективно использован для построения концептуальных, логических и графических моделей сложных систем самого различного целевого назначения.

Модель представляется в виде сущностей и отношений между ними, которые показываются на диаграммах.

Сущности – это абстракции, являющиеся основными элементами моделей. Имеется четыре типа сущностей – структурные (класс, интерфейс, компонент, вариант использования, кооперация, узел), поведенческие (взаимодействие, состояние), группирующие (пакеты) и аннотационные (комментарии). Каждый вид сущностей имеет свое графическое представление. Сущности будут подробно рассмотрены при изучении диаграмм.

Отношения показывают различные связи между сущностями. В UML определены следующие типы отношений:

  • Зависимость показывает такую связь между двумя сущностями, когда изменение одной из них – независимой – может повлиять на семантику другой – зависимой. Зависимость изображается пунктирной стрелкой, направленной от зависимой сущности к независимой.
  • Ассоциация – это структурное отношение, показывающее, что объекты одной сущности связаны с объектами другой. Графически ассоциация показывается в виде линии, соединяющей связываемые сущности. Ассоциации служат для осуществления навигации между объектами. Например, ассоциация между классами «Заказ» и «Товар» может быть использована для нахождения всех товаров, указанных в конкретном заказе – с одной стороны, или для нахождения всех заказов в которых есть данный товар, – с другой. Понятно, что в соответствующих программах должен быть реализован механизм, обеспечивающий такую навигацию. Если требуется навигация только в одном направлении, оно показывается стрелкой на конце ассоциации. Частным случаем ассоциации является агрегирование – отношение вида «целое» – «часть». Графически оно выделяется с помощью ромбика на конце около сущности-целого.
  • Обобщение – это отношение между сущностью-родителем и сущностью-потомком. По существу, это отношение отражает свойство наследования для классов и объектов. Обобщение показывается в виде линии, заканчивающейся треугольником, направленным к родительской сущности. Потомок наследует структуру (атрибуты) и поведение (методы) родителя, но в то же время он может иметь новые элементы структуры и новые методы. UML допускает множественное наследование, когда сущность связана более чем с одной родительской сущностью.
  • Реализация – отношение между сущностью, определяющей спецификацию поведения (интерфейс) с сущностью, определяющей реализацию этого поведения (класс, компонент). Это отношение обычно используется при моделировании компонент и будет подробнее описано в последующих статьях.

Диаграммы. В UML предусмотрены следующие диаграммы:

  • Диаграммы, описывающие поведение системы:
    • Диаграммы состояний (State diagrams),
    • Диаграммы деятельностей (Activity diagrams),
    • Диаграммы объектов (Object diagrams),
    • Диаграммы последовательностей (Sequence diagrams),
    • Диаграммы взаимодействия (Collaboration diagrams);
  • Диаграммы, описывающие физическую реализацию системы:
    • Диаграммы компонент (Component diagrams);
    • Диаграммы развертывания (Deployment diagrams).

ГЛАВА 2 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

2.1. Склад. Классификация.

Склад - территория, помещение (также их комплекс), предназначенное для хранения материальных ценностей складских услуг.

Склад - комплекс со своей инфраструктурой, в которую входят инженерные коммуникации, транспортные пути внутри склада (базы), здания, открытые площадки, навесы, эстакады для размещения хранимых материалов, подъездные пути внешнего транспорта, административные и бытовые сооружения.

Независимо от выполняемой роли любой склад выполняет следующие ос­новные операции:

  • прием, хранение, обработку и отгрузку товаров;
  • учет движения товаров;
  • обеспечение сохранности товаров.

Складские помещения классифицируются по:

  • Виду и характеру хранимых материалов: универсальные и специализированные;
  • Типу конструкции: закрытые, полузакрытые, открытые, специальные (например, бункерные сооружения, резервуары);
  • Месту расположения и масштабу действия: центральные, участковые, прицеховые;
  • Степени огнестойкости: несгораемые, трудносгораемые, сгораемые.

По техническим характеристикам и оснащению склады можно разделить на четыре класса.

Склад класса А:

Современное одноэтажное складское здание, построенное по современ­ным технологиям с использованием высококачественных материалов. Высота потолка от 10 м, позволяющая установку многоуровневого стеллажного обо­рудования. Ровный пол с антифрикционным покрытием. Система пожарной сигнализации и автоматическая система пожаротушения. Регулируемый температурный режим. Тепловые завесы на воротах. Автоматические ворота докового типа с гидравлическим пандусом, регулируемым по высоте. Центральное кондиционирование или принуди­тельная вентиляция.

Система охранной сигнализации и видеонаблюдения. Офисные площади при складе. Оптико-волоконные линии. Достаточная территория для отстоя и маневрирования большегрузных автопоездов. Расположение на основных магистралях, обеспечивающих хороший подъезд.

Склад класса В:

Существуют помещения с несколько упрощенными характеристиками, однако, не уступающие в удобстве предыдущей категории. Класс В включает в себя такие виды. Размеры склада этой категории могут быть внушительными. Однако это многоэтажное здание, что позволяет занимать меньший участок, по сравнению со зданиями класса А. Высота потолков подобных объектов находится в пределах 4,5-8 м. Полы ровные, залитые асфальтом или бетоном. Они не имеют антифрикционного покрытия. Температура в помещении в зимнее время не опускается ниже +10 °С. Зона отгрузки имеет пандус, есть система охраны и пожарной безопасности. Офисы совмещены со складскими помещениями. В них применяются современные системы связи, телекоммуникации. Подъезд к таким складам может быть не таким удобным, но здание находится недалеко от производства или города.

Склад класса С:

Капитальное производственное помещение или утепленные ангары. Вы­сота потолков от 3,5 до 18 м. Пол — асфальт или бетонные плиты. Ворота на нулевой отметке, автомашина заходит внутрь помещения.

Склад класса D:

Характеризуется наименьшими требованиями. Это может быть не отапливаемое подвальное помещение, бункер или ангар. В эту категорию также попадают объекты гражданской обороны.

2.2. Архитектура склада и его составляющих.

Рассмотрим подробнее классический пример диаграммы классов - структуру склада:

  • Люди;
  • Помещение;
  • Продукция (материалы);
  • Зона хранения;
  • Подъемно-транспортное оборудование.

Как и в любой организации, главной ценностью являются люди. Они имеют характерные для каждого признаки:

  • Имя;
  • возраст;
  • пол.

Так же люди делаться на:

  • работников склада;
  • имеющее иное отношение (поставщик, покупатель).

Сотрудники делятся по направлениям:

  • финансовое направление;
  • АХО;
  • Логистическое.

Отделам:

  • качества;
  • финансовый;
  • бухгалтерия;
  • снабжения.

Каждый занимает свою должность:

  • грузчик;
  • товаровед.

Следующим немало важной составляющей склад является помещение

По конструкции склад может быть:

  • открытым;
  • полузакрытым (имеет только крышу);
  • закрытым.

По параметрам хранения существуют:

  • обычные;
  • специальные объекты, в которых созданы определенные условия (влажность, температура, освещение).

По признаку ассортимента различают:

  • специализированные;
  • смешанные;
  • универсальные объекты.

Различают следующие виды складов:

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

Продукция (сырье)

По виду хранимой продукции:

  • склады сырья;
  • материалов;
  • готовой продукции.

По условию хранения:

  • сезонная продукции;
  • пищевая;
  • непищевая.

Вся наша продукция хранится в зоне хранения. Зона хранения представляет собой площадь, предназначенную для хранения грузов.

Способ хранения:

  • на стеллажах;
  • в поддонах;
  • в контейнерах.

По параметрам хранения существуют:

  • обычные;
  • специальные объекты, в которых созданы определенные условия (влажность, температура, освещение).

Подъемно-транспортное оборудование

По типу:

  • Электрические;
  • Механические.

По габаритам:

  • подъемные столы;
  • гидравлические аккумуляторные тележки;
  • штабелеры.

Глава 3 СОСТАВЛЕНИЕ ДИАГРАММЫ КЛАССОВ ВЫБРАННОЙ СУЩНОСТИ

3.1. Исходные данные для построения диаграммы классов

Представим, что у нас закрытый специализированный склад длиной 230 метров, шириной 65 метров и высотой 24 метра, в котором созданы определенные условия:

  • Влажность не больше 45 -50 %
  • Температура не больше 20%

По назначения наш склад относится к оптово-распределительным. На стеллажах хранится пищевая готовая продукция. Разгрузку и погрузку осуществляют грузчики с помощью электроштабелеров и ручных погрузчиков.

Построение диаграммы проводилось в среде построения UML диаграмм StarUML v.5

3.2. Диаграмма классов исследуемой сущности.

Вначале разберем часть сущности «помещение». Диаграмма классов, отвечающая за данный класс, представлена на Рис.1.

Рис.1 помещение.

Абстрактный класс space, обозначающий помещение со свойствами:

  • class - обозначает класс склада;
  • role - основную роль;
  • distance – отдаленность;
  • FireSafety – пожаро-безопасность;
  • Storage Parameters – параметры хранения.

Его непосредственный наследник класс Stock. У склада присутствует конструктивная характеристика Construction, вид – kind, длина - length, ширина - width, высота - height и ассортимент который храниться на нашем складе – assortment.

Соответственно, наш склад относится к оптово-распределительным, закрытого типа длиной 230 метров, шириной 65 метров и высотой 24 метра.

Продукция (сырье)

На данной диаграмме абстрактный класс Production обозначает

продукцию с наименованием и сроком годности.

Абстрактный класс наследник food, имеет свойство:

  • быстропортящийся – perishable;
  • quantity: string[1..*]-представляет собой количество хранимой продукции;
  • composition: string[1..*] - представляет собой количество ингредиентов;
  • consist – отображает компоненты в составе.

Фактором хранения абстрактного класса food является класс StorageConditions с характеристиками: температура и влажность.

Абстрактный класс зона хранения StorageArea, обладает свойством StorageMethod - способ хранения и поддерживает условия фактора хранения StorageConditions.

Диаграмма представлена на рис.2

Рис.2 Продукция.

Люди –human имеют характеристики:

  • Name –имя(ФИО);
  • Age – возраст человека;
  • Sex of a person- пол.

Так же класс human связан с абстрактным классом stock с помощью отношения агрегации. Human принадлежит абстрактная характеристика worker и otherwise. Worker характеризует работника склада, его должность и отдел. Составной частью worker является direction со свойством activity-направление деятельности. И heaver –грузчик, который обладает допуском – admission и обладает методов UnloadingLoading(product, quantity, weight) – т.е. разгрузка и погрузка продукции.

Otherwise характеризует иной способ занятости human и обладает рядом методов:

CargoDelivery(product, quantity, invoices) –данный метод описывает доставку груза, и передается наименования товар, количество товара и накладные по товару.

Shipment(product, quantity, invoices) данный метод описывает отгрузку груза, и передается наименования товар, количество товара и накладные по товару

рис.3

Рис.3 Люди.

Рассмотрим подъемно-транспортное оборудование – LiftingAndTransportEquipment. Оно характеризуется по типу и габаритам, соединяется с классом heaver с помощью отношения ассоциации.

Рис.4

Рис.4 Подъемно-транспортное оборудование.

Теперь представим общую диаграмму классов склада рис. 5

Данная схема не является полным описанием структуры склада. Её цель - отображение общего процесса объектно-ориентированного проектирования

рис. 5 Общая диаграмма классов склада.

Заключение

Результатом данной курсовой работы является диаграмма общего вида исследуемой сущности - склада. В ходе исследования нам удалось изучить и закрепить основные виды отношений между классами, проработать построение диаграмм классов с помощью графического языка UML при помощи программы StarUML v.5.

В ходе исследования графического языка UML нам удалось выяснить, что исследуемую сущность можно описать со всех возможных точек зрения и продемонстрировать разные аспекты поведения системы, а так же показать, что диаграммы UML сравнительно просты для чтения, т.к. в них позволено вводить собственные текстовые и графические стереотипы.

Исходя из выше изложенного, можно сделать вывод, что UML является языком широкого профиля, использующий графические обозначения для создания абстрактной модели системы.

Источники и литература

  1. Куприенко C. А., Ракуц Н. В. Система государственного накопления и распределения продукции в империи инков (рус.) // Ойкумена. Регионоведческие исследования: журнал. — 2013. — Вып. 2. — С. 87-94. 
  2. Крэг Ларман. Применение UML 2.0 и шаблонов проектирования = Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development. — 3-е изд. — М.: Вильямс, 2006. — 736 с.
  3. Джозеф Шмуллер. Освой самостоятельно UML 2 за 24 часа. Практическое руководство = Sams Teach Yourself UML in 24 Hours, Complete Starter Kit. — М.: Вильямс, 2015. — 416 с.
  4. Грейди Буч, Джеймс Рамбо, Айвар Джекобсон. Язык UML. Руководство пользователя = The Unified Modeling Language user guide. — 2-е изд. — М., СПб.: ДМК Пресс, Питер, 2014. — 432 с. — ISBN 5-94074-260-2.
  5. Буч Г., Якобсон А., Рамбо Дж. UML. Классика CS / С. Орлов. — 2-е изд.. — СПб.: Питер, 2008. — 736 с.