Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: inicjaliowanie klasy B obiektem klasy A czy ... ?
Forum PHP.pl > Forum > PHP > Object-oriented programming
jakub_klamca
Witam,
wlasnie nastal radosny czas w ktorym zostalem zmuszony do zaglebienia sie w OOP, jak dotadnatknalem sie na taki problem :

Klasa A inicjalizowana 3 zmiennymi typu get. ( new A(get1, get2, get3); ) posiada:
- wlasciwosci - (ustawiane w konstruktorze, czasem zmieniane przez ktoras z metod)
- metody

Klasa B posiada :
- wlasciwosci - czesc jest wyznaczana na podstawie wlasciwosci klasy A w konstruktorze
- wlasne metody
- byc moze dziedziczenie metod kasy A (o tym dalej).


Ktore z tych rozwiazan bylo by bardziej poprawne : dziedziczenie (B extends A), ale ... klasa A jest inicjalizowana zmiennymi get (i na ich podstawie ustawiane sa wartosci "jej" wlasciwosci) , czy mam w takim razie zainicjalizowac klase B tymi zmiennymi, a w jej ktonstruktorze jeszcze raz zainicjalizowac klase A (po to zeby "jej" wlasciwosci mialy odpowiednie wartosci ), czy inicjalizowac klase B (w dlaszym ciagu B extends A, w celu uzyskania dostepu do metod klasy A wewnatrz B ) obiektem klasy A i dodatkowo w klasie A utworzyc nowa metode(wywolywana z konstruktora cool.gif, ktora na podstawie otrzymanego obiektu ustawi odpowiedni wartosci wlasciwosci ?

Byc moze zapedzilem sie w sklepy zaulek, a rozwiazanie jest znacznie prostsze i eleganckie, ale to dopiero moje pierwsze dni z OOP

--------------- edit

wszystkie instrukcje z metody inicjalizujacej klase A, mogly by sie znalezc w konstruktorze klasy B (przyslonienie) , ale wygodniej jest mi je trzymac poki co w klasie A, bo ta w zaleznosci od sytuacji bedzie inicjalizowana w jeszcze inny sposob.
marcini82
Nie bardzo wiem, co to za klasy i co chcialbys osoagnac, ale moze w konstruktorze klasy B wykorzystaj tresc konstruktora klasy A i dodaj cos jeszcze:
  1. <?php
  2. class A
  3. {
  4. function __construct()
  5. {
  6. // inicjalizacja klasy A
  7. }
  8. }
  9.  
  10. class B extends A
  11. {
  12. function __construct()
  13. {
  14. parent::__construct(); // ustawiamy te wlasciwosci co podczas inicjalizacji A
  15. // plus nizej jeszcze cos dodatkowgo, charakterystycznego dla klasy B
  16. }
  17. }
  18. ?>
dr_bonzo
Za malo opisales klasy i obiekty jakie maja one reprezentaowac.
Bo i dziedziczenie i delegacja moga byc wlasciwym rozwiazaniem.

Jesli B nie jest A to nie mozesz dziedziczyc. Po prostu opisz jakie obiekty modelujesz itd.
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.