- •1) Язык моделирования по. Концепции объекта и класса.
- •2. Характеристики объектно-ориентированного подхода к разработке по
- •4. Моделирование атрибутов и значений, операций и методов.
- •5. Концепция связи и ассоциации. Кратность и имена полюсов, упорядочение.
- •6. Концепция связи и ассоциации. Мультимножества и последовательности. Класс ассоциации.
- •7. Обобщение и наследование. Цели применения. Подмена составляющих.
- •8. Перечисление. Доступ к членам класса (видимость). (методичка лабораторной работы №2)
- •10. Агрегация. Композиция. (методичка лабораторной работы №2)
- •11. Множественное наследование. (методичка лабораторной работы №2)
4. Моделирование атрибутов и значений, операций и методов.
5. Концепция связи и ассоциации. Кратность и имена полюсов, упорядочение.
Концепции связей и ассоциации.
Связи и ассоциации позволяют устанавливать отношения между объектами и классами
Связь – это физическое или концептуальное соединение между объектами.
Связь это экземпляр ассоциации.
Ассоциация – это описание группы связей, обладающих общей структурой и общей семантикой.
Связи, являющиеся экземплярами ассоциаций, соединяют объекты тех классов, которые соединены между собой этой ассоциацией.
Ассоциация описывает множество потенциальных связей точно так же как класс описывает множество объектов.
Связи и ассоциации обычно присутствуют в постановке задачи в виде глаголов.
6. Концепция связи и ассоциации. Мультимножества и последовательности. Класс ассоциации.
Концепции связей и ассоциации.
Связи и ассоциации позволяют устанавливать отношения между объектами и классами
Связь – это физическое или концептуальное соединение между объектами.
Связь это экземпляр ассоциации.
Ассоциация – это описание группы связей, обладающих общей структурой и общей семантикой.
Связи, являющиеся экземплярами ассоциаций, соединяют объекты тех классов, которые соединены между собой этой ассоциацией.
Ассоциация описывает множество потенциальных связей точно так же как класс описывает множество объектов.
Связи и ассоциации обычно присутствуют в постановке задачи в виде глаголов.
7. Обобщение и наследование. Цели применения. Подмена составляющих.
8. Перечисление. Доступ к членам класса (видимость). (методичка лабораторной работы №2)
Перечисление
Перечисление (enumeration) – это тип данных, имеющий конечное множество значений. Например,
атрибут accessPermission (разрешение доступа) представляет собой перечисление с возможными
значениями read (чтение) и read-write (чтение и запись). На рисунке 2 показаны примеры перечислений.
Figure.ре nТуре (тип кисти) – перечисление, включающее возможные значения solid (сплошная), dashed
(штриховая) и dotted (пунктирная). TwoDimensional.fillType (тип заливки) – перечисление, включающее
возможные значения solid (сплошная), gray (полутон), none (нет), horizontal lines (горизонтальные линии) и
vertical lines (вертикальные линии), grade (градиент).
При конструировании моделей перечисления следует обязательно выделять, потому что они
встречаются достаточно часто и важны для пользователей. Перечисления важны и для реализации. Все
возможные значения перечисления можно указать в списке для выбора. Необходимо также ограничить
возможные данные разрешенными значениями.
Не следует использовать обобщение для указания значений перечислимого атрибута. Перечисление –
это просто список значений , а обобщение предназначено для упорядочивания описания объектов.
Обобщение следует использовать только там, где по крайней мере один из подклассов обладает
атрибутами, операциями или ассоциациями, неприменимыми к суперклассу. Как показано на рис. 3, не
следует строить обобщение класса Card, потому что в большинстве игр карты разных мастей ведут себя
одинаково.
В языке UML перечисление является типом данных. Для объявления перечисления необходимо
указать ключевое слово enumeration в угловых кавычках («») над именем перечисления в верхнем разделе
прямоугольника. Во втором разделе перечисляются значения перечисления (рис. 3).
Кратность
Кратность – это ограничение на количество возможных значений в наборе. Ранее мы рассмотрели
применение кратности к ассоциациям. Кратность применима и к атрибутам.
Указание кратности для атрибутов часто оказывается полезным, особенно в приложениях, связанных
с базами данных. Кратность атрибута определяет количество возможных значений в каждом экземпляре
атрибута. Наиболее типичные значения кратности: [1] – обязательное единственное значение, [0..1] – не-
обязательное единственное значение, [*] – произвольное количество значений. Кратность определяет,
является ли атрибут обязательным (в терминах баз данных – может ли атрибут иметь пустое значение). Она
также указывает, является атрибут единственным значением, или он может представлять собой совокуп-
ность значений. Если кратность не указана, предполагается, что она равна [1] (обязательное единственное
значение). Например, человек должен иметь одно имя, один или несколько адресов, одну дату рождения иВидимость
Видимость (visibility) характеризует способность метода ссылаться на составляющую другого класса
и может принимать значения public (открытая), pro tected (защищенная), private (закрытая) и package
(пакетная). Конкретная интерпретация этих значений зависит от языка программирования. Любой метод
может свободно обращаться к открытым составляющим (public ) (иными словами, любые методы любах
классов, могут обращаться к открытым составляющим). К защищенным составляющим (protected ) могут
обращаться методы только класса-владельца и всех его потомков (то есть составляющая доступна классам
в рамках иерархии наследования). К закрытым составляющим (private ) могут обращаться только методы языке UML видимость обозначается при помощи префикса. Символ + ставится перед открытыми
составляющими. Символ # ставится перед защищенными составляющими. Символ - ставится перед
закрытыми составляющими. Символ ~ ставится перед составляющими, доступными в рамках пакета.
Отсутствие префикса не позволяет делать никаких заключений о видимости.
При выборе значения видимости для какой-либо составляющей следует учитывать следующие
соображения.
Понятность модели . Чтобы получить представление о возможностях класса, необходимо понять все
его открытые составляющие. Закрытые, защищенные и пакетные составляющие можно игнорировать: они
вводятся лишь для удобства реализации.
Расширяемость . Открытые методы класса могут использоваться множеством других классов,
поэтому изменение их сигнатуры (количества и типа аргументов, типа возвращаемого значения) может
разрушить согласованность всей модели. Поскольку защищенные, закрытые и пакетные методы заведомо
используются меньшим числом классов, их изменения обходятся дешевле.
Контекст . Закрытые, защищенные и пакетные методы могут зависеть от предусловий или
информации о состоянии, произведенной другими методами того же класса. Вне своего контекста
закрытые методы могут возвратить неверные результаты или привести к отказу объекта в целом.
9. N-арные ассоциации. (методичка лабораторной работы №2)
