Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasy i metody abstrakcyjne i finalne, Do czego wykorzystać je w praktyce?
1010
post
Post #1





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


Witam, poznałem właśnie jak działają klasy i metody abstrakcyjne i finalne, ale zupełnie nie wiem do czego można by je wykorzystać w praktyce. Czy ktoś mógłby mi przedstawić jakiś prosty przykład, wraz z wytłumaczeniem "z czym to się je"?

Z góry dziękuje za pomoc...


PS. Moje początki w obiektówce są dosyć trudne.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


ponieważ w interfejsie tylko deklarujesz jakie metody ma zawierać klasa go implementująca, jeśli zrobisz klasę nadrzędną może już mieć ciało. Użyjmy przykładu:

  1. <?php
  2. class figura{
  3. private $pole;
  4. public function pobierzPole(){
  5. return $this->pole;
  6. }
  7. public abstract function obliczPole(){}
  8. }
  9.  
  10. class kwadrat extends figura{
  11. private $dlugosc_boku;
  12. function __construct($bok){
  13. $this->dlugosc_boku = $bok;
  14. }
  15. public function obliczPole(){
  16. $pole = pow($this->dlugosc_boku,2);
  17. }
  18. }
  19.  
  20. class trojkatRownoramienny extends figura{
  21. private $dlugosc_podstawy;
  22. private $wysokosc;
  23. function __construct($podst, $wys){
  24. $this->dlugosc_podstawy = $podst;
  25. $this->wysokosc = $wys;
  26. }
  27. public function obliczPole(){
  28. $pole = $this->dlugosc_podstawy * $this->wysokosc / 2;
  29. }
  30. }
  31.  
  32. $kw = new kwadrat(2);
  33. $kw->obliczPole();
  34. echo $kw->pobierzPole();
  35.  
  36. $tr = new trojkatRownoramienny(4,4);
  37. $tr->obliczPole();
  38. echo $tr->pobierzPole();
  39. ?>


teraz pomysl ze chcesz zrobic tak, aby przy kazdym wyswietleniu pola zostalo wyswietlone "huura pole to: ", normalnie musialbyś zmieniać wszystkie klasy pochodne, a tak robisz to w jednym miejscu:

  1. <?php
  2. class figura{
  3. private $pole;
  4. public function pobierzPole(){
  5. return "Huura, pole to: ".$this->pole;
  6. }
  7. public abstract function obliczPole(){}
  8. }
  9. ?>


jeśli chodzi o interfejsy to jedyne co mają zastosowanie to określenie jakie metody muszą w sobie klasy pochodne mieć, czyli w tym przypadku:
  1. <?php
  2. interface figura{
  3. abstract function pobierzPole();
  4. abstract function obliczPole();
  5. }
  6. ?>


i tak resztę trza by było robić w klasach, które korzystają z interface
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: 11.10.2025 - 19:03