В чем разница между агрегацией, составом и зависимостью?
В чем разница между агрегацией, составом и зависимостью?
Ответ 1
Агрегация подразумевает связь, в которой ребенок может существовать независимо от родителя. Пример: класс (родительский) и ученик (дочерний элемент). Удалить класс и студенты все еще существуют.
Состав подразумевает связь, в которой ребенок не может существовать независимо от родителя. Пример: Дом (родитель) и Комната (ребенок). Номера не существуют отдельно от Дома.
Вышеуказанные два являются формами сдерживания (следовательно, отношения родитель-потомок).
Зависимость - более слабая форма отношения, а в кодовых терминах указывает, что класс использует другой параметр или тип возвращаемого значения.
Зависимость - это форма ассоциации.
Ответ 2
Агрегация и состав почти полностью идентичны, за исключением того, что состав используется, когда жизнь ребенка полностью контролируется родителем.
Агрегация
Car -> Tires
Tires
можно снять с объекта Car
и установить на другом. Кроме того, если автомобиль будет подсчитан, шины не обязательно должны быть уничтожены.
Состав
Body -> Blood Cell
Когда объект Body
уничтожается, BloodCells
уничтожается вместе с ним.
Зависимость
Связь между двумя объектами, где изменение одного может повлиять на другое.
Ответ 3
Агрегация - отделяемая часть к целому. Часть имеет свою личность, отдельно от той, в которой она является частью. Вы можете выбрать эту часть и перенести ее на другой объект. (примеры реального мира: колесо → автомобиль, кровь → тело)
Состав - неотделимая часть целого. Вы не можете переместить часть на другой объект. больше похоже на собственность. (примеры реального мира: кривая → дорога, личность → человек, max_speed → автомобиль, свойство объекта → объект)
Обратите внимание, что отношение, являющееся совокупностью в одном проекте, может быть композицией в другой. Его все о том, как отношение должно использоваться в этом конкретном проекте.
зависимость - чувствительна к изменениям. (количество дождя → погода, головное положение → расположение тела)
Примечание: "Bloodcell" → Blood "может быть" композицией ", поскольку клетки крови не могут существовать без лица, называемого кровью." Кровь "- > Тело" может быть "Агрегацией", поскольку Кровь может существовать без тела, называемой Телом.
Ответ 4
Объект, связанный с отношением состав, не будет существовать вне содержащего объекта. Примерами являются Назначение и владелец (Лицо) или Календарь; TestResult и пациента.
С другой стороны, объект, который агрегирован для содержащего объекта, может существовать вне этого содержащего объекта. Примерами являются дверь и дом; Сотрудник и отдел.
A зависимость относится к совместной работе или делегированию, когда объект запрашивает службы у другого объекта и зависит от этого объекта. Как клиент службы, вы хотите, чтобы интерфейс службы оставался постоянным, даже если предлагаются будущие услуги.
Ответ 5
Агрегация и состав - это термины, которые большинство людей в мире ОО приобрели через UML. И UML делает очень плохую работу по определению этих терминов, как это было продемонстрировано, например, Henderson-Sellers and Barbier ( "Что такое эта называемая агрегация?", "Формализация отношений цельной части на унифицированном языке моделирования" "). Я не думаю, что может быть дано согласованное определение агрегации и композиции, если вы заинтересованы в совместимости с UML. Я предлагаю вам посмотреть приведенные работы.
Что касается зависимости, то очень абстрактная связь между типами (а не объектами), что может означать почти все.
Ответ 6
Containment: - Чтобы получить доступ к внутреннему объекту, мы должны использовать внешний объект. Мы можем повторно использовать содержащийся объект. Агрегация: здесь мы можем снова и снова обращаться к внутреннему объекту без использования внешнего объекта.
Ответ 7
Один объект может содержать другой как часть его атрибута.
- содержит предложения, содержащие слова.
- Компьютерная система имеет жесткий диск, RAM, процессор и т.д.
Таким образом, сдерживание не должно быть физическим. например, компьютерная система имеет гарантию.