agregacja klas

  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Mam problem z agregacją klas. Na diagramie uml mam, że klasa A to klasa główna i z niej wychodzi strzałka z rombem (czyli agregacja) to klasy B i klasy C. Czyli w klasie A robię deklarację klasy B i C. Jednak na diagramie mam jeszcze strzałkę od klasy B do klasy C. Czy jeśli zrobię deklarację w ten sposób to będzie dobrze/sensownie/logicznie? :

Kopiuj
class A {
public:
	class B {
	public:
		class C;
	};
};
YU
  • Rejestracja: dni
  • Ostatnio: dni
0

Jest to poprawne w sensie kompilacji kodu (chociaż lepiej po ludzku bez zagnieżdżania klas), jednak niepoprawne ze względu rodzaj relacji. Kod prezentuje kompozycje a nie agragacje.
Agregacje wyraża się przez jakiś rodzaj wskaźnika lub referencji. Tutaj dokładne wyjaśnienie z przykładami:
http://xiaochongzhang.me/blog/?p=323

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
1

FYI:

Kopiuj
class A {
public:
    class B {
    public:
        class C;
    };
};

w C++ znaczy prawie, że tyle samo co:

Kopiuj
namespace A {
namespace B {
   class C;
}
}

generalnie chodzi o to, że w diagramach UML prawie nigdy nie spotkasz się z określeniem gdzie znajduje się definicja klasy, tylko raczej z czego ona się składa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.