Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kiedy używać dziedziczenia ?
Damiankossek
post
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 8
Dołączył: 10.12.2009

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


Witam, tak jak w temacie ... Wszedłem w świat OOP jakiś czas temu, teraz robię strony na Kohanie (IMG:style_emoticons/default/smile.gif) Bardzo przypadła mi do gustu ... Możecie powiedzieć mi kiedy używać dziedziczenia ? Wiem że jest to `jakby` rozdrabnianie klas ... Lecz nigdy nie mogłem znależć praktycznego zastosowania dziedziczenia w swoich skryptach (IMG:style_emoticons/default/smile.gif) Prosiłbym kogoś o takie szybkie i łopatologiczne rozpisanie jakiegoś skryptu np. newsów, artykułów czy czego kolwiek (byle nie zwierząt (IMG:style_emoticons/default/tongue.gif) ) ... Nie mówię że ma być kod tylko jak to ma wyglądać w praktyce, w formie jakiegoś drzewka lub czego kolwiek (IMG:style_emoticons/default/smile.gif)

No i jeszcze jedno .. Jak dziedziczyć w Kohanie ? Bo widzę że moje wszystkie modele i kontrolery już dziedziczą klasy wyznaczone przez Kohane (IMG:style_emoticons/default/smile.gif) _Models i _Controllers ... Da się jeszcze podpiąć coś czy nie bardzo (IMG:style_emoticons/default/smile.gif) ?

Przepraszam jeżeli są to jakieś durne pytania, ale niepotrafie zastosować tego w praktyce (IMG:style_emoticons/default/smile.gif)

Pozdrawiam

Ten post edytował Damiankossek 24.03.2010, 14:50:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Powiem w miarę prosto słowami. Dziedziczenie jest używane tam, gdzie klasa która ma powstać jest bardzo podobna do już istniejącej i wykorzystuje rozwiązania, które ona implementuje. Najczęściej używa sie go gdy owa nowa klasa rozszerza możliwości klasy starszej. Wyobraź sobie sytuację, że każde dziecko jest idealną kopią swoich rodziców i dziedziczy po nich wszystko (w php nie jest to możliwe, gdyż nie można dziedziczyć po więcej niż 1 klasie, ale to "szczegół" (IMG:style_emoticons/default/winksmiley.jpg) , przyjmij że php pozwala Ci wybrać tylko jednego rodzica do tego celu (IMG:style_emoticons/default/tongue.gif) ). Ma więc wszystkie cechy zarówno swojej matki, jak i swojego ojca (w php wszystko albo ojca, albo matki, zależnie po kim dziedziczysz), wszystkie ich zdolności + jeszcze dodaje swoje własne. Na starcie więc nie musi się niemal niczego uczyć, gdyż posiada pełną wiedzę i umiejętności obojga (jednego z) rodziców. Wszystko co jest nowe, poszerza jego umiejętności. Podobnie się ma rzecz z programowaniem. Dziedziczenie określa pewne umiejętności podstawowe, które nowa klasa "przejmuje" po rodzicu. Co ciekawe, to może dziecko owe stare metody "poprawić". Wystarczy, że funkcje owe zostaną w nowej klasie napisane na nowo. A by było jeszcze ciekawiej, dziecko może wybrać czy chce korzystać w takim wypadku z własnej metody, czy odziedziczonej po rodzicu (IMG:style_emoticons/default/smile.gif)

Nie myl dziedziczenia z implementacją. Dziedziczenie to bowiem "skopiowanie żywcem" od rodzica funkcji, metod. Implementacja określa tylko, że pewne rzeczy muszą się znaleźć w nowej klasie, ale nie mówi jak i co. To od Ciebie zależy co z tym zrobisz. Dlatego właśnie nawet nazewnictwo dziedziczenia łatwo pamiętać... jest to bowiem extends, a to po angielsku znaczy "rozszerz". To zaś w dużej mierze główne zastosowanie dziedziczenia: poszerzanie możliwości już istniejących klas bez konieczności kopiowania całego kodu na zasadzie, weź wszystko od mojego rodzica (IMG:style_emoticons/default/smile.gif)
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: 13.10.2025 - 22:08