Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/OOP]interfejsy,abstrakcja i metody statyczne
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Witam wiem ze jest to drugi watek z rzedu ale na poprzedni nikt nie udzieli mi odpowiedzi wiec chce zapytac jeszcze raz ale dokladniej:

Nie rozumiem 3 rzeczy w 100%:
-Metody statyczne
-Klasy i metody abstrakcyjne
-interfejsy

Hmm skoro OOP to OOP i powinno sie pracowac na obiektach to po co sa "statyczne" w ktorych nie tworzy sie obiektu a operuje jak na zwyklych zmiennych czy ktos moze mi wytlumaczyc jej zastosowania?

I teraz klasy abstrakcyjne i implementowanie interfejsow wiem ze klasy abstrakcyjne i interfejsy to klasy ktore rozszerzaja inne klasy(jesli klasa pochodna po niej dziedziczy) czytalem tez ze klasy abstrakcyjne uzywa sie do malych projektow a interfejsy do duzycy jednak nie rozumiem jednej rzeczy: http://webcity.pl/webcity/programowanie_ob...e_w_php_5_cz__3 a dokladnie pierwszy kod z uzyciem interfejsow i jego cytat:
Cytat
Moglibyśmy stworzyć tutaj abstrakcyjną klasę bazową, ale wtedy uniemożliwilibyśmy programistom dziedziczenie z innych klas

i tego nie potrafie zrozumiec, i jeszcze jaka jest roznica miedzy klasa abstrakcyjna i interfejsem skoro obydwie "metody" maja rozszerzac inne klasy?

P.S i jeszcze jedno skoro klasy abstrakcyjne i interfejsy maja rozszerzac mozliwosci innych klas to dlaczego odrazu w takiej klasie nie mozna dac implementacji funkcji ktora ma byc potem dziedziczona/implementowana, jaki to ma sens skoro kazda klasa dziedziczaca moze miec funkcje inaczej pracujace?

Ten post edytował marcio 12.09.2008, 16:08:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





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

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


