Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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 (IMG:http://forum.php.pl/style_emoticons/default/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
 
Start new topic
Odpowiedzi
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

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 02:59