Autor wpisu: bastard13, dodany: 23.09.2011 14:46, tagi: php
trochę przydługi wstęp...
Jest szereg tutoriali pokazujących jak wykorzystać techniki obiektowe, jak je zastosować w kodzie, ale w większości z nich brak jednej ważnej informacji - OOP to przede wszystkim obiektowe myślenie. Techniki i sposób ich implementacji w danym języku programowania są jak język mówiony i gramatyka, są czymś zmiennym. Natomiast sposób myślenia obiektowego, umiejętność podejmowania decyzji w kwestiach relacji między klasami jest czymś stałym. Nie ważne, czy piszesz kod w PHP, Javie, C++ itp., ponieważ, jeżeli potrafisz poprawnie zaprojektować strukturę, to będzie ona uniwersalna, zmieni się jedynie sposób przetłumaczenia tego na język zrozumiały dla interpretera/kompilatora.A więc o czym to będzie?Właściwie to o tym samym, co wszędzie, czyli podstawy takie, jak: dziedziczenie, interfejsy, abstrakcje, hermetyzacja itd. Z tym, że oprócz przykładu użycia postaram się jeszcze przedstawić tok myślenia, który się za tym kryje. Tak, więc np. w dziedziczeniu nie chodzi tylko o to, że mamy dwie klasy Samochód i Samolot, które dziedziczą po abstrakcyjnej klasie Pojazd:)Postaram się zaprezentować przykłady, kiedy dane rozwiązanie jest niekoniecznie dobre lub całkiem złe.Tak naprawdę najwięcej będzie o myśleniu, bo w gruncie rzeczy do tego OOP się sprowadza. Ostatnim etapem dobrego programowania obiektowego jest pisanie kodu.programowanie obiektowe - wtf?
Programowanie obiektowe jest to przedstawienie świata rzeczywistego i relacji w nim zachodzących, za pomocą obiektów. Najważniejszymi cechami programowania obiektowego są:- Abstrakcja
- Enkapsulacja
- Dziedziczenie
- Polimorfizm
klasa
Klasa jest to typ zmiennej z punktu widzenia programowania, natomiast w ujęciu projektowym jest to ogólna definicja pewnej grupy powiązanych ze sobą obiektów. Klasa definiuje metody, czyli funkcjonalność, które są dostarczane przez obiekty. Poza tym definiuje również atrybuty, które są indywidualne (nie zawsze, ale do tego tematu jeszcze wrócę:) dla konkretnych obiektów. Czym jest obiekt? Jest to instancja danej klasy, czyli konkretna zmienna danego typu. Prosty przykład:Janek, Ania, Zosia to obiekty klasy Człowiek. Każde z nich może spać, jeść, poruszać się i to są właśnie metody zdefiniowane w klasie Człowiek. Oprócz tego każdy człowiek posiada imię oraz datę urodzenia, jednak są one indywidualne dla każdego obiektu, czyli nie są bezpośrednio powiązane z klasą, a z obiektem danej klasyA jak coś takiego napisać?<?phpclass Human{ private $_name; private $_birthDate; public function __construct($name, $birthDate) {/*...*/} public function eat() {/*...*/} public function sleep() {/*...*/} public function move() {/*...*/}}$janek = new Human('Janek', '1982-01-09');$anna = new Human('Anna', '1950-02-19');$zosia = new Human('Zosia', '1999-11-17');Z informacji dotyczących klasy warto przeczytać jeszcze o operatorach widoczności.
abstrakcja i dziedziczenie
Klasa abstrakcyjna różni się od zwykłej klasy tym, że nie można utworzyć jej instancji. Może ona również dostarczać metod abstrakcyjnych, czyli metod, które zostały zadeklarowane i muszą zostać zdefiniowane w klasach potomnych. Aby to rozjaśnić rozwinę przykład z poprzedniego akapitu:Pomimo iż Janek, Ania i Zosia są obiektami klasy Człowiek, to są pewne różnice charakterystyczne dla grup np. Ani i Zosia mogą urodzić dziecko, ponieważ są Kobietami, natomiast Janek nie doświadczy tego przywileju gdyż jest Mężczyzną. Dodatkowo różni ich też sposób sikania, pomimo tego, że i Kobiety i Mężczyźni to robią. Więc tak naprawdę żadne z nich nie jest tylko Człowiekiem, ale jest albo Kobietą, albo Mężczyznąi kod:<?phpabstract class Human{ private $_name;
Autor wpisu: Tomasz Kowalczyk, dodany: 23.09.2011 02:00, tagi: javascript
Autor wpisu: Tomasz Kowalczyk, dodany: 22.09.2011 02:20, tagi: javascript
Autor wpisu: batman, dodany: 21.09.2011 08:00, tagi: javascript
W pierwszej części serii opisującej krok po kroku tworzenie rozszerzeń do Google Chrome, zarysowałem wygląd rozszerzenia oraz obiecałem, że w kolejnej części przyjrzymy się manifestowi. Ponieważ sam manifest nie jest ciekawy i za dużo na jego temat nie da się napisać (wszystko jest dokładnie opisane w dokumentacji), opiszę jego najbardziej interesujące elementy.
Plik manifestu jest niczym innym jak najzwyklejszym plikiem tekstowym w formacie JSON, którego dokładny opis znajdziemy pod adresem http://code.google.com/chrome/extensions/manifest.html. Nas najbardziej interesują pola wymagane (plus zalecane) oraz pola odpowiedzialne za wizualną reprezentację rozszerzenia.
Do pierwszej grupy pól zaliczają się nazwa rozszerzenia (name), jego wersja (version) oraz opis (description). Nic interesującego. Znacie ciekawiej prezentują się pola pozwalające na dodanie do rozszerzenia kodu reagującego na akcje użytkownika i wykonujące zadane czynności. Do dyspozycji mamy aż pięć rodzajów plików, które możemy utworzyć. Są to:
- akcja przeglądarki (browser action)
- akcja strony (page action)
- skrypt działający w tle (background page)
- skrypt treści (content script)
- opcje
Pierwsze dwa nie różnią się zbytnio od siebie i służą prawie do tego samego – wyświetlenia chmurki po kliknięciu w ikonę rozszerzenia. Czym się zatem różnią? Browser action działa w kontekście przeglądarki, a page action w kontekście strony. Oznacza to, że w pierwszym przypadku ikona rozszerzenia zagości w oknie przeglądarki obok paska adresu, a w drugim wewnątrz paska adresu. Z technicznego punktu widzenia oba sposoby niewiele się od siebie różnią.
Skrypt działający w tle jest dokładnie tym, na co wskazuje nazwa. Działa on w tle i może reagować na akcje użytkownika lub przeglądarki. Oczywiście nic nie stoi na przeszkodzie, aby co jakiś czas łączył się do zdalnego serwera i pobierał np. informacje o nowych mailach. Warto wiedzieć, że background page działa w osobnym procesie i może zostać w dowolnym momencie “ubity”.
Kolejny rodzaj pliku jest równie ciekawy jak poprzednie. Content script jest skryptem JavaScript, który możemy dokleić do strony i go na niej wykonać. Doskonale się on nadaje do wprowadzania zmian w aktualnie przeglądanej stronie oraz pobieraniu z niej informacji. Co więcej przy pomocy content script jesteśmy w stanie dodać do strony własny kod CSS.
Pozostawione na koniec opcje, są po prostu opcjami. To przy pomocy tego pliku ustawiamy modyfikowalne przez użytkownika parametry rozszerzenia.
W kolejnej części serii w końcu napiszemy jakiś kod. Utworzymy pierwsze rozszerzenie i na jego podstawie przyjrzymy się różnicom między browser action i page action.