matematykaszkolna.pl
programowanie c++ m: Czy mógłbym prosić o jakiś przykład i wytłumaczenie asocjacji ze wskaźnikami innej klasy class CFoo {/* jakiś kod */ }; class CBar { private: CFoo* mpFoo; public: void UstawRelacje(CFoo* pFoo) { mpFoo=pFoo;} }; Na przykład na tym programie, jak mogę wykorzystać ten wskaźnik mpFoo
18 sie 13:25
Dziadek Mróz: #include <iostream> #include <string> class Aktor { public: std::string ImieNazw; Aktor(std::string imieNazw) : ImieNazw(imieNazw) {} }; class Film { public: std::string Tytul; Aktor *GlownaRola; Film(std::string tytul, Aktor *glownaRola) : Tytul(tytul) { GlownaRola = glownaRola; std::cout << Tytul << "\nW glownej roli wystepuje " << GlownaRola−>ImieNazw << std::endl; } }; int main() { Aktor *aktor1 = new Aktor("Cezary Pazura"); Film *film1 = new Film("Kiler", aktor1); return 0; } http://ideone.com/JQjaa2
18 sie 16:10
m: dzięki bardzo Ale mam jeszcze pytanie, jaka jest tak właściwie różnie pomiędzy tym a agregacją, bo tej różnicy właśnie też trochę nie łapie
18 sie 20:28
Dziadek Mróz: http://ideone.com/O4HuTk Asocjacja, istnieje jakiekolwiek powiązanie klas: class Aktor { public: std::string ImieNazw; }; class Film { public: std::string Tytul; Aktor *GlownaRola; }; Agregacja, Asocjacja z tym, że obiekty są rozłączne: Film(std::string tytul, Aktor *glownaRola) : Tytul(tytul) { GlownaRola = glownaRola; std::cout << Tytul << "\nW glownej roli wystepuje " << GlownaRola−>ImieNazw << std::endl; } obiekt glownaRola istnieje poza klasą Film Kompozycja, Asocjacja z tym, że obiekt posiada inny obiekt: Film(std::string tytul) : Tytul(tytul) { GlownaRola = new Aktor(); std::cout << Tytul << "\nW glownej roli wystepuje " << GlownaRola−>ImieNazw << std::endl; } obiekt glownaRola istnieje wewnątrz klasy Film
19 sie 07:21
m: dziękuję bardzo
20 sie 00:51
p: Przeczytalem gdzies, że agregacja to zawieranie, to jak się zawiera jak istnieje poza klasą ?
20 sie 01:02
p: Wszystko już jasne, zrozumiałem. Fajne przykłady
20 sie 01:08