Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Object Oriented Programming - i jego pułapki.
LoPMX
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 25.11.2003
Skąd: Białe Błota

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


Tak wlasnie siedze i mysle sobie, bo chce przepisac swoja aplikacje z GOD classes na prawdziwe OOP. Chce aby kazda klasa reprezentowala jeden typ danych, np. klasa Articles ma metody tworzace obiekty klasy Article, ktora posiada z kolei metody zwracajace dane danego artykulu. Ale jest problem... Artykuly w bazie danych polaczone sa relacyjnie z Article_Type, oraz Category. I problem w tym, ze klasa Article_Type to tylko article_type z DB, Category to tylko category z DB. W templejcie potrzebuje wyswietlic artykuly wraz z ich kategoria oraz typem (np. test, recenzja czy cokolwiek innego). I nie wiem, jak mam polaczyc te obiekty. Moge oczywiscie zrobic wywolanie obiektu Category z Article, ale to za kazdym wyswietleniem danych tworzy jedno zapytanie do bazy o nazwe kategorii. Ma ktos jakis pomysl?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Krolik
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 16.11.2004

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


Cytat(hawk @ 2004-09-29 08:19:04)
Ja np najpierw nauczyłem się obiektowości w C++, a potem zacząłem pisać w C. I nigdy nie miałem problemów z OOP. Za to miałem problemy z organizacją modułów w C (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) .

To witaj w klubie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tez zaczynalem od C++, aczkolwiek jeszcze wczesniej znalem Object Pascala.

Zgadzam sie z przedmowcami, ze OOP swietnie sluzy do budowy srednich i wiekszych aplikacji. Do malych sprawdza sie tak samo dobrze, tyle ze w innych jezykach, bo jest bardziej intuicjne. Problem z php jest taki, ze skrypt wykonuje sie raz, a pozniej wszystko gubi i trzeba zapisywac albo w bazie, albo w sesjach. I to "psuje obiektowosc". Nie da sie zrobic takich rzeczy jak np. w Javie, ze piszesz sobie klase, przy kazdym polu dajesz @hibernate.property column="nazwa odp. kolumny w bazie danych" i pozniej z bazy wydobywasz od razy gotowy obiekt, nie bawisz sie w jakies SQLe itp. Zmieniasz jedno pole, dajesz update i masz wszystko ladnie odswiezone w bazie. To jest wlasnie Aspect Oriented Programming.
Czy chociazby programowanie zdarzeniowe jak w C++ Builderze czy ASP.NET.
Bez OOP ani rusz.

Chcialem napisac kiedys swoj wlasny framework obiektowy do budowy aplikacji w php, ale w koncu sie wycofalem i robie go w C++. Dzieki temu wiele udogodnien mam niemal za darmo przy duzo wiekszej wydajnosci i na dodatek moge robic rzeczy, ktorych w php nigdy by sie nie dalo dobrze zrealizowac:
- zabezpieczenie kodu zrodlowego
- niezaleznosc od interpretera i bibliotek - mozna przeciez linkowac statycznie
- "trwałosc" obiektow
- wskazniki (jak jest trwalosc, to wskazniki nagle staja sie b. potrzebne)
- dobry odsmiecacz (czymze jest marne zliczanie referencji php)
- wielodziedziczenie (glownie do wyjatkow)
- wielowatkowosc (no do apl. internetowych moze mniej przydatne, ale kto wie)
- rozne zaawansowane struktury danych (STL)
- tysiace dobrych bibliotek dla roznych zastosowan w tym do aplikacji rozproszonych (CORBA, RMI, RPC) i rownoleglych (PVM).
- lepsza integracja z innymi programami, w tym syst. baz danych (nie spotkalem systemu, ktory by nie dawal API do C)
- setki gotowych narzedzi takich jak kompilatory, debuggery, IDE itd.

Jedyne czego brakuje to paruset klas dla ulatwienia pisania aplikacji WWW, ale wlasnie nad tym pracuje. Chyba latwiej dorobic takie klasy niz probowac implementowac wszystko co na gorze w php? Ale moze sie myle.

Z drugiej strony troche trudniej uzyskac dobra przenosnosc, ale jest to mozliwe i trud sie oplaca. Zreszta przenosnosc wcale nie jest tak wazna po stronie serwera.