/*
Eeee, yyyy, teraz dopiero zauwazylem ze tam sa 2 kody (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Wiec, oba sa do D.

Stworzenie nie moze implementowac Kot i Pies, bo to Pies i Kot sa bardziej szczegolowe (podgatunek) niz stworzenie (prosciej: znajdz mi takie COS co jest jednoczesnie psem i kotem, i jednoczesnie potrafi szczekac i mialczec)

moglbys to zrobic np tak:
  1. <?php
  2. interface Stworzenie
  3. {
  4.    public function dajGlos();
  5. }
  6.  
  7. class Kot implements Stworzenie
  8. {
  9.    public function zamialcz()
  10.    {
  11.        return "MiauUUUUUU!!";
  12.    }
  13.    
  14.    public function dajGlos()
  15.    {
  16.        return $this->zamialcz();
  17.    }
  18. }
  19.  
  20. class Pies implements Stworzenie
  21. {
  22.    public function zaszczekaj()
  23.    {
  24.        return "WUFFFF!";
  25.    }
  26.    
  27.    public function dajGlos()
  28.    {
  29.        return $this->zaszczekaj();
  30.    }
  31. }
  32. ?>

Kot i Pies maja to wspolnego ze potrafia "dac glos", ALE kazde z nich robi to po swojemu. I to jak robi jest w ich klasie zapisane, a nie w IF-ach

Polimorfizm:

  1. <?php
  2. $stworzenie = null;
  3. $stworzenia = array( new Kot(), new Pies() );
  4.  
  5. foreach ( $stworzenia as $stworzenie )
  6. {
  7.    echo $stworzenie->dajGlos(); // dziala bo obie klasy maja te metode
  8. }
  9. ?>



To jest zaprzeczenie OOP
  1. <?php
  2. // class Stworzenie
  3. function mial($kot, $halas) {
  4.  
  5. if(is_string($kot) && $kot == 'kot') return $halas;
  6.  
  7. else return 'Ta funkcja nie obsluguje halasu takiego zwoerzecia';
  8.  
  9. }
  10. }
  11. ?>


tylko klasa Kot ma miec mial(), bo to inaczej nie ma sensu, po co Psu metoda mial(). Wykonales dziedziczenie na odwrot.



Cytat
Musze jeszcze nad tym posiedziec, znasz jakies ciekawe kursy etc

Nie, ja sie uczylem z wielu ksiazek, i po hmm, 5 latach zalapalem oop (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)


Cytat
ublic function finalizeSession( Framework_Session_Session $session )

Czego tu nie rozumiesz? Framework_Session_Session sprawdza w czasie uruchomienia czy $session jest obiektem tej klasy, dodatkowo wspomaga system podpowiadania skladni w edytorze.


Cytat
Czemu zwracasz obiekt w funkcji skoro go nie uzywasz? (chodzi o loadSession())

Eeee? Yyy? no przeciez uzywam, zobacz gdzie jest wywolywane loadSession().

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- marcio   [PHP/OOP]interfejsy,abstrakcja i metody statyczne   12.09.2008, 16:05:40
- - dr_bonzo   Jej, bylo z 5 razy, sa duze topiki na forum o abst...   12.09.2008, 16:34:51
- - marcio   CytatKlasa abstrakcyjna BEZ zaimplementowania zadn...   12.09.2008, 16:44:43
- - dr_bonzo   CytatCytatRoznica polega na tym ze dziedziczyc moz...   12.09.2008, 18:17:34
- - marcio   No ok a powiedz mi np co powinno sie dawac do klas...   12.09.2008, 18:53:17
- - Cysiaczek   Nie z całym systemem, tylko są wspólne d...   12.09.2008, 19:50:42
- - marcio   Hmmm czytam rozne tematy z tego forum czy taki prz...   12.09.2008, 22:28:53
- - dr_bonzo   RE: [PHP/OOP]interfejsy,abstrakcja i metody statyczne   13.09.2008, 12:09:34
- - marcio   Albo ja jestem tepy albo to jest takie "trudn...   13.09.2008, 16:52:34
- - dr_bonzo   /* Eeee, yyyy, teraz dopiero zauwazylem ze tam sa ...   13.09.2008, 17:24:09
- - marcio   Jesli chcialbym dodac do twojego kodu funkcje z mo...   13.09.2008, 20:20:15
- - dr_bonzo   Tak lepiej. CytatCo do 2 sposobu zamiast robic in...   13.09.2008, 20:34:30
- - marcio   @Dr_bonzo czy moglbys mi podac przyklad jakiejs kl...   15.09.2008, 17:31:27
- - Crozin   [PHP] pobierz, plaintext <?phpabstract class ro...   15.09.2008, 19:03:37
- - marcio   W sumie kazdy z kodow powyzej mozna by napisac za ...   15.09.2008, 20:02:01
- - Crozin   Zawsze początkującym mówię: napisz zestaw klas do ...   15.09.2008, 20:41:43
- - Shili   CytatW sumie kazdy z kodow powyzej mozna by napisa...   15.09.2008, 20:56:35
- - Crozin   Cytatak najbardziej. Dodałabym do tego tylko prywa...   15.09.2008, 21:22:36
- - Shili   Proponowałam prywatną ze względu na...   15.09.2008, 21:33:24
- - marcio   Ok dzieki ze mi tak tlumaczycie jestescie na medal...   15.09.2008, 21:41:55
- - Shili   To załóżmy, że robisz system domu. Na samej górze ...   15.09.2008, 21:55:57
- - marcio   Cytat(Shili @ 15.09.2008, 22:55:57 ) ...   15.09.2008, 22:02:51
- - mike   Programowanie obiektowe to sposób przedstawiania ś...   15.09.2008, 22:07:05
- - Shili   Próbowałam dać coś podobnego do wcz...   15.09.2008, 22:08:20
- - marcio   Cytatja bardziej się uczę na "błędach" n...   15.09.2008, 22:15:29
- - Crozin   Skoro nie znasz to tym lepiej - zobacz tylko w wik...   16.09.2008, 05:24:05


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: 10.10.2025 - 02:38