Разница между ассоциацией, агрегацией, составом и зависимостью
Я проходил через различия между Ассоциацией, Зависимостью, Агрегацией и Композицией на разных сайтах, но я запутался. В нескольких местах они смешивают друг друга. Не могли бы вы, пожалуйста, сообщить мне, какова связь между классами, упомянутыми в примере ниже. Как я вижу, некоторые классы, такие как 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 (внутри А) тоже умрет, так что, похоже, это Композиция
и так далее, подумайте о причине связи и о том, как эти классы взаимодействуют друг с другом, у некоторых классов есть объект из другого класса без инициализации, у некоторых классов есть объект, который должен его инициализировать перед использованием, другие классы не инициализируют объект но назначьте это методом:)
Я не буду решать вашу домашнюю работу;) просто дать вам способ думать.