Лекция
Привет, сегодня поговорим про диаграмма классов, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое диаграмма классов, class diagram, композиция, агрегация, наслеование, генерализация, обобщение, ассоциация, различие между агрегацией и композицией , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .
UML (Unified Modeling Language) - унифицированный язык моделирования – это язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML моделью. UML был создан для определения, визуализации, проектирования и документирования в основном программных систем.
Использование UML не ограничивается моделированием программного обеспечения. Его также используют для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
Существует 13 официальных диаграмм UML 2.0, каждая из которых представляет собой различное представление разных аспектов системы:
Но мы себе сразу выносить мозг не собираемся (мы будем делать это постепенно), так что сегодня поговорим только об одном виде диаграмм – диаграммах классов. И проиллюстрируем все примерами на PHP.
Диаграмма классов является типом диаграммы статической структуры. Она описывает структуру системы, показывая ее классы, их атрибуты и операторы, и также взаимосвязи этих классов. И так, начнем с примеров:
Генерализация показывает, что один из двух связанных классов (подтип), является более частной формой другого (супертип), который называется обобщением первого.
Графически генерализация представляется линией с пустым треугольником у супертипа.
Диаграмма:
На PHP это будет выглядеть, следующим образом:
Все просто. Об этом говорит сайт https://intellect.icu . Идем дальше. И введем пару определений:
Связь – простая взаимосвязь между объектами. Она представляется линией соединяющей два или более объектных блока. Она встречается на диаграммах классов или объектов. Связь – частный случай ассоциации.
ассоциация – это семейство связей двух и более классов. Всего существует пять типов ассоциации. Но наиболее распространены два: двунаправленная и однонаправленная
ассоциации.
Рассмотрим частные варианты:
Агрегация – «has a» (быть частью) случай ассоциации. Агрегация применяется когда один класс должен быть контейнером других классов. Причем время существования содержащихся классов никак не зависит от времени существования класса контейнера.
Т.е. в нашем примере в качестве контейнера выступает объект класса Model. И если в ходе выполнения программы он будет уничтожен, это никак не повлияет на объект класса DataBase.
Графически агрегация представляется пустым ромбиком на блоке класса и линией, идущей от этого ромбика к содержащемуся классу.
Диаграмма:
Код:
Еще один «has a» случай ассоциации, но более строгий. В отличии от агрегации, композиция имеет жесткую зависимость времени существования экземпляров класса контейнера и экземпляров содержащихся классов. Если контейнер будет уничтожен, то все его содержимое будет уничтожено также.
Графически представляется как и агрегация, но с закрашенным ромбиком.
Диаграмма:
Код на PHP:
Различие между этими двумя видами ассоциации состоит в том, что композиция может быть частью одного и только одного целого, в то время как агрегация может быть частью нескольких объектов.
Сообщение используется когда один класс “общается” с другим при помощи инстанцирования.
Инстанцирование (англ. instantiation) — создание экземпляра класса. В отличие от слова «создание» применяется не к объекту, а к классу. То есть говорят создать экземпляр класса или инстанцировать класс. Порождающие паттерны используют полиморфное инстанцирование.
Экземпляр класса (англ. instance) — это описание конкретного объекта в памяти. Класс описывает свойства и методы, которые будет доступны у объекта, построенного по описанию, заложенному в класс. Экземпляры используют для представления конкретных сущностей реального мира.
Графически представляется в виде стрелочки направленой к “вызываемому” классу.
Диаграмма:
Пример на PHP:
Так же направленная ассоциация может быть двухсторонней, например:
Диаграмма:
Код:
Вот, собственно и все. Может быть, я напишу еще несколько статей по проектированию, а пока жду ваших комментариев.
Все диаграммы были выполнены в программе StarUML. Очень легкая и простая программка, как раз то, что надо начинающему.
Надеюсь, эта статья про диаграмма классов, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое диаграмма классов, class diagram, композиция, агрегация, наслеование, генерализация, обобщение, ассоциация, различие между агрегацией и композицией и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Из статьи мы узнали кратко, но содержательно про диаграмма классов
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)