![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 10.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam prośbę. Czy ktoś mógłby przekonać mnie do programowania obiektowego? OK, jak muszę, to programuję obiektowo, ale strasznie tego nie lubię.
Tak naprawdę, nie znalazłam ani jednego argumentu przemawiającego za tym, że programowanie obiektowe jest LEPSZE. Dlaczego obiektówka jest lepsza? Wciąż napotykam na opinie, że kod jest prostszy (dla człowieka), że bardziej elastyczny, że uporządkowany. Problem w tym, że ja tego nie widzę. Dlaczego jest prostszy? Jeśli mam plik z funkcjami, to sobie po prostu znajduję funkcję i edytuję. Nie muszę się grzebać w tych wszystkich klasach, szukać, skąd i co dziedziczy i co jest do czego. Co w tym elastycznego? Gdzie tu porządek? Dziedziczenie? OK, to jest jakiś plus, ale raczej pod kątem ilości kodu, ale nie jego zrozumienia. Jestem ze starej szkoły. Jak pewnie wielu z Was, moje początki były związane z językiem Quick Basic, Pascal, itp... Może, gdybym zaczynała od razu od podejścia obiektowego, łatwiej byłoby mi to zrozumieć. Pomoże ktoś? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat tym bardziej jakąkolwiek hierarchię, no, zarówno Sprzataczka jak i Dyrektor "dziedziczą" z Pracownika. To znaczy: 1. tworzymy tablicę $Pracownik 2. a potem kopiujemy tę tablicę $Dyrektor = $Pracownik, i mamy dziedziczenie prototypowe (powszechnie stosowane w JavaScripcie, w PHP oczywiście inaczej się to robi zwykle, bo są klasy - tym niemniej, też się tak da pod kątem czysto technicznym - tak samo jak w JavaScript da się technicznie emulować klasy). 3. zarówno Dyrektor jak i Sprzataczka dziedzicza właściwości po Pracowniku, więc mają defaultowo 3500zł pensji i defaultową "metodę" pracuj. 4. dlatego ustalamy indywidualną pensję: $Dyrektor['wyplata'] = 10000; oraz własną metodę pracuj $Dyrektor['pracuj'] = function($this) { echo "nic nie robie, bo jestem dyrektorem, zarabiam $this[wyplata]zl<br>"; }; DISCLAIMER: cały kod to oczywiście tylko "proof of concept" (który stał się możliwy dzięki wprowadzeniu funkcji anonimowych do PHP). Cytat Nie wiem gdzie tu widzisz polimorfizm jest przecież metoda o tej samej nazwie "pracuj", natomiast co innego robi, $sprzataczka inaczej pracuje, inaczej pracuje $dyrektor. Cytat Jak spróbujesz dowiedzieć się ile zarabia ktoś, kogo w tablicy nie ma, np. kierowca, otrzymasz błąd pehapa nikogo nie ma w tablicy, bo nie na tym to polega. Nie zrobiłem żadnej tablicy z pracownikami, jeśli tak ci się wydaje, to niezbyt uważnie przeczytałeś ten kod. Tablice asocjacyjne są tutaj zamiennikami klas i obiektów. zamiast $pracownik->pensja, mamy $pracownik['pensja'] zamiast $pracownik->pracuj();, mamy $pracownik['pracuj']($this); Ten post edytował PrinceOfPersia 3.07.2013, 13:33:56 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 02:42 |