Аргерих Л. О языке РНР. Часть 1. Страница 109


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

Эта диаграмма показывает, что класс 2 содержится в клас­се В ООП это принято назы­вать включением (contain­ment). Для нашего примера класса Саг можно создать та­кую модель (рис. 5.8).


Эта диаграмма показывает, что класс Са г «включает в себя» классы Key и En­gine. Черные ромбики показывают, что для того, чтобы обеспечить функци­онирование автомобиля, эти компоненты должны строиться вместе с ним. Помните, на конструкторы возлагается обязанность создать экземпляры всех компонентов, входящих в класс. Глядя на приведенную диаграмму классов, программист легко определит, экземпляры каких объектов он дол­жен создать, чтобы сделать доступными все сервисы.

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

Не во всех автомобилях должны быть CD-плейеры, что и обозначает новый символ - белый ромбик. Если при создании объекта не надо строить его компоненты, то для создания объекта CDPlayer необходимо предоставить ме-

Моделирование объектов с помощью UML

тод фабрики (обсуждавшийся ранее), например метод createCdPlayer() в на­шем классе Саг. Класс плейера отличается от Engine RequiredKey в том отноше­нии, что в классе Саг мы не создавали фабричные методы createEngine() и сге- ateRequiredKey(). На практике предоставлять эти сервисы тоже нет смысла.

Иногда класс «пользуется» другим классом в своих ло­кальных методах, но не со­держит его. Например, мы можем воспользоваться клас­сом Date для действий с вре­менными метками (times- tamps) UNIX. Мы отмечаем это сплошной линией без ром­биков (рис. 5.10).

Зная, как моделировать вклю­чение, займемся моделирова­нием структур наследования. В нашем примере интернет- магазина был целый ряд но­сителей, например CD, филь­мы и книги. Мы создали роди­тельский класс Media и поро­дили различные его подтипы, исходя из различных типов носителей, имеющихся в ма­газине. Чтобы показать, что Cd, Book и другие классы наследуют классу Media, используется черный треугольник, обращенный вершиной к родительскому классу, основание которого соединено со всеми дочерними классами. Вот UML-модель нашего магазина (рис. 5.11).




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

Рассылка новостей