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
Po prostu nie można zabronić przed używaniem niektórych funkcji, zastosować polimorfizmu,

polimorfizm da się osiągnąć nawet w C (bez użycia klas, emulując obiektówkę za pomocą struktur i wskaźników na funkcje), w PHP można by było zamiast obiektów używać tablic asocjacyjnych i anonimowych funkcji:

  1. $Pracownik = ['pracuj'=>function() {echo 'pracuje.';}, 'wyplata'=>3500];
  2.  
  3. // definicja "klasy" Dyrektor:
  4. $Dyrektor = $Pracownik; // class Dyrektor extends Pracownik....
  5. $Dyrektor['pracuj'] = function($this) {
  6. echo "nic nie robie, bo jestem dyrektorem, zarabiam $this[wyplata]zl<br>";
  7. };
  8. $Dyrektor['wyplata'] = 10000;
  9.  
  10. // definicja "klasy" Sprzataczka:
  11. $Sprzataczka = $Pracownik; // class Sprzataczka extends Pracownik....
  12. $Sprzataczka['pracuj'] = function($this) {
  13. echo "sprzatam, zamiatam, zarabiam $this[wyplata]zl<br>";
  14. };
  15. $Sprzataczka['wyplata'] = 1600;
  16.  
  17.  
  18. function wywolajMetode($obiekt, $metoda) {
  19. $obiekt[$metoda]($obiekt);
  20. }
  21.  
  22.  
  23. $dyrektor = $Dyrektor; // cos jak: $dyrektor = new Dyrektor()
  24. $sprzataczka = $Sprzataczka; // cos jak: $sprzataczka = new Sprzataczka()
  25.  
  26.  
  27. wywolajMetode($dyrektor, 'pracuj');
  28. wywolajMetode($sprzataczka, 'pracuj');


i mamy polimorfizm oraz hierarchię obiektów na tablicach asocjacyjnych.
pytanie tylko PO CO skoro są klasy? (IMG:style_emoticons/default/wink.gif)
ale wrzucam po prostu jako proof of concept, że polimorfizm da się osiągnąć na samych tablicach asocjacyjnych i funkcjach anonimowych.

Ten post edytował PrinceOfPersia 3.07.2013, 09:50:02
Go to the top of the page
+Quote Post
rtech.projekty.p...
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 24.06.2013

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


Cytat(PrinceOfPersia @ 3.07.2013, 10:47:32 ) *
polimorfizm da się osiągnąć nawet w C (bez użycia klas, emulując obiektówkę za pomocą struktur i wskaźników na funkcje), w PHP można by było zamiast obiektów używać tablic asocjacyjnych i anonimowych funkcji:

  1. $Pracownik = ['pracuj'=>function() {echo 'pracuje.';}, 'wyplata'=>3500];
  2.  
  3. // definicja "klasy" Dyrektor:
  4. $Dyrektor = $Pracownik; // class Dyrektor extends Pracownik....
  5. $Dyrektor['pracuj'] = function($this) {
  6. echo "nic nie robie, bo jestem dyrektorem, zarabiam $this[wyplata]zl<br>";
  7. };
  8. $Dyrektor['wyplata'] = 10000;
  9.  
  10. // definicja "klasy" Sprzataczka:
  11. $Sprzataczka = $Pracownik; // class Sprzataczka extends Pracownik....
  12. $Sprzataczka['pracuj'] = function($this) {
  13. echo "sprzatam, zamiatam, zarabiam $this[wyplata]zl<br>";
  14. };
  15. $Sprzataczka['wyplata'] = 1600;
  16.  
  17.  
  18. function wywolajMetode($obiekt, $metoda) {
  19. $obiekt[$metoda]($obiekt);
  20. }
  21.  
  22.  
  23. $dyrektor = $Dyrektor; // cos jak: $dyrektor = new Dyrektor()
  24. $sprzataczka = $Sprzataczka; // cos jak: $sprzataczka = new Sprzataczka()
  25.  
  26.  
  27. wywolajMetode($dyrektor, 'pracuj');
  28. wywolajMetode($sprzataczka, 'pracuj');


i mamy polimorfizm oraz hierarchię obiektów na tablicach asocjacyjnych.
pytanie tylko PO CO skoro są klasy? (IMG:style_emoticons/default/wink.gif)
ale wrzucam po prostu jako proof of concept, że polimorfizm da się osiągnąć na samych tablicach asocjacyjnych i funkcjach anonimowych.


Nie wiem gdzie tu widzisz polimorfizm, tym bardziej jakąkolwiek hierarchię, chyba, że opierasz domniemaną hierarchię na sytuacji zawodowej typu dyrektor/sprzątaczka.
Kod prezentuje po prostu to co się znajduje w tablicy pod wskazanym indeksem.
Jak spróbujesz dowiedzieć się ile zarabia ktoś, kogo w tablicy nie ma, np. kierowca, otrzymasz błąd pehapa (IMG:style_emoticons/default/tongue.gif)
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: 6.10.2025 - 14:48