AAA
Обычный Черный

Кто не делится найденным, подобен свету в дупле секвойи (древняя индейская пословица)

версия для печатиВерсия для печати



Библиографическая запись: Отношения между классами: наследование, зависимость, ассоциация, агрегация, композиция. — Текст : электронный // Myfilology.ru – информационный филологический ресурс : [сайт]. – URL: https://myfilology.ru//165/yazyki-programmirovaniya-i-ix-ispolzovanie-v-informaczionnyx-sistemax/otnosheniya-mezhdu-klassami-nasledovanie-zavisimost-assocziacziya-agregacziya-kompozicziya/ (дата обращения: 28.03.2024)

Отношения между классами: наследование, зависимость, ассоциация, агрегация, композиция

Отношения между классами: наследование, зависимость, ассоциация, агрегация, композиция

Содержание

    Классы, подобно объектам, не существуют в изоляции. Напротив, с отдельной проблемной областью связывают ключевые абстракции, отношения между которыми формируют структуру из классов системы.

    Всего существует четыре основных вида отношений между классами:

    • ассоциация (фиксирует структурные отношения — связи между экземплярами классов);
    • зависимость (отображает влияние одного класса на другой класс);
    • обобщение-специализация («is а»-отношение);
    • целое-часть («part of»-отношение).

    Для покрытия основных отношений большинство объектно-ориентированных языков программирования поддерживает следующие отношения:

    1. 1) ассоциация;
    2. 2) наследование;
    3. 3) агрегация;
    4. 4) зависимость;
    5. 5) конкретизация;
    6. 6) метакласс;
    7. 7) реализация. 

    Наследование

    Наследование — концепция объектно-ориентированного программирования, согласно которой абстрактный тип данных может наследовать данные и функциональность некоторого существующего типа, способствуя повторному использованию компонентов программного обеспечения.

    Наследование — наиболее популярная разновидность отношения обобщение-специализация. Альтернативой наследованию считается делегирование. При делегировании объекты делегируют свое поведение родственным объектам. При этом классы становятся не нужны

    Зависимость

    Зависимость возникает тогда, когда реализация класса одного объекта зависит от спецификации операций класса другого объекта. И если изменится спецификация операций этого класса, нам неминуемо придется вносить изменения и в зависимый класс. 

    Ассоциация

    Ассоциация - связь между объектами, по которой можно между ними перемещаться. Ассоциация может иметь имя, показывающее природу отношений между объектами, при этом в имени может указываться направление чтения связи при помощи треугольного маркера. 

    Агрегация

    В объектно-ориентированном программировании под агрегированием (или как его еще называли ранее - делегированием) подразумевают методику создания нового класса из уже существующих классов путём их включения. Об агрегировании также часто говорят как об «отношении принадлежности» по принципу «у машины есть корпус, колёса и двигатель».

    Агрегация обозначает отношения объектов в иерархии «целое/часть». Агрегация обеспечивает возможность перемещения от целого (агрегата) к его частям (свойствам).

    Агрегация (агрегирование по ссылке) — отношение «часть-целое» между двумя равноправными объектами, когда один объект (контейнер) имеет ссылку на другой объект. Оба объекта могут существовать независимо: если контейнер будет уничтожен, то его содержимое — нет. Вложенные объекты нового класса обычно объявляются закрытыми, что делает их недоступными для прикладных программистов, работающих с классом. С другой стороны, создатель класса может изменять эти объекты, не нарушая при этом работы существующего клиентского кода. Кроме того, замена вложенных объектов на стадии выполнения программы позволяет динамически изменять её поведение. Механизм наследования такой гибкостью не обладает, поскольку для производных классов устанавливаются ограничения, проверяемые на стадии компиляции. На базе агрегирования реализуется методика делегирования, когда поставленная перед внешним объектом задача перепоручается внутреннему объекту, специализирующемуся на решении задач такого рода.

    Агрегация есть во всех языках, использующих структуры или записи, состоящие из разнотипных данных. Но в объектно-ориентированном программировании она обретает новую мощь: агрегация позволяет физически сгруппировать логически связанные структуры, а наследование с легкостью копирует эти общие группы в различные абстракции.

    Агрегация не является понятием, уникальным для объектно-ориентированных систем. Например, любой язык программирования, разрешающий структуры типа «запись», поддерживает агрегацию. И все же агрегация особенно полезна в сочетании с наследованием:

    1) агрегация обеспечивает физическую группировку логически связанной структуры; 2) наследование позволяет легко и многократно использовать эти общие группы в других абстракциях.

    Композиция

    Композиция (composition) - сильная форма агрегации, при которой время жизни частей и целого совпадают. Части не существуют отдельно и при удалении композита должны быть уничтожены.

    • Агрегация: профессора - факультеты, профессора остаются жить после разрушения факультета
    • Композиция: университет - факультеты, факультеты без университета погибают.

    1. Технологии разработки программного обеспечения: Учебник/ С. Орлов. — СПб.: Питер, 2002. — 464 с.
    2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ / Гради Буч; Пер. с англ. под ред. И. Романовского и Ф. Андреева. - 2-е изд. - Москва : Binom ; СПб. : Нев. диалект, 1998. - 558 с. 
    3. Диаграмма классов: крупным планом / НОУ Интуит. - Текст : электронный // Введение в UML : электронный курс. - URL: https://intuit.ru/studies/courses/1007/229/lecture/5956?page=3 (дата обращения 29.05.2022)

    28.05.2022, 1525 просмотров.


    Уважаемые посетители! С болью в сердце сообщаем вам, что этот сайт собирает метаданные пользователя (cookie, данные об IP-адресе и местоположении), что жизненно необходимо для функционирования сайта и поддержания его жизнедеятельности.

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

    Dear visitors! It is a pain in our heart to inform you that this site collects user metadata (cookies, IP address and location data), which is vital for the operation of the site and the maintenance of its life.

    If you do not want to provide this data for processing under any pretext, please leave the site immediately and we will not tell anyone that you were here. With the same care, the site administration.