Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> inicjaliowanie klasy B obiektem klasy A czy ... ?
jakub_klamca
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 24.07.2006

Ostrzeżenie: (0%)
-----


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.

Ten post edytował jakub_klamca 9.02.2007, 14:10:35
Go to the top of the page
+Quote Post
marcini82
post
Post #2





Grupa: Zarejestrowani
Postów: 190
Pomógł: 1
Dołączył: 20.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


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.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 19:55