• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Programowanie obiektowe



    Podstrony: [1] 2 [3] [4]
    Przeczytaj także...
    Perl – interpretowany język programowania autorstwa Larry’ego Walla początkowo przeznaczony głównie do pracy z danymi tekstowymi, obecnie używany do wielu innych zastosowań. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych.Przeciążanie operatorów (ang. operator overloading, przeładowanie operatorów) to rodzaj polimorfizmu występującego w niektórych językach programowania, polegający na tym, że operator może mieć różne implementacje w zależności od typów użytych argumentów (operandów).
    Historia programowania obiektowego[ | edytuj kod]

    Koncepcja programowania obiektowego pierwotnie pojawiła się w Simuli 67, języku zaprojektowanym do zastosowań symulacyjnych, stworzonym przez Ole-Johana Dahla i Kristena Nygaarda z Norsk Regnesentral w Oslo. (Mówi się, że pracowali oni nad symulacjami zachowania się statków i mieli 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 różne klasy obiektów, a każda z klas sama odpowiadałaby za określanie własnych danych i zachowań.) Później koncepcja została dopracowana w języku Smalltalk, stworzonym w Simuli w Xerox PARC, ale zaprojektowanym jako w pełni dynamiczny system, w którym obiekty mogą być tworzone i modyfikowane „w locie”, a nie system oparty na statycznych programach.

    Języki interpretowane to języki programowania, które zazwyczaj implementowane są w formie interpretera, a nie kompilatora. Teoretycznie każdy język może być kompilowany i interpretowany, dlatego rozróżnienie to polega na najczęściej stosowanych rozwiązaniach, a nie zależy od cech samego języka. Program w języku interpretowanym nie jest kompilowany, lecz jest przechowywany w postaci kodu źródłowego i dopiero podczas uruchomienia wczytywany, interpretowany i wykonywany przez interpreter języka.Ada to strukturalny, kompilowany, imperatywny, statycznie typowany i obiektowy język programowania opracowany przez Jean Ichbiaha i zespół z CII Honeywell Bull w latach 70. XX wieku. Język ten wygrał konkurs zorganizowany przez Departament Obrony USA (U.S. Department of Defense – DoD), pokonując 19 innych projektów. Nazwa języka, nadana przez DoD, pochodzi od imienia lady Augusty Ady Lovelace, uważanej za pierwszą programistkę w historii.

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

    Typ – w językach programowania opis rodzaju, struktury i zakresu wartości, jakie może przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość.Szablon (ang. template) to jedno z podejść do programowania uogólnionego stosowane w językach C++ oraz D. Podobnym rozwiązaniem są typy generyczne (lub uogólnione) stosowane w językach takich jak Java, C#, Eiffel, VB .NET, Haskell.

    W tym okresie cechy obiektowe dodano do wielu języków programowania, w tym Ady, BASIC-a, Lispu, Pascala i 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ą i 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 liczne próby stworzenia języków obiektowych dostarczających jednocześnie „bezpiecznych” elementów proceduralności. Eiffel Bertranda Meyera był wczesnym przykładem dość udanego języka spełniającego te założenia; obecnie został on w zasadzie całkowicie zastąpiony przez Javę.

    OCaml znany pierwotnie jako Objective Caml to wielo-paradagmatowy język programowania oraz implementacja tego języka w postaci zestawu narzędzi i bibliotek.W językach obiektowych domieszka (ang. mixin) jest rodzajem klasy, która dostarcza określoną funkcjonalność innym klasom bez możliwości tworzenia jej obiektów. W przeciwieństwie do zwykłego dziedziczenia, domieszkowanie klasy nie jest formą specjalizacji, lecz zwykłym dostarczeniem odpowiedniej funkcjonalności. Klasa może pozyskać część lub całość funkcjonalności z jednej lub większej liczby domieszek.

    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 i języki modelowania (np. UML).

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

    SOLID - mnemonik zaproponowany przez Roberta C. Martina, opisujący pięć podstawowych założeń programowania obiektowego: zasady jednej odpowiedzialności (Single responsibility), zasady otwarte-zamknięte (Open-close), zasady podstawienia Liskov (Liskov substitution principle), zasady separacji interfejsów (Interface segregation principle) oraz zasady odwrócenia zależności (Dependency inversion principle)Programowanie proceduralne to paradygmat programowania zalecający dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje.

    Podział[ | edytuj kod]

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

  • Programowanie oparte na klasach – definiowane są klasy, czyli typy zmiennych, a następnie tworzone 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 i metody i można go rozszerzać o nowe. Spotykany raczej w językach interpretowanych, np. JavaScript.
  • Elementarna charakterystyka popularnych języków obiektowych[ | edytuj kod]

    Poniższa charakterystyka dopuszcza bardzo dużą różnorodność – i 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.

    Podprogram (inaczej funkcja lub procedura) - termin związany z programowaniem proceduralnym. Podprogram to wydzielona część programu wykonująca jakieś operacje. Podprogramy stosuje się, aby uprościć program główny i zwiększyć czytelność kodu.C# (C Sharp, dosłownie "C-krzyżyk", "cis") – obiektowy język programowania zaprojektowany przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft.
  • Dziedziczenie wielokrotne:
  • jest: C++, Incr Tcl, Lisp, Perl, Python
  • tylko interfejsy: C#, Java, Objective-C, ObjectPascal, PHP5
  • tylko metody: Ruby
  • Klasa jest obiektem:
  • tak: Java (za pomocą obiektu Class), JavaScript, Lisp, Objective-C, Python, Ruby,
  • nie: C++, C#, ObjectPascal, OCaml, PHP5
  • Wszystkie obiekty wywodzą się z jednego korzenia i muszą mieć nadklasę:
  • tak: C#, Incr Tcl, Java, Lisp, Objective-C, ObjectPascal, Perl (klasa UNIVERSAL), Python (klasy nowego typu), Ruby
  • nie: C++, OCaml, PHP5, Python (klasy starego typu)
  • Obiekt można pytać o to, do której podklasy należy:
  • tak: C++ (RTTI), C#, Incr Tcl, Java (RTTI lub mechanizm refleksji), JavaScript, Lisp, Objective-C, ObjectPascal (RTTI), Perl (metoda isa), PHP5 (mechanizm refleksji), Python, Ruby
  • nie: OCaml
  • Typy generyczne (uogólnione):
  • tak: C# 2.0, Java 1.5, ObjectPascal (Delphi 2009, FreePascal 2.2)
  • tak (przez mechanizm szablonów): C++, D
  • nie dotyczy: PHP5, JavaScript
  • Przeciążanie operatorów:
  • tak: C++, C#, Lisp, ObjectPascal (od BDS 2006), Perl, Python, Ruby
  • nie: Java (choć przeciążonych jest kilka operatorów wbudowanych, np. + w klasie String), JavaScript, Objective-C, ObjectPascal (do BDS 2006), OCaml, PHP5 (podobnie jak w Javie przeciążone są niektóre operatory – wywołania składowych i metod, od PHP 5.2 także operacje tablicowe)
  • PHP – obiektowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistym.Asembler (z ang. assembler) – termin informatyczny związany z programowaniem i tworzeniem kodu maszynowego dla procesorów. W języku polskim oznacza on program tworzący kod maszynowy na podstawie kodu źródłowego (tzw. asemblacja) wykonanego w niskopoziomowym języku programowania bazującym na podstawowych operacjach procesora zwanym językiem asemblera, popularnie nazywanym również asemblerem. W tym artykule język programowania nazywany będzie językiem asemblera, a program tłumaczący – asemblerem.


    Podstrony: [1] 2 [3] [4]



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    W językach obiektowych cecha (ang. trait) jest mechanizmem współdzielenia zachowania klas podobnym do domieszek, który pozwala ominąć część ograniczeń pojedynczego dziedziczenia. Cechy zostały opracowane w Software Composition Group na Uniwersytecie w Bernie.
    Wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego (WMIM UW, MIMUW) – wydział Uniwersytetu Warszawskiego kształcący w trybie dziennym na kierunkach:
    Język D – wieloparadygmatowy język programowania umożliwiający programowanie obiektowe, imperatywne oraz metaprogramowanie. Został opracowany przez Waltera Brighta, twórcę pierwszego natywnego kompilatora C++, Zortech C++. D powstał jako obiektowy następca języka C, jednak w przeciwieństwie do C++ zachowuje ze swoim poprzednikiem jedynie binarną kompatybilność. D posiada wiele cech obecnych w C++, a jego składnia oraz możliwości są wzorowane na Javie, C# oraz Eiffel. Pierwsza stabilna wersja języka ukazała się 2 stycznia 2007 roku. 17 czerwca 2007 roku opublikowano po raz pierwszy eksperymentalną wersję 2.0.
    Ole-Johan Dahl (ur. 12 października 1931, zm. 29 czerwca 2002) - norweski informatyk ceniony za współtworzenie koncepcji obiektowych języków programowania i opracowania języka Simula, za co wraz z Kristen Nygaardem został uhonorowany nagrodą Turinga w 2001 roku.
    Abstrakcją w programowaniu nazywamy pewnego rodzaju uproszczenie rozpatrywanego problemu, polegające na ograniczeniu zakresu cech manipulowanych obiektów wyłącznie do cech kluczowych dla algorytmu, a jednocześnie niezależnych od implementacji. W tym sensie abstrakcja jest odmianą formalizmu matematycznego. Cel stosowania abstrakcji jest dwojaki: ułatwienie rozwiązania problemu i zwiększenie jego ogólności.
    Atrybut – element składni języka programowania, który określa konkretną właściwość (znaczenie), nadaną wybranemu elementowi (obiektowi).
    Library of Congress Control Number (LCCN) – numer nadawany elementom skatalogowanym przez Bibliotekę Kongresu wykorzystywany przez amerykańskie biblioteki do wyszukiwania rekordów bibliograficznych w bazach danych i zamawiania kart katalogowych w Bibliotece Kongresu lub u innych komercyjnych dostawców.

    Reklama

    Czas generowania strony: 0.827 sek.