Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Programowanie obiektowe
Forum PHP.pl > Forum > PHP
ozikus
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
Duże aplikacje (wygoda/wydajność/czytelność kodu) lub chociażby frameworki. Systemy obsługi modułów/pluginów. Obsługa baz danych
qqrq
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.
styx
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
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
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ą winksmiley.jpg )
2. od tego na co kładziony jest nacisk w projekcie (szybkość/wydajność? rozszerzalność? etc)

i mnóstwa innych czynników.
Cysiaczek
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
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 biggrin.gif
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
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 winksmiley.jpg
NoiseMc
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 winksmiley.jpg
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.