UML и Java. Представление структур. Классы. Переменные Java. Методы

Страницы работы

Фрагмент текста работы

Глава 4UML и Java

Хотя UML и Java оба относятся к языкам для разработки программного обеспечения, они лежат в разных планах реальности. UML занимает визуальный мир, aJavano своей природе текстуален.

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

Например, объявление переменной в Java может иметь несколько различных эквивалентов eUML.

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

Представление структур

Структурные концепции, такие как класс и интерфейс, являются основополагающими как в языке Java, так и в UML. В данном разделе показано, как эти концепции проявляются в обоих языках.

Класс

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

·  Отсек имени. Здесь отображается имя класса Java.

·  Отсек атрибутов. Здесь перечисляются переменные, определенные в классе, если они есть.

·  Отсек операций. Здесь показаны методы, определенные в классе, если они есть.

На рис. 4.1 показан простой класс Java без переменных и методов.

Если класс абстрактный, его имя выделяется курсивом.

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

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

На рис. 4.2 показан стереотипный класс.

Переменная

Переменные Java могут по-разному проявляться в UML. Ниже приводится пример, когда моделирование добавляет аспект, неочевидный в исходном тексте.

Наиболее простой способ объявить переменную — показать ее в отсеке атрибутов класса. Если атрибут подчеркнут, это указывает на статический характер переменной. На видимость атрибута указывает знак перед ним: + — открытый атрибут (public), # — защищенный (protected) и закрытый (private). На рис. 4.3 показан класс с атрибутами.

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

Переменные также могут проявляться в отношениях объекта с другими объектами (например, коллекция некоторого вида). Такие отношения и их использование рассматриваются в разделе "Представление отношений" в данной главе.

Метод

Методы — это эквивалент операций над классом в UML. Они отображаются в третьем отсеке класса. Область видимости операций UML определяется с применением того же соглашения, которое используется для атрибутов класса и описано в разделе "Переменная".

Подчеркивание имени операции указывает на статический метод. Запись операции в отсеке операций курсивом показывает, что это абстрактный метод. Конечно, детали метода можно показывать или не показывать в зависимости от их важности. Например, на рис. 4.4 не все сигнатуры операций показаны полностью.

Объект

Хотя концепция объекта есть как в Java, так и в UML, между объектом

Похожие материалы

Информация о работе