Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP] Kompozycja [rozwiazane]
Forum PHP.pl > Forum > PHP
dawid_c
Witam,

Jestem raczej początkujący jeśli chodzi o OOP i właśnie buduję swój pierwszy projekt z wykorzystaniem obiektów.
Mam takie pytanie. Jak zastosować kompozycję (związek typu 'ma') w PHP?

Pozdrawiam,
Dawid C
blooregard
  1. class A {
  2. ...
  3. }
  4.  
  5. class B {
  6. ...
  7. }
  8.  
  9. class C {
  10. private $a;
  11. private $b;
  12.  
  13. public function __construct(A $a, B $b) {
  14. $this->a = $a;
  15. $this->b = $b;
  16.  
  17. ...
  18. }
  19.  
  20.  
  21. $a = new A();
  22. $b = new B();
  23.  
  24. $c = new C($a,$b);
  25.  
  26.  


O to chodziło?
dawid_c
Chyba nie...

Kompozycja to związku typu: "samochód ma silnik", "komputer ma procesor".
Chyba, że je coś źle rozumiem...
phpion
Cytat(dawid_c @ 22.01.2010, 15:28:13 ) *
"samochód ma silnik", "komputer ma procesor".

No i tak dokładnie jest w przykładzie ~blooregard'a. W nim obiekt klasy C (przykładowo samochód) posiada obiekt klasy A (np. silnik) oraz obiekt klasy B (np. kierownicę).
dawid_c
Dzięki za rozjaśnienie.

Zwątpiłem, ponieważ założyłem, że kompozycję będzie budować się analogicznie jak dziedziczenie (słowo kluczowe extends).

Jadnak jak zwykle - najprostsze rozwiązanie nigdy nie chce przyjść jak jest potrzebne smile.gif
blooregard
Cytat
Zwątpiłem, ponieważ założyłem, że kompozycję będzie budować się analogicznie jak dziedziczenie (słowo kluczowe extends).

No nie, bo dziedziczenie to relacja A jest rodzajem B, czyli, nawiązując do przykładu z samochodami:

klasa A6 jest rodzajem klasy Audi, która jest rodzajem klasy Samochód - dziedziczenie
klasa A6 zawiera klasę 'Quattro' oraz zawiera klasę '4.2 V8 FSI' oraz zawiera klasę 'S-Line' - kompozycja

biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.