<

Pozycjonowanie stron www i SEO / SEM

Copywriting jest więc sztuką pisania dobrych tekstów na niej umieszczaj w tym meta tagu słów kluczowego "psy", to kieruj na tę stronę dla słowa kluczowe powinna być doceniana.

Czas działania usługi pozycjonowaniaW odniesienie jej pozycji w wyikach wyszukiwarek i są podstawą pakietu pozycjonowanie i optymalizacja stron

Budowa i zawrtość strony.

Programowanie obiektowe

Programowanie obiektowe (ang. object-oriented programming) — paradygmat programowania, w którym programy definiuje się za pomocą obiektów — elementów łączących stan (czyli dane, nazywane najczęściej polami) oraz zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań.

Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane oraz procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację oraz wielokrotne użycie programów albo ich fragmentów.

Największym atutem programowania, projektowania oraz analizy obiektowej jest zgodność takiego podejścia z rzeczywistością – mózg ludzki jest w naturalny sposób najlepiej przystosowany do takiego podejścia przy przetwarzaniu informacji.

Spis treści

Podstawowe założenia paradygmatu obiektowego

Istnieje pewna różnica zdań co do tego, jakie cechy języków programowania czynią je obiektowymi. Powszechnie uważa się, że najważniejsze są następujące cechy:

Abstrakcja

Każdy obiekt w systemie służy jako model abstrakcyjnego "wykonawcy", który może wykonywać pracę, opisywać oraz zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Procesy, funkcje albo metody bywają także abstrahowane, a kiedy tak się dzieje, konieczne są rozmaite techniki rozszerzania abstrakcji.

Hermetyzacja

Czyli ukrywanie implementacji, enkapsulacja. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który wyznacza dopuszczalne metody współpracy. Pewne języki osłabiają to założenie, dopuszczając pewien poziom bezpośredniego (kontrolowanego) dostępu do "wnętrzności" obiektu. Ograniczają w ten sposób poziom abstrakcji. Dla przykładu w poniektórych kompilatorach języka C++ istnieje możliwość tymczasowego wyłączenia mechanizmu enkapsulacji; otwiera to dostęp do wszystkich pól oraz metod prywatnych, ułatwiając programistom pracę nad pośrednimi etapami tworzenia kodu oraz znajdowaniem błędów.

Polimorfizm

Referencje oraz kolekcje obiektów potrafią dotyczyć obiektów różnego typu, a wywołanie metody dla referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Jeśli dzieje się to w czasie działania programu, to nazywa się to późnym wiązaniem albo wiązaniem dynamicznym. Pewne języki udostępniają bardziej statyczne (w trakcie kompilacji) rozwiązania polimorfizmu – dla przykładu szablony oraz przeciążanie operatorów w C++.

Dziedziczenie

Porządkuje oraz wspomaga polimorfizm oraz enkapsulację dzięki umożliwieniu definiowania oraz tworzenia specjalizowanych obiektów na podstawie bardziej ogólnych. Dla obiektów specjalizowanych nie trzeba redefiniować całej funkcjonalności, lecz tylko tę, której nie ma obiekt ogólniejszy. W typowym przypadku powstają grupy obiektów zwane klasami, oraz grupy klas zwane drzewami. Odzwierciedlają one wspólne cechy obiektów.

Historia programowania obiektowego

Koncepcja programowania obiektowego pierwotnie ukazała się w Simuli 67, języku zaprojektowanym do zastosowań symulacyjnych, stworzonym przez Ole-Johana Dahla oraz Kristena Nygaarda z Norsk Regnesentral w Oslo. (Mówi się, że pracowali oni nad symulacjami zachowania się statków oraz posiadali kłopoty z opanowaniem wszystkich zależności, jakie wywierały na siebie nawzajem wszystkie parametry statków w symulacji. Wtedy wpadli na pomysł, by pogrupować typy statków w zróżnicowane klasy obiektów, a każda z klas sama odpowiadałaby za określanie własnych danych oraz zachowań.) Później koncepcja była dopracowana w języku Smalltalk, stworzonym w Simuli w Xerox PARC, ale zaprojektowanym jako w pełni dynamiczny system, w którym obiekty bywają wykonywane oraz modyfikowane "w locie", a nie system oparty na statycznych programach.

Programowanie obiektowe zyskało status techniki dominującej w połowie lat 80., z reguły ze względu na wpływ C++, stanowiącego rozszerzenie języka C. Dominacja C++ była utrwalona przez wzrost popularności graficznych interfejsów użytkownika, do tworzenia których programowanie obiektowe nadaje się szczególnie dobrze.

W tym okresie cechy obiektowe dodano do wielu języków programowania, w tym Ady, BASIC-a, Lispu, Pascala oraz innych. Dodanie obiektowości do języków, które pierwotnie nie były do niej przystosowane, zrodziło szereg problemów z kompatybilnością oraz konserwacją kodu. Z kolei "czysto" obiektowym językom brakowało cech, z których programiści przyzwyczajeni byli korzystać. By zapełnić tę lukę, podejmowano rozliczne próby stworzenia języków obiektowych dostarczających równocześnie "bezpiecznych" elementów proceduralności. Eiffel Bertranda Meyera był wczesnym przykładem nader udanego języka spełniającego te założenia; aktualnie stał się on w zasadzie całkowicie zastąpiony przez Javę.

Podobnie, jak programowanie funkcyjne doprowadziło do udoskonalenia technik takich, jak programowanie strukturalne, do współczesnych metod projektowania oprogramowania obiektowego zaliczają się takie usprawnienia, jak wzorce projektowe (ang. design patterns), design by contract oraz języki modelowania (np. UML).

Obiektowość rozprzestrzeniła się nader znacznie, jednak zwykle w systemach hybrydowych, w połączeniu z programowaniem niskopoziomowym (asembler), funkcyjnym (OCaml, pewne dialekty Lispu), sieciowym (Java), skryptowym (Perl, Python, Ruby) itd. Systemy czysto obiektowe jak Smalltalk nie znalazły zbyt szerokiego zastosowania.

Podział

Można wyróżnić dwa zasadnicze podtypy programowania obiektowego

Programowanie oparte na klasach

Definiowane są klasy, czyli typy zmiennych, a następnie wykonywane są obiekty, czyli zmienne (w uproszczeniu) tych typów.

Programowanie oparte na prototypach

W tym podejściu nie istnieje pojęcie klasy. Nowe obiekty tworzy się w oparciu o istniejący już obiekt – prototyp, po którym dziedziczone są pola oraz metody oraz da się go rozszerzać o nowe. Spotykany raczej w językach interpretowanych np. JavaScript.

Elementarna charakterystyka popularnych języków obiektowych

Poniższa charakterystyka dopuszcza bardzo dużą różnorodność – oraz w rzeczywistości, o ile systemy programowania strukturalnego czy funkcyjnego były do siebie stosunkowo podobne, o tyle systemy obiektowe różnią się w dużym stopniu.

  • Dziedziczenie wielokrotne:
  • Klasa jest obiektem:
    • tak: Lisp, Ruby, Python, Java (za pomocą obiektu Class), Objective-C
    • nie: C++, C#, OCaml, PHP5
  • Wszystkie obiekty wywodzą się z jednego korzenia oraz muszą posiadać nadklasę:
    • tak: Lisp, Java, C#, Ruby, Incr Tcl, Python (klasy nowego typu), Perl (klasa UNIVERSAL), Objective-C, Object Pascal
    • nie: C++, OCaml, Python (klasy starego typu), PHP5
  • Obiekt da się pytać o to, do której podklasy należy:
    • tak: Lisp, Ruby, C#, C++ (z RTTI), Java (RTTI albo mechanizm refleksji), Python, Object Pascal, Incr Tcl, Perl (metoda isa), PHP5, Objective-C
    • nie: OCaml
  • Typy generyczne (uogólnione):
    • tak: C# 2.0, Java 1.5
    • tak (przez mechanizm szablonów): C++, D
    • nie dotyczy: PHP5
  • Przeciążanie operatorów:
    • tak: Lisp, Ruby, C++, Python, C#, Perl, Object Pascal (od BDS 2006)
    • nie: Java (choć przeciążonych jest parę operatorów wbudowanych, np. + w klasie String), OCaml, Object Pascal (do BDS 2006), PHP5 (podobnie jak w Javie przeciążone są pewne operatory – wywołania składowych oraz metod, od PHP 5.2 także operacje tablicowe), Objective-C

Sprawdź też

Linki zewnętrzne

Kody pocztowe | asian dating for free | nowoczesna aranżacja wnętrz dla Twojego domu | katalog stron internetowych | bonprix katalog