Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

"OO" - Programowanie obiektowe w praktyce

Wstęp

Witam w pierwszym, z serii artykułów opatrzonych literkami "OO" (ang. Object Orientation), na łamach których postaram się najlepiej jak umiem opisać techniki rządzące programowaniem obiektowym. Moja wiedza w tym temacie nadal nie jest zbyt duża, ale wobec tego, co można znaleźć w polskim internecie (praktycznie nic), może komuś się przydać. Dalej się edukuję w tym zakresie, tak więc tekst ten będzie uaktualniany i rozszerzany, będą dodawane kolejne nowe artykuły i poprawiane stare.

Językiem, którego będę używał w przykładach będzie PHP w wersji 5. "Piątkę" wybrałem, ponieważ posiada bardziej rozbudowaną "obiektówkę" niż "czwórka". Staram się pisać tak, aby przykłady dało się odnieść także do innego języka. Myślę, że piszący w Javie czy C++ znający choć podstawy PHP będą potrafili zastosować poznane konstrukcje także w swoich ulubionych językach, choć notabene niewykluczone, że kiedyś powstanie alternatywna wersja tego tekstu specjalnie dla nich, szukajcie jej w moim serwisie - Code-Zone.

Tekst ten jest adresowany generalnie dla ludzi znających składnię PHP, mających już jakiś zarys tego co tu będziemy rozdłubywać, ale (tu wybierz sobie na czym Ci zależy :)) z dystansem odnoszących się do manii "OO", chcących poprawić jakość tworzonego kodu, chcących by ich aplikacje były przenośne, rozwiązania elastyczne, a kod dało się łatwo przerabiać w miarę zmieniających się wymagań. Ci niewiedzący jeszcze, o co chodzi w obiektówce także znajdą tutaj wsparcie. Choć kurs ten na początku planowałem przeznaczyć dla "średniozaawansowanych", teraz - gdy przyszło do pisania - ciężko jest mi wyznaczyć ten startowy pułap. Po prostu kurs kursowi nierówny i niektórzy bagatelizują terminy, których - fakt - w obiektówce mamy troszkę. A bez tych terminów de facto ciężko jest się połapać, gdy przechodzimy do bardziej "zaawansowanych" przykładów. Po prostu brakuje słów, by to wszystko opisać w "łopatologiczny" sposób. Od pewnego czasu istnieje także "nowa szkoła" programowania obiektowego, która mi się bardzo podoba i którą (choć tak naprawdę nie jestem jeszcze z nią tak "za pan brat") chciałbym tutaj przedstawić. Dlatego kurs ten ma z założenia uczyć obiektówki od ZERA. Zakładam tylko, że znasz podstawową składnię PHP i potrafisz korzystać z manuala. Mile widziane jakiekolwiek doświadczenie w PHP (czytaj: domowe stronki typu "mój własny portal" wystarczą) i podstawa obsługi relacyjnych baz danych (na obiektowych się jeszcze nie znam, a przykłady gdzie używam SQL są krótsze i czytelniejsze niż odpowiednie na plikach).

Po tym, jak już nauczysz się sprawnie używać obiektów, będziesz wiedział, co to jest dziedziczenie i kiedy go nie używać, zdasz sobie sprawę, jaka potęga drzemie w polimorfizmie i będziesz hermetyzował wszystko co się da, przejdziemy do "wyższej półki". Spróbuję opisać techniki używane przez profesjonalistów, czyli sposoby projektowania (Use Cases, Extreme Programming) i UML - w zarysie (to jest temat na oddzielne serie artykułów, które czekają na moich kolegów do napisania ;P), zasady (te najważniejsze) i wzorce projektowe (te podstawowe, znając zasady sam dojdziesz do pozostałych). Jest to temat trudniejszy, który może wydawać się bardzo teoretyczny, ale spróbujemy przez niego przebrnąć. Dla ciekawych podam, że trenerzy OOP cenią swoje nauki na ok. 2750$ od "łebka" (liczba z serwisu Object Mentor). Nie mam takiego kursu za sobą, nie mam wykształcenia informatycznego i nie znam podejścia nauczycieli do tego tematu. Ale zobaczymy. Najwyżej ugryziemy tylko temat, robiąc smaka tym, którym się to spodoba. A nuż wśród tych znajdzie się ktoś, kto zainwestuje w podobny kurs i podzieli się uzyskaną wiedzą z nami tutaj, dopisując kolejne rozdziały do tego kursu.

Zainteresowałem się inżynierią programowania obiektowego, kiedy raz po raz wpadałem na genialne pomysły i co chwila przerabiałem oskryptowanie mojej strony. Trwało to w zasadzie bez przerwy, a że efekty były satysfakcjonujące nie brakowało mi entuzjazmu. Do czasu...., gdy zaczęło brakować czasu :) Choć wiele się przez to nauczyłem (w zasadzie jedynym dużym projektem w PHP nad jakim pracowałem było właśnie Code-Zone), trochę teraz żałuję, że nie napisałem tego już "wspaniałego systemu" od razu, tylko metodą prób i błędów. Metodologia OOD, cała inżynieria oprogramowania, mają na celu właśnie (w dużym uproszczeniu oczywiście) uniknąć takiego ciągłego ulepszania, jest to zbiór porad i sprawdzonych rozwiązań, bardzo dobrych, jeśli nie najlepszych z dostępnych, znając które można po prostu sprawniej tworzyć. Bez ciągłego przepisywania. Od razu stosując dobre praktyki.

Poniżej macie krótki przykład, "zajawkę" tego, czym będziemy się zajmować w najbliższych odcinkach kursu. Przedstawiam dwa rozwiązania, proceduralne i strukturalne tego samego problemu, abyście sami mogli zobaczyć, jakie są możliwości programowania obiektowego, jak wkładając trochę więcej wysiłku w projektowanie, można później wygodnie używać tego co się zrobiło.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (3)
:))
Piątek 11 Kwiecień 2008 2:45:35 pm - lonas

Bardzo fajne ale ... czemu takie krotkie wiecej !! :)

koment
Czwartek 26 Lipiec 2007 10:46:57 pm - plurr <xytrass_at_o2.pl>

bardzo fajny artykul, nareszcie jasniej zrozumialem klasy ;p Tylko gdzie reszta ? :))

To są podstawy?
Niedziela 22 Lipiec 2007 10:36:39 am - solari_de_marco <solari_de_marco_at_interia.pl>

Kurs niby podstawy a .... Potrafię dobrze programować strukturalnie i chciałem się nauczyc OO i mi to ciężko idzie... :/ Myślałem ze tu się czegoś nauczy, niby oki ale ... jak mam się połączyć z bazą danych? Gdzie jest wyjasnienie ze trzeba wybrac baze danych, połączyc sie i itp, jak podajesz kod wykożystania klas to już pokaż jak się łaczyć z tą bazą danych !!

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2020 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System