Какое общее название для наследования, состав, агрегация, делегирование? - PullRequest
5 голосов
/ 26 мая 2010

После того, как программа разделена на небольшой объект, эти объекты должны быть связаны друг с другом. Где разные виды связи. Наследование, состав, агрегация, делегирование. Эти типы имеют много видов и шаблонов, таких как слабая связь, жесткая связь, инверсия управления, делегирование через интерфейсы и т. Д. Какое правильное общее название для упомянутых типов соединений? Я могу предположить, что все они называются «сцепление», но я не могу найти хорошую классификацию в Google, так что, возможно, я пытаюсь использовать неправильный термин? Может быть, кто-нибудь знает надежную классификацию, которую я могу использовать для терминологии?

Ответы [ 6 ]

15 голосов
/ 01 июня 2010

Это обычно называется "отношения".

Глоссарий Java и связанных с ним терминов

Взято из Объектно-ориентированное программирование с Java: Введение Дэвид Дж. Барнс :

имеет-* отношение

См. Агрегацию.

is-a отношения

См. Наследство.

класс наследования

Когда суперкласс расширяется подклассом, между ними существует наследование класса .

агрегации * * 1 039 A отношение , в котором объект содержит один или несколько других подчиненных объектов как часть своего состояния. делегация

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

10 голосов
/ 26 мая 2010

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

5 голосов
/ 05 июня 2010

Наследование - это связь между двумя типами, которая подразумевает механизм повторного использования поведения

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

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

делегирование - поведенческие отношения, в которых набор поведений обеспечивается объектом, отличным от основного получателя сообщения.

Какое правильное общее имя для упомянутых типов соединений?

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

Могу предположить, что все они называются «сцеплением»

Каждый из них (в терминологии UML) создает зависимость «использует» от пакета, содержащего клиента, до пакета, содержащего поставщика. При создании графиков зависимостей между модулями в системе я считаю полезным разделять простые зависимости и виды использования классификатора (например, тип операции, параметр или свойство); для правильного функционирования вам необходимо импортировать классификаторы, используемые элементами, от которых вы зависите, но вам не нужны транзитивные зависимости или зависимости классификаторов.

2 голосов
/ 05 июня 2010

Простой ответ - это отношения между объектами в объектно-ориентированном программировании.

1 голос
/ 08 июня 2010

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

Из спецификации UML v2.3 (http://www.omg.org/spec/UML/2.3/Infrastructure/PDF/):

An ассоциация описывает набор кортежей, значения которых относятся к типизированным экземплярам.Экземпляр ассоциации называется ссылкой.

Другими словами, если я правильно читаю, ассоциация специально связывает экземпляры классов друг с другом.Агрегация и состав являются видами ассоциаций.Однако в формальном языке UML обобщение (наследование) и делегирование не являются.

Как выясняется, в UML также существует концепция отношения .Опять же, из спецификации:

Отношения - это абстрактное понятие, которое определяет какую-то связь между элементами.

Я бы сказал, что это достаточно широкочтобы охватить все ваши четыре термина.

Тем не менее, UML не обязательно является единственным арбитром в определении этих терминов.UML развился из нескольких ОО-методологий, в которых термины «ассоциация» и «отношения» использовались практически взаимозаменяемо.С точки зрения общепринятой практики, я не думаю, что вы будете вводить пользователей в заблуждение, используя одно или другое.

1 голос
/ 07 июня 2010

Шаблоны предприятий Должны предоставить довольно много справочного материала и идентифицировать часто используемые имена в отрасли.

...