Jednym slowem OOP rzadzi, tyle ze nie w php. (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ((
Go to the top of the page
+Quote Post

Posty w temacie
- LoPMX   Object Oriented Programming - i jego pułapki.   27.11.2003, 18:17:31
- - bumelang   Swojego czasu trochę nad tym z kumplem debatowaliś...   30.11.2003, 19:57:58
- - halfik   mnie z kolei interesuje ciut inne zagadnienie: czy...   5.12.2003, 08:49:57
- - LukaszLenart   Pomysle, ze masz system ktory generuje jakies rapo...   6.12.2003, 23:42:15
- - halfik   tak, wiem. znam zalety programowania obiektowego, ...   7.12.2003, 12:16:55
- - Seth   Szybsze jest programowanie strukturalne. OOP nie ...   7.12.2003, 13:06:53
- - DeyV   Na szczęscie te róznice są na tyle marginalne, że ...   7.12.2003, 14:22:39
- - LoPMX   zastanawiam sie jak zdolacie zaprojektowac klasy z...   7.12.2003, 14:25:44
- - halfik   CytatOOP nie jest natywne w php. Mimo, ze posiada ...   7.12.2003, 15:37:34
- - Użytkownik   Programowanie obiektowe bardziej pasuje mi do porz...   7.12.2003, 16:20:16
- - halfik   oj, jest potrzebne - jezyki obiektowe to przyszlos...   7.12.2003, 18:06:57
- - Użytkownik   Cytatoj, jest potrzebne - jezyki obiektowe to przy...   8.12.2003, 19:38:10
- - Seth   Pisze (ezPublish, Galaxia, Ambivalence, binaryclou...   8.12.2003, 20:00:19
- - halfik   no ale nawet pomijajac juz duze aplikacje. wezmy p...   8.12.2003, 20:42:21
- - LukaszLenart   Jedna rzecz to prostota zmian, a druga to mozliwos...   9.12.2003, 09:23:06
- - Pathfinder   Witam Swoj maly system buduje tylko na klasach. S...   30.12.2003, 04:38:43
- - LukaszLenart   A czy mozesz udostepnic swoje rowiazanie do wgladu...   30.12.2003, 07:18:01
- - radziel   CytatWitam Swoj maly system buduje tylko na klasa...   30.12.2003, 09:54:54
- - Pathfinder   CytatA czy mozesz udostepnic swoje rowiazanie do w...   30.12.2003, 13:44:35
- - lukaswoj   Ja jestem zdecydowanie za OOP. Zgadza się, że w PH...   2.01.2004, 23:53:19
- - Nalfein][WR   Dokładnie. W całej rozciągłości zgadzam się z luka...   3.01.2004, 12:26:27
- - bumelang   Cytat[WR"]Brakuje jednak tej wielowątkowości w PHP...   6.01.2004, 00:18:49
- - a1internet   Cytatzastanawiam sie jak zdolacie zaprojektowac kl...   12.01.2004, 00:01:05
- - a1internet   Cytatphp ma chyba za dużą narośl kompatybilności, ...   12.01.2004, 00:19:32
- - bumelang   CytatCytatphp ma chyba za dużą narośl kompatybilno...   13.01.2004, 10:59:47
- - halfik   CytatReausumując - doceniam rolę obiektów w tworze...   15.01.2004, 08:41:42
- - cagrET   Cytat... upieranie sie przy strukturalnym nie jest...   15.01.2004, 20:48:41
- - patrycjusz   CytatCytat ... upieranie sie przy strukturalnym ni...   15.01.2004, 21:57:46
- - cagrET   Patrycjuszu nie zrozumiales o co mi chodzilo (moze...   15.01.2004, 23:19:50
- - trax   Dobre funkcje też mogą być rozwiązaniem   7.02.2004, 12:49:40
- - Seth   Mozna tez uzywac 286 i dyskietek zamiast tydsku, t...   8.02.2004, 22:42:39
- - keedy   ja tez pisze swoj maly systemik na oop ;p ale wole...   28.09.2004, 01:17:59
- - Yarecki   Cytat(Seth @ 2004-02-08 23:42:39)Pewnych rzec...   28.09.2004, 07:26:39
- - hawk   Cytat(Yarecki @ 2004-09-28 07:26:39)Programow...   28.09.2004, 11:15:59
- - e-Gandalf   Geez... jaka bzdura... Jak napisal hawk: nie mozna...   28.09.2004, 14:10:04
- - Yarecki   Wypowiedzi na forum nie muszą być obiektywne, bo n...   28.09.2004, 15:24:01
- - hawk   Ludzie mają też problemy z programowaniem struktur...   29.09.2004, 09:19:04
- - kubatron   Seth: Czy ten Aspect Oriented Programing (AOP) będ...   1.10.2004, 06:50:27
- - Bora   na necie jest gdzies przyklad programow napisany a...   1.10.2004, 10:54:20
- - Krolik   Cytat(hawk @ 2004-09-29 08:19:04)Ja np najpie...   17.11.2004, 10:11:44
- - hawk   1) php a Java to jest, niestety, gigantyczna przep...   17.11.2004, 11:56:35
- - Krolik   @hawk: wiem ze moze jestem niepoprawnym optymista,...   17.11.2004, 14:08:22
- - DeyV   ale, do %#$^%, chłopie. Jak tak bardzo lubisz...   19.11.2004, 21:35:05
- - Krolik   @DeyV: Przecież ja nikogo nie odmawiam od pisania ...   20.11.2004, 10:56:55
- - DeyV   Ok, peace Rzeczywiście - "trochę" sie u...   20.11.2004, 11:19:47


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: 8.10.2025 - 22:20