ozikus
5.11.2007, 21:44:36
Mam takie pytanie. siedzę w php od dawna, znam dobrze składnie ,korzystam z kliku modułów. ogólnie dobrze w tym stoję ale do dziś nie potrafię stosować obiektów, Nie to z nie wiem jak napisać obiekt -napisałem sobie klasę do łączenia z bazą i jakaś do przetwarzania grafiki./ Problem w tym ze nie widzę celu ich zastosowania. wszystkie rzeczy które pisałem obeszły sie bez obiektów. Znam ogólne założenia prog ob. w php(konstruktory metody, metody 'wbudowane - wakup onsleep itp' dziedziczenie agregacja itp) ale jakoś ich pojąc nie mogę. proszę o pomoc. niech ktoś poda mi jakieś przykłady gdzie definitywnie widać ze prog. ob ma ogromne zalety i jak to w praktyce wygląda. będę bardzo wdzięczny
drPayton
5.11.2007, 21:48:56
Duże aplikacje (wygoda/wydajność/czytelność kodu) lub chociażby frameworki. Systemy obsługi modułów/pluginów. Obsługa baz danych
Poza tym z obiektami jest łatwiej, przyjemniej, ładniej - po prostu programując obiektowo kod sam się "uładnia" (chodzi mi o duże projekty), a potem jest łatwiejszy do rozbudowy (dla ciebie i osób trzecich) i do czytania.
z tego co piszesz widać że nie pisałeś jeszcze dużych sajtów, i nie programowałeś zespołowo, wiele jeszcze przed tobą
Ertai
6.11.2007, 20:34:02
Bazowo wszystko to co mozesz osiagnac dzieki obiektom mozesz tez i bez nich.. pytanie tylko po co?
Jak sam mowisz, napisales sobie klase do laczenia sie z baza danych, dzieki temu mozesz ja juz wykorzystywac w kazdym swoim projekcie, jest ona stand alonem i wystarczy ze zaincludujesz ja w innym swoim projekcie i znow masz taka sama funkcjonalnosc jak w projekcie, dla ktorego orginalnie byla robiona ta klasa... wiec juz masz pierwsza zalete, mianowicie latwosc powtornego uzywania kodu. Druga zaleta jest przykladowo to, ze mozesz pisac programy na bardziej abstrakcyjnym poziomie i zajac sie szczegolowo logika aplikacji nie zas jej "bebechami". Przykladowo masz napisac jakas gre internetowa w PHP, duzo lepiej jest zrobic sobie klase postac, ktora ma metody do zmieniania poziomu, do zmiany zycia, do obliczania zadanych obrazen w zaleznosci od jej ekwipunku (ktory notabene tez moze byc obiektem) niz robienie dziesiatek roznych zmiennych, ktore przechowuja dane wartosci i z ktorych musimy kazdorazowo skorzystac aby cos zrobic z postacia.
Kiedy raz napiszesz sobie klase postac, zapisywanie tej postaci do bazy danych moze byc tak banalne jak: $postac->zapisz();
Nie musisz wielokrotnie powtarzac tego samego kodu (taka sama zalete maja funkcje, zamiast pisac ciagle ten sam kod po prostu wywolujesz dana funkcje i masz... obiekty to zbiory takich funckji i dodatkowe dane, tak wiec cos jakby poziom wyzej). Ponadto twoj kod staje sie bardziej przejrzysty. Jezeli mam zapisane:
$postac = new Postac(nazwa);
$postac->walka();
$postac->zapisz();
To potrafie z miejsca powiedziec do czego sluzy ten kod, kiedy zas w miejscu tych trzech instrukcji mialbym jakies parametry, porownywania zycia, i inne tego typu rzeczy (do tego przy zapisie laczenie sie z baza danych etc) to nie potrafilbym z marszu pomoc ci z kodem.
Tak jak napisali inni programowanie obiektowe swoja sile pokazuje dopiero przy projektach pisanych w kilka osob, gdzie przykladowo kazda osoba ma do napisania osobna klase a potem wszystko to sie ladnie laczy w jeden projekt. Na tej zasadzie dzialaja tez frameworki.
Polecam wymyslenie sobie jakiegos bardziej skomplikowanego projektu (ale oczywiscie na miare mozliwosci), rozrysowanie sobie przykladowych klas w UML (napisales ze potrafisz programowac obiektowo wiec rozrysowanie tego nie powinno stanowic dla ciebie wyzwania) i zaczac po kolei realizowac wszystkie klasy, jak skonczysz to pozniej na ich podstawie skoncz projekt. Zobaczysz ile kodu, ktory ponownie bedziesz mogl uzyc tobie zostanie i jak szybko skonczysz pisac wlasciwa aplikacje w oparciu o wczesniej stworzone klasy.
drPayton
6.11.2007, 20:55:45
Chociaż, gwoli rzetelności, dodać trzeba, że już od dawna toczy się spór między zwolennikami strukturalnego programowania a miłośnikami OOP. Nawet duże projekty mogą być strukturalnie napisane (vide phpMyAdmin). Jak do tej pory żadna z tych grup nie udowodniła drugiej swoich racji, a to z tego powodu, że wszystko zależy:
1. od typu realizacji (nie ma sensu pisać klasy do wyświetlenia 'Hello world!' a znam takich co to robią

)
2. od tego na co kładziony jest nacisk w projekcie (szybkość/wydajność? rozszerzalność? etc)
i mnóstwa innych czynników.
Cysiaczek
6.11.2007, 21:08:44
Kiedyś uważałem, że da się żyć bez obiektów. To było kilka lat temu. Hello World nie ujmę oczywiście w klasę, ale z doświadczenia wiem, że nawet przeróbka istniejącego już kodu strukturalnego ma sens. Poprzerabiałem niedawno elementy jednego sklepu. Upakowałem kod w klasy, porobiłem kilka ładnych metod i teraz mam tego efekty - łatwiej mi rozszerzać ten system - nie dławię się ze ze złości jak widzę 50 linijek powtórzonego kodu, bo po prostu zastępuje je jedną metodą. Dodając/modyfikująć nowe strony nie czuję, że jak coś dotknę, to zepsuję - uzyskałem hermetyczność na poziomie mnie zadowalającym.
Programowanie strukturalne po prostu musi odejść. Oprogramowanie tworzy się w ten sposób wolniej, co dzisiaj jest najistotniejszym czynnikiem decydujacym o osiągnięciu zysku. Łatwiej jest też testować kod obiektowy.
Po jakimś czasie człowiek widzi obiekty zanim je jeszcze napisze, wie jak mogą współpracować. Zaczyna po prostu myśleć tak, jak się myśli o klockach lego " ten element tu, tamten element gdzie indziej ... brzydko?...to zastąpmy ten kwadratowy okrągłym" : )
Pozdrawiam.
marcio
6.11.2007, 21:30:03
Nie watpie w to ze macie racje ale z tym sie nie zgadzam
Cytat
Programowanie strukturalne po prostu musi odejść
Nie zgadzam sie dlatego ze kazdy pisze jak chce chcialbym sie nauczyc programowac obiektowo w php ale jakos mi to nie wychodzi moze za 2 lata

A tak w ogole czy ktos na email bylby tak dobry zeby mi wyslac kilka skryptow napisanych w OOP albo kilka linkow do dobych kursow z ktorych sie uczyliscie oprocz gajdaw.pl??
drPayton
6.11.2007, 23:58:15
Hehe, to co napisał
@Cysiaczek to dowód na to, że:
Cytat
już od dawna toczy się spór między zwolennikami strukturalnego programowania a miłośnikami OOP
Cysiaczek, (ja zresztą też) jak widać nie wyobraża sobie pisania czegokolwiek dużego strukturalnie. Ale naprawdę jest wiele osób (doświadczonych programistów, bynajmniej nie laików), dla których obiekty w php są fuj
NoiseMc
7.11.2007, 05:25:37
Tutaj przyklad ogromnego systemu e-commerce, zbudowanego z wykorzystaniem OOP i wzorcow projektowych.
Cytat
Cysiaczek, (ja zresztą też) jak widać nie wyobraża sobie pisania czegokolwiek dużego strukturalnie. Ale naprawdę jest wiele osób (doświadczonych programistów, bynajmniej nie laików), dla których obiekty w php są fuj
To jest zdanie
programistow dla wiekszosci ktorych ulubione srodowisko pracy to vi i tryb tekstowy w linuxie, a ulubiony jezyk to C, zalety programowania obiektowego widza natomiast
developerzy, ktorzy lubuja sie w srodowiskach typu Eclipse lub Zend Studio, a ulubiony jezykiem jest Java. Programista upieral bedzie sie tez przy tym ze kombajny IDE zamulaja system i tego nie potrzebuja natomiast developer korzystajac z vi pogubilby sie na poczatku pisania systemu.
Roznica pomiedzy nimi jest taka ze programisci programuja skomplikowane programy (skrypty lub sterowniki), a developerzy buduja zlozone aplikacje ... kazdy robi to co lubi i kazdy lubi byc najlepszy w tym co robi
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.