Разница между ассоциацией, агрегацией, составом и зависимостью

Я проходил через различия между Ассоциацией, Зависимостью, Агрегацией и Композицией на разных сайтах, но я запутался. В нескольких местах они смешивают друг друга. Не могли бы вы, пожалуйста, сообщить мне, какова связь между классами, упомянутыми в примере ниже. Как я вижу, некоторые классы, такие как A & B, имеют более чем одну зависимость, как зависимость, так и композицию. В том случае, который нужно учитывать.

Пример:

class DataEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
}


class A
{
    C c;
    DataEntity DE = new DataEntity { Id = 1, Name = "sample" };
    void method1()
    {
        B b = new B();
        c = new C();
        b.method2(DE);
        int ret = c.method2(DE);
    }
}


class B
{
    public void method2(DataEntity de)
    {
        de.Name = "samplechange";
    }
}


class C
{
    DataEntity de1;
    public int method2(DataEntity de)
    {
        de1 = de;
        return 0;
    }
}

Какова связь между следующими классами:

A & D
A & B
A & C
B & D
C & D

1 ответ

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

  • Как я знаю, мы рассматриваем (агрегацию и состав) как часть отношений Ассоциации:

Ассоциация обозначает, как классы общаются друг с другом

Примечание: ассоциация может быть двойной.

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

  • 0..0
  • 0..1
  • 0.. *
  • 1..1
  • 1.. *
  • *

Ассоциации также могут быть самими объектами, называемыми классами связей или классами ассоциаций.

Теперь давайте перейдем к разнице между агрегацией и композицией

  • Агрегация определяет отношение всей части между агрегатом и составной частью, где часть может существовать независимо от агрегата.
  • Композиция указывает на сильную собственность и совпадающее время жизни частей в целом (т. Е. Они живут и умирают в целом). Композиции обозначены украшением с бриллиантами на ассоциации.
    Зависимость указывает на семантические отношения между двумя или более элементами. Если у меня есть два класса A и B: если существует объект класса B, существует только в методе класса A, мы назовем его зависимостью от A до B.
  • Согласно тому, что я сказал, давайте поговорим об отношениях между A & B:

Мы замечаем, что все методы в A имеют объект класса B, и если я создам объект из A, я не буду создавать объект класса B, верно?

Я создам объект из класса B, только если я вызову метод в A

так что это не отношения композиции, как я вижу, это ближе к зависимости


  • Отношение между A & D:

если я создам Объект из А, я создам объект класса D, и если Объект из А умрет, Объект из D (внутри А) тоже умрет, так что, похоже, это Композиция


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

Я не буду решать вашу домашнюю работу;) просто дать вам способ думать.

Другие вопросы по тегам