Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Złożenia klas w php
JohnySpot
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 9.09.2003
Skąd: Włocławek

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


Dopiero niedawno zanzjaomiłem się porządnie z obiektowymi aspektami inzynierii programowania i w związku z php nasunęło mi się pewne "pytanie". Otóż. Czy można w php stosować złożenia klas?
Dziedziczenie nie zawsze jest logiczne. Na przykład, klasa kwadrat mogłaby z powodzeniem dziedziczyć po klasie prostokąt, jednak słabym pomysłem jest aby klasa prostokąt dziedziczyła po klasie punkt. Lepiej by było aby klasa prostokąt posiadała 4 składowe (zmienne) typu punkt zdefiniowane w innej klasie o nazwie punkt. Coś w stylu.

  1. <?php
  2. class punkt {
  3. /* ... */
  4. }
  5.  
  6. class prostakat {
  7.  a = new punkt;
  8.  b = new punkt;
  9.  c = new punkt;
  10.  d = new punkt;
  11. }
  12.  
  13. class kwadrat extends prostakat {
  14.  /* ... */
  15. }
  16. ?>


jak uzyskać takie coś w php ?

Ten post edytował JohnySpot 25.06.2006, 16:53:11


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
NuLL
post
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Zapisu jak w prostokacie nie da sie uzyskac chyba ze stworzysz sobie te punkty w konstruktorze.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Przenoszę z php Pro. na php5
Go to the top of the page
+Quote Post
Ludvik
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


  1. <?php
  2. class Point {
  3. public function __construct($x, $y) {
  4. $this->x = $x;
  5. $this->y = $y;
  6. }
  7.  
  8. public function getX() {
  9. return $this->x;
  10. }
  11.  
  12. public function getY() {
  13. return $this->y;
  14. }
  15.  
  16. protected $x;
  17. protected $y;
  18. }
  19.  
  20. class Rectangle {
  21. public function __construct(Point $topleft, Point $bottomright) {
  22. $this->topleft = $topleft;
  23. $this->bottomright = $bottomright;
  24. }
  25.  
  26. /* ... */
  27.  
  28. protected $topleft;
  29. protected $bottomright;
  30. }
  31.  
  32. class Square extends Rectangle {
  33. public function __construct(Point $topleft, $iWidth) {
  34. $this->topleft = $topleft;
  35. $this->bottomright = new Point($topleft->getX() + $iWidht, $topleft->getY() + $iWidth());
  36. }
  37. }
  38. ?>


Ten post edytował Ludvik 25.06.2006, 18:10:00


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





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

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


Cytat
Czy można w php stosować złożenia klas?

No pewnie. Patrz post Ludvika.
Co do czterech punktow: to jest nadmiarowosc danych, rypniesz sie i masz czworokat zamiast prostokata. A dwa punkty sa zupelnie wystarczajace (patrz post Ludvika).


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





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 9.09.2003
Skąd: Włocławek

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


Dobra wszystko pięknie, ale to nie jest żadne złożenie klas. Najwidoczniej poprostu się nie da qmam. Spoko. A szkoda :/ Jakoś dam rade smile.gif Dzięki !


--------------------
Go to the top of the page
+Quote Post
Ludvik
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Jak to nie jest złożenie? Prostokąt i punkty - agregacja, jeżeli mamy mówić ściśle. Kwadrat dziedziczy z prostokątu. I nie widzisz tu żadnych złożeń? Została tylko kompozycja, której na tym przykładzie nie da się pokazać.


--------------------
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: 19.08.2025 - 04:54