![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 22:08 |