КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Средства объектно-ориентированного проектирования, предоставляемые UMLUnified Modeling Language, сокращённо UML, применяется на различных этапах разработки программного обеспечения (ПО). UML переводится как унифицированный язык моделирования. Unified Modeling Language может использоваться на различных этапах разработки ПО: как во время проектирования ПО, так и во время кодирования на конкретном языке. Так как UML представлен диаграммами, то этот язык используется не только программистами, но и, например, менеджерами в компаниях, разрабатывающих ПО (но при этом нужно знать некоторые концепции ООП).
Диаграммы классов UML (Class diagram) В UML можно создавать несколько типов диаграмм. В большинстве используются диаграммы классов (Class diagram). В данном типе диаграмм показывается взаимодействие классов программы.
Элементы диаграмм UML
Диаграммы UML состоят из элементов. Элементы представляются прямоугольниками, в которых пишется имя элемента. Например, изобразим в UML-диаграмме какой-нибудь класс (класс Camera):
Атрибуты (attribute) и операции (operation) в UML-диаграммах
Если в C++ переменная, принадлежащая классу, называется полем класса или переменной-членом, то в UML такая переменная называется атрибутом. Также и с функцией/методом класса - в UML это операция.
Для атрибутов и операций в элементах отводится отдельный блок. Каждый блок разделяется горизонтальной чертой. Тип атрибута (как и тип аргумента операции) задаётся через двоеточие/ Например, для класса Camera элемент с атрибутами и операциями будет выглядеть вот так: Здесь можно увидеть все достоинства UML. В Unified Modeling Language необязательно расписывать все детали классов. Это будет сделано при написании кода на конкретном языке.
Видимость атрибутов и операций в UML: +, -, # (спецификаторы доступа) Спецификатора доступа языка C++ (public, private, protected) в UML отображаются символами + (public), - (private), # (protected), которые ставятся перед именем атрибута/операции. Также возможен вариант с ключевыми словами public, private, protected.
Отношения между классами в ООП (UML, С++) В программах между классами существуют различные виды взаимодействия (или связи): один класс может быть производным другого, третий может содержать объект четвёртого в виде поля.
Первый вид связи - association. На русский можно перевести по-разному: ассоциация, связь, объединение. Ассоциация - самый слабый вид связи. Обычно ассоциация возникает, когда один класс вызывает метод другого или если при вызове метода в качестве аргумента передаётся объект другого класса. Иногда при ассоциации показывают направленность (если это имеет значение). В спецификации UML используется слово navigable. В данном случае направленность ассоциации говорит нам, что в методе MonstAr::Attack используется объект типа int.
Обобщение (generalization)Используется для представления наследования в UML. При обобщении рисуется сплошная линия. Обратите внимание как рисуется стрелочка - пустой треугольник.
Теперь насчёт слова обобщение (generalization). В UML используется именно оно, а не наследование, так как в данном виде связи один из классов (базовый) является общим, а остальные классы (производные) - более специализированными. На диаграммах агрегация показывается незакрашенным ромбом. Композиция классов - более сильная связь между классами, чем агрегация. Между агрегацией и композицией довольно тонкая грань. Особенностью композиции является то, что объекты, из которых создаётся композиция, могут принадлежать только классу, с которым они образуют композицию. При этом время жизни объекта и класса, в который встраивается объект, совпадает.
Для начала рассмотрим два примера из жизни. Например, dvd-привод и диски, которые он читает, образуют агрегацию. Диски можно свободно менять. Примером композиции может служить хлеб и мука. Извлечь муку уже невозможно. На этих двух примерах хорошо видна разница между композицией и агрегацией: компоненты собранные агрегацией можно разъединить, а с композицией этого сделать не получится. Одним из признаков агрегации является использование указателей. И наоборот, если при связи классов указатели не используются, то существует большая вероятность, что перед нами композиция классов. В данном случае у монстра "есть когти" (определённые в отдельном классе). Возможно, пример не слишком удачный, но здесь хорошо видна композиция классов: нельзя от монстра отделить его когти. На диаграммах композиция показывается закрашенным ромбом.
Реализация. Данная связь показывает отношение: класс - объект. На диаграмме реализация показывается пунктирной линией и незакрашенной стрелочкой:
|