|
|
|
Polski Serwis Naukowy - OnLine od 1999 roku
RSS
Warto przeczytać: W dniach 25 - 29 lipca 2011 r. w Lancaster, Wlk. Brytania, odbędzie się 25. europejska konferencja nt. programowania obiektowego.
Program wydarzenia koncentrować się będzie wokół sympozjum doktoranckiego i warsztatów dla doktorantów. Zapewnią one początkującym i zaawansowanym dok... Dnia 23 stycznia 2011 r. w Austin, USA, odbędzie się konferencja pt. "Deklaratywne aspekty programowania wielordzeniowego".
Wielu producentów chipów wybiera wielordzeniowość jako sposób na zapewnienie wydajności swoim procesorom do zastosowań biurowych, przemysł... W dniach 28 - 30 września 2011 r. w Wiedniu, Austria, odbędą się 25. warsztaty nt. programowania logicznego.
Programowanie deklaratywne to zaawansowany paradygmat modelowania i rozwiązywania złożonych problemów. Zainteresowanie tą metodą specyfikacyjną wzra... W dniach 6-8 maja 2010 r. w Monachium, Niemcy, odbędzie się konferencja pt. "Siła programowania - rozwojowe źródła zdrowia i choroby".
Żywienie w czasie ciąży i niemowlęctwa może wywrzeć istotne, długoterminowe skutki na rozwój i zdrowie. Programowanie skutków żywienia we w... W dniach 23 - 25 stycznia 2013 r. w Rzymie, Włochy, odbędzie się 40. sympozjum nt. zasad języków programowania.
Język programowania to sztuczny język opracowany w celu przekazywania instrukcji maszynie. Większość języków programowania opisuje obliczenia jak...
Ostatnio na Forum:
Dyskusje
8
odp.
4
odp. Reklama:
ECMAScriptCzy wiesz że...? Ecma International (ang. European association for standardizing information and communication systems - Europejskie Stowarzyszenie na rzecz Standaryzacji Systemów Informacyjnych i Komunikacyjnych; dawniej ang. European Computer Manufacturers Association – Europejskie Stowarzyszenie Producentów Komputerów) – powstało w 1961 roku, by ustandaryzować systemy informatyczne w Europie. Członkowie ECMA to firmy produkujące, sprzedające lub rozwijające systemy informatyczne i telekomunikacyjne w Europie. Konstruktor w programowaniu obiektowym to specjalna metoda danej klasy, wywoływana podczas tworzenia jej instancji. Zadaniem konstruktora jest zainicjowanie obiektu, a w niektórych językach programowania także utworzenie obiektu. World Wide Web Consortium, w skrócie W3C, to organizacja, która zajmuje się ustanawianiem standardów pisania i przesyłu stron WWW. Została założona 1 października 1994 roku przez Tima Berners-Lee, twórcę WWW oraz autora pierwszej przeglądarki internetowej i serwera WWW. ECMAScript – ustandaryzowane przez ECMA kluczowe elementy obiektowego skryptowego języka programowania JavaScript. Specyfikacja ta oznaczona jest jako ECMA-262. ECMA-262 definiuje samą semantykę języka oraz niektóre podstawowe typy danych (String, Boolean, Number, Object itp.) i obiekty (np. Math, Array). Elementy takie jak model dokumentu lub specjalistyczne funkcje wejścia-wyjścia, obsługi GUI itp. nie wchodzą w skład specyfikacji ECMAScript, definiowane są przez inne standardy (W3C DOM) lub samych autorów konkretnych implementacji. JavaScript (JS) – obiektowy skryptowy język programowania, stworzony przez firmę Netscape, najczęściej stosowany na stronach internetowych. Pod koniec lat 90. XX wieku organizacja ECMA wydała na podstawie JavaScriptu standard języka skryptowego o nazwie ECMAScript. Głównym autorem JavaScriptu jest Brendan Eich.
Tablica asocjacyjna (tablica skojarzeniowa, mapa, słownik, ang. associative array, map, dictionary) – nazwa dla powszechnie stosowanego w informatyce abstrakcyjnego typu danych, który przechowuje pary (unikalny klucz, wartość) i umożliwia dostęp do wartości poprzez podanie klucza. Zob. JavaScript by uzyskać więcej informacji na temat różnic między teoretyczną specyfikacją ECMAScript a jej faktycznymi implementacjami. Podstawowe elementy składni wersji 3KomentarzeKomentarze w skryptach ECMAScriptu umieszcza się w sposób identyczny jak w C++. Komentarz blokowy umieszcza się między sekwencją znaków /* a */, komentarz liniowy rozpoczyna się sekwencją // a kończy znakiem końca linii: /* To jest komentarz blokowy. Zajmuje on kilka linii */ // to jest komentarz liniowy ZmienneZmienne są typowane dynamicznie. Definiowanie zmiennej polega na zwykłym przypisaniu jej wartości lub skorzystaniu z instrukcji var. Zmienne zdefiniowane poza funkcjami są dostępne w zasięgu globalnym (widoczne dla całego skryptu). Instrukcja wiążąca to instrukcja w danym języku programowania służąca uproszczeniu zapisu odwołań do pól rekordu ( struktury) lub pól i metod obiektu.
Graficzny interfejs użytkownika (ang. Graphical User Interface, GUI), często nazywany też środowiskiem graficznym – ogólne określenie sposobu prezentacji informacji przez komputer oraz interakcji z użytkownikiem, polegającego na rysowaniu i obsługiwaniu widżetów. Instrukcje sterującePodstawowe instrukcje są identyczne z instrukcjami znanymi z języków Java i C++. Instrukcja ifif (warunki) { instrukcje; } else { instrukcje; } Pętla whilewhile (warunki) { instrukcje; } Pętla do...whiledo { instrukcje } while (warunki); Pętla forfor ([instrukcje-początkowe]; [warunki]; [instrukcje-krokowe]) { instrukcje-środkowe; } Pętla for...inPętla ta przechodzi przez wszystkie pola danego obiektu (w tym elementy tablicy): Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program (czyli ciąg symboli opisujący obliczenia) oraz jakie obliczenia opisuje.
Obiektowy model dokumentu (Document Object Model, DOM) – sposób reprezentacji złożonych dokumentów XML i HTML w postaci modelu obiektowego. Model ten jest niezależny od platformy i języka programowania. for (własność in obiekt) { instrukcje; } Jest to instrukcja, która nie występuje w Javie (stosowny odpowiednik pojawił się dopiero w wersji JDK 1.5) natomiast jest dostępna w Borland Delphi 2005. W PHP5 jej odpowiednikiem jest instrukcja foreach (w PHP4 umożliwiała jedynie iterację po tablicy). W C++ można ją spotkać w dwóch odmianach: C – imperatywny, strukturalny język programowania stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu.
Garbage collection (zbieranie nieużytków) to architektura zarządzania pamięcią, w której proces zwalniania nieużywanych jej obszarów odbywa się automatycznie. Mechanizm taki stosuje się na przykład w wysokopoziomowych językach programowania, przy czym za jego obsługę nie odpowiada sam język, lecz wirtualna maszyna. Instrukcja switchTak samo jak w C, C++, PHP i Javie. switch (wyrażenie) { case wartość1: instrukcje; break; case wartość2: instrukcje; break; default: instrukcje; break; } ObiektyW ECMAScripcie wszystko jest obiektem. Podstawowym obiektem jest Object. Standard ECMA opisuje także obiekty Array (tablica), String (ciąg znaków), Number (liczba całkowita lub rzeczywista), Boolean (wartość logiczna), Function (funkcja ECMAScriptu), Date (data) i Math (operacje matematyczne). Definicja intuicyjna:
Java (wym. "dżawa") to język programowania. Programy napisane w Javie można uruchamiać na wielu urządzeniach, takich jak telefony komórkowe lub komputery oraz pod różnymi systemami operacyjnymi, przy użyciu Wirtualnej maszyny Javy, która musi być w danym środowisku zainstalowana.
Dostęp do pól i metodObiekty ECMAScriptu są tablicami asocjacyjnymi. Dostęp do pól obiektów jest możliwy przy użyciu dwóch równoważnych notacji: obiekt.pole i obiekt["pole"]. Trzecią możliwością (aczkolwiek w większości wypadków - niewygodną) jest skorzystanie z numeru danego pola: obiekt[1]. Ponieważ metody obiektu (funkcje) są jego polami, także do nich dostęp jest możliwy przy użyciu zarówno notacji z kropką, jak i notacji z nawiasami kwadratowymi. Poniższe dwie linie kodu są zatem równoważne: m.metoda1(); m["metoda1"](); Obie notacje z nawiasami kwadratowymi zwyczajowo stosuje się jednak przy korzystaniu z tablic powstałych jako obiekt Array. Dostęp do pól i metod obiektu ułatwia instrukcja wiążąca "with" obecna wcześniej w Pascalu czy Delphi. Poniższe konstrukcje są równoważne: obiekt.pole1=wartość; obiekt.pole2=wartość; i with (obiekt) { pole1=wartość; pole2=wartość; } Definiowanie własnego obiektuAby zdefiniować własny obiekt wystarczy utworzyć funkcję konstruktora: // funkcja konstruktora function MojObiekt(poleA, poleB) { this.poleA = poleA; this.poleB = poleB; function _metoda1() { alert("mojObiekt::metoda1()"); } this.metoda1 = _metoda1; function _metoda2() { alert("mojObiekt::metoda2()"); } this.metoda2 = _metoda2; } Dalsza część opisu mówi o "klasach", mimo że w przypadku ECMAScriptu 1.x pojęcie "klasy" jest nieformalne. "Klasa" oznacza tutaj zbiór obiektów utworzonych przy użyciu tego samego konstruktora. Aby utworzyć instancję klasy MojObiekt, należy skorzystać z operatora new: var m = new MojObiekt(2, 3); Podobnie jak w Javie, nowe obiekty w ECMAScripcie tworzone są na stercie. W przypadku kiedy do danego obiektu nie istnieje już żadna referencja mechanizm garbage collectora usuwa dany obiekt z pamięci. FunkcjeFunkcje w ECMAScripcie definiujemy przy użyciu słowa kluczowego function, a jej argumenty podajemy w nawiasach: function dodajDwieLiczby(a, b) { return a+b; } Funkcje są jednocześnie obiektami typu Function. Obiekt ten ma konstruktor przyjmujący jako argument ciąg znaków, powyższą funkcję można więc także zdefiniować w sposób następujący: dodajDwieLiczby = new Function("a", "b", "return a+b;"); Ostatni argument Function() jest treścią kodu funkcji, pozostałe to nazwy parametrów. Ten sposób tworzenia funkcji bywa jednak mało wydajny. Podobny sposób na deklarowanie funkcji: dodajDwieLiczby = function(a, b) { return a+b; } W przeciwieństwie do Javy ECMAScript pozwala także operować na referencjach do funkcji: function dodaj(a,b) { alert(a+b); } function odejmij(a,b) { alert(a-b); } var g = dodaj; g(7,3); // wyświetla "10" g = odejmij; g(7,3); // wyświetla "4" DziedziczenieW implementacjach ECMAScript V3 dziedziczenie realizowane jest przez prototypy. Jeśli chcemy utworzyć klasę Pochodna dziedziczącą po klasie Bazowa, ustawiamy pole Pochodna.prototype na nową instancję klasy Bazowa: function Bazowa() { this.metodaA = function() { alert("Bazowa::A()"); } this.metodaB = function() { alert("Bazowa::B()"); } } function Pochodna() { // metodaB przeciąża odpowiednią metodę z klasy Bazowa: this.metodaB = function () { alert("Pochodna::B()"); } } Pochodna.prototype = new Bazowa(); x = new Bazowa(); y = new Pochodna(); x.metodaA(); // wyświetla: "Bazowa::A()" y.metodaA(); // wyświetla: "Bazowa::A()" x.metodaB(); // wyświetla: "Bazowa::B()" y.metodaB(); // wyświetla: "Pochodna::B()" Istnieją inne sposoby na uzyskanie dziedziczenia w ECMAScripcie. Osoby przyzwyczajone do Javy lub C++ mogą zmodyfikować prototyp obiektu Object w następujący sposób: Object.prototype.extending = function (supClass) { tempObj = new supClass(); for (property in tempObj) { this[property] = tempObj[property]; } }; by później w funkcjach konstruktora korzystać z metody extending(), rozwiązującej szybko problem dziedziczenia (używamy nazwy "extending" zamiast "extends", gdyż to drugie słowo jest słowem zastrzeżonym w ECMAScripcie). Oto przykład: function Bazowa() { this.value = 5; this.metoda1 = function () { alert("Bazowa::metoda1() " + this.value); } this.metoda2 = function () { alert("Bazowa::metoda2()"); } } function Pochodna() { this.extending(Bazowa); this.metoda1 = function () { alert("Pochodna::metoda1() " + this.value); } } Ważne tylko, żeby extending() wywoływać jako pierwszą instrukcję w konstruktorze.
Obsługa wyjątkówDo obsługi wyjątków w ECMAScripcie wykorzystywana jest "klasa" Error, odpowiadająca znanej z Javy klasie Exception. Aby wyrzucić nowy wyjątek, należy skorzystać z instrukcji throw: function zrobCos() { throw new Error("Komunikat wyjątku"); } Aby obsłużyć wyjątek, należy zastosować konstrukcję try...catch...finally (przy czym finally jest opcjonalne): try { zrobCos(); } catch (wyjatek) { alert("Nastąpił wyjątek: " + wyjatek.toString()); } finally { posprzataj(); } ... throw("nastapil blad"); Linki zewnętrznePowyższa treść oraz zamieszczone w niej powiązane definicje/pojęcia - udostępniane są na licencji Creative Commons: uznanie autorstwa, na tych samych warunkach, z możliwością obowiązywania dodatkowych ograniczeń.
Zobacz szczegółowe informacje o warunkach korzystania
Wszystkie hasła znajdujące się w naszym mirrorze Wikipedii mają znaczenie informacyjne i edukacyjne. Nie mogą być traktowane jako porady. |