Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Programowanie obiektowe - jak się przekonać?
paramyksowiroza
post
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ś?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PrinceOfPersia
post
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
Go to the top of the page
+Quote Post

Posty w temacie
- paramyksowiroza   Programowanie obiektowe - jak się przekonać?   28.06.2013, 14:20:36
- - Wazniak96   4 podstawowe założenia programowania obiektowego T...   28.06.2013, 14:51:07
- - pain3hp   Powiedzmy, że programowanie obiektowe jest wyższym...   28.06.2013, 20:05:45
- - PrinceOfPersia   Wg mnie nie chodzi o obiektówkę (którą ja sam olew...   29.06.2013, 01:39:06
- - c1chy   Ja też jestem ze "starej szkoły" (zaczyn...   29.06.2013, 10:56:21
- - bpskiba   Doktor pieniążek przekonuje najskuteczniej Wszyst...   30.06.2013, 21:38:05
- - gitbejbe   dołączę się. Ja raczej nie jestem ze starej szkoł...   1.07.2013, 07:33:05
- - PrinceOfPersia   CytatJa raczej nie jestem ze starej szkoły, ale tr...   2.07.2013, 11:17:22
- - gitbejbe   @PrinceOfPersia Dzięki za odpowiedź : ) każde zda...   3.07.2013, 06:30:26
- - PrinceOfPersia   CytatA doczepiłem sie do tematu dlatego, że wszędz...   3.07.2013, 07:09:10
- - rtech.projekty.php   Odpowiedź jest prosta: nie rozumiesz lub nie używa...   3.07.2013, 08:44:23
- - !*!   @paramyksowiroza http://forum.php.pl/index.php?sho...   3.07.2013, 08:52:27
- - PrinceOfPersia   CytatPo prostu nie można zabronić przed używaniem ...   3.07.2013, 09:47:32
|- - rtech.projekty.php   Cytat(PrinceOfPersia @ 3.07.2013, 10:47...   3.07.2013, 12:58:40
- - kradam   Tworzyłem spore systemy wtedy, gdy OOP nie było je...   3.07.2013, 09:58:44
- - PrinceOfPersia   Cytattym bardziej jakąkolwiek hierarchię, no, zaró...   3.07.2013, 13:31:53
|- - rtech.projekty.php   Cytat(PrinceOfPersia @ 3.07.2013, 14:31...   4.07.2013, 08:04:39
- - Dejmien_85   Cytat(paramyksowiroza @ 28.06.2013, 15:20...   3.07.2013, 14:07:07
- - gitbejbe   @up pięknie <3   4.07.2013, 06:26:08
- - eurologo   Napisany klasy można wykorzystać w innych projekta...   6.09.2013, 16:57:01


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: 12.10.2025 - 02:42