Zależności pomiędzy klasami i ich realizacja w kodzie

0

Witam, mam pewien problem odnośnie relacji jakie mamy pomiędzy klasami, czyli asocjacja, agregacja, itd. W teorii w miarę to rozumiem, większej filozofii z tym nie ma. Problem pojawia się w praktyce, tzn. kiedy jakiego związku należy użyć oraz co nurtuje mnie jeszcze bardziej jak wygląda realizacja tego w kodzie programu. Czy mógłby ktoś na jakimś konkretnych przykładach (dobrze by było z jakimś krótkim kodem) wyjaśnić co z czym się je?

0

Wez sobie dowolne narzedzie do modelowania UML, utworz diagram klas i wybierz opcje wygenerowania kodu dla diagramu to bedziesz widzial.

0

Skoro tak to w drugą stronę, po napisaniu jakiegoś kodu i wygenerowaniu diagramu też będę to mieć. Ale okazuje się, że diagram przedstawiony przez Visual Studio jakoś tego nie wyjaśnia. Chcę mieć po prostu krótkie wyjasnienie w paru linijkach. Np. jak mam klasę A z polami X, Y oraz klasę B, która dziedziczy po A i ma jeszcze pole Z to wygląda to tak:

class A
{
  protected int X; 
  protected int Y;

  public A(int X, int Y)
  {
     this.X=X;
     this.Y=Y;
  }
}

class B:A
{
   private int Z;
   
   public B(int X, int Y, int Z):base(X,Y)
   {
      this.Z=Z;
   }
}

Do tego oczywiście dochodzą właściwości i metody, ale chodzi mi o sam fakt przedstawienia mechanizmu dziedziczenia w tym wypadku. Jak wygląda taki przykład dla zależności, asocjacji, agregacji i kompozycji?

Czy taka linijka kodu w klasie B:

private List<A> punkty = new List<A>(); 

świadczyłaby o agregacji? Jak powinien wtedy wyglądać poprawnie napisany konstruktor?

0
MalinowaMamba napisał(a):

Jak powinien wtedy wyglądać poprawnie napisany konstruktor?

To zależy od tego, co ten konstruktor ma robić.

Asocjacja to pole innego typu w klasie.
Agregacja i kompozycja to kolekcje danego typu w klasie.

0

Ok, ale jak np. dostaniesz pytanie na lekcji czy tam na zajęciach: Proszę zrobić dwie klasy, wymyślić jakieś pola do nich i przedstawić przykład kodu pokazujący że związek pomiędzy klasami jest np. asocjacją czy tam agregacją, itp. to co w takiej sytuacji napisać? Jak pokazać na kodzie tą różnicę?

0

No asocjacja to jeden obiekt, agregacja to kolekcja, różnica chyba zasadnicza nawet dla nauczyciela czy wykładowcy...

0

Jak opowiadasz o swoim programie i klasach w nim zawartych, to jeśli korzystasz z przymiotnika "jest" (Kwadrat jest figurą) to jest dziedziczenie.
Jeśli korzystasz z "ma" (Kwadrat ma 4 wierzchołki) to jest to kompozycja.

Chyba, że źle opowiadasz to może tak nie być ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1