Model obiektu w JavaScript

Podobne dokumenty
Wzorce projektowe kreacyjne

Wzorce projektowe strukturalne cz. 1

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

Programowanie Obiektowe

Listy i operacje pytania

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Lab. 02: Algorytm Schrage

Subversion - jak dziaªa

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Filozoa Clojure. Mateusz Dereniowski. 15 lipca Instytut Informatyki Uniwersytetu Wrocªawskiego

Kompozycja i dziedziczenie klas

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

1 Bª dy i arytmetyka zmiennopozycyjna

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Algorytmy zwiazane z gramatykami bezkontekstowymi

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Podstawy statystycznego modelowania danych Analiza prze»ycia

Lekcja 9 Liczby losowe, zmienne, staªe

Ukªady równa«liniowych

Programowanie wspóªbie»ne

Przewodnik u»ytkownika

Makroekonomia Zaawansowana

2 Liczby rzeczywiste - cz. 2

Programowanie obiektowe w Perlu

Wykªad 4. Funkcje wielu zmiennych.

19. Obiektowo± 1 Kacze typowanie. 2 Klasy

Programowanie wspóªbie»ne

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Podstawy matematyki dla informatyków

Programowanie wspóªbie»ne

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Numeryczne zadanie wªasne

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Wst p do sieci neuronowych 2010/2011 wykªad 7 Algorytm propagacji wstecznej cd.

Dyskretyzacja i kwantyzacja obrazów

Aplikacje w środowisku Java

PROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.

x y x y x y x + y x y

Programowanie obiektowe w C++ Wykªad 4

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

2. L(a u) = al( u) dla dowolnych u U i a R. Uwaga 1. Warunki 1., 2. mo»na zast pi jednym warunkiem: L(a u + b v) = al( u) + bl( v)

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

Metody numeryczne i statystyka dla in»ynierów

1 Metody iteracyjne rozwi zywania równania f(x)=0

Informatyka, matematyka i sztuczki magiczne

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Metody dowodzenia twierdze«

Liniowe równania ró»niczkowe n tego rz du o staªych wspóªczynnikach

Wska¹niki, tablice dynamiczne wielowymiarowe

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Matematyka dyskretna dla informatyków

Ekonometria. wiczenia 13 Metoda ±cie»ki krytycznej. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Podstawy modelowania w j zyku UML

Teoretyczne Podstawy Informatyki

Lekcja 12 - POMOCNICY

Macierze. 1 Podstawowe denicje. 2 Rodzaje macierzy. Denicja

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Przykªady problemów optymalizacji kombinatorycznej

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Podstawy matematyki dla informatyków. Funkcje. Funkcje caªkowite i cz ±ciowe. Deniowanie funkcji. Wykªad pa¹dziernika 2012

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

Funkcje wielu zmiennych

Metodydowodzenia twierdzeń

Rekurencyjne struktury danych

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Macierze i Wyznaczniki

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Uczenie Wielowarstwowych Sieci Neuronów o

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Algebra Boole'a i logika cyfrowa

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Wielomiany. El»bieta Sadowska-Owczorz. 19 listopada 2018

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Metody numeryczne. Wst p do metod numerycznych. Dawid Rasaªa. January 9, Dawid Rasaªa Metody numeryczne 1 / 9

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

O pewnym zadaniu olimpijskim

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

Metody opracowywania dokumentów wielostronicowych. Technologia Informacyjna Lekcja 28

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

WBiA Architektura i Urbanistyka. 1. Wykonaj dziaªania na macierzach: Które z iloczynów: A 2 B, AB 2, BA 2, B 2 3, B = 1 2 0

Programowanie obiektowe - 1.

Programowanie wspóªbie»ne

Fraktale i ich zastosowanie

Programowanie wspóªbie»ne

Funkcje, wielomiany. Informacje pomocnicze

Uywanie licencji typu Standalone. Japanese Using a Standalone License. Language. Contents

Teoria grafów i sieci 1 / 58

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Transkrypt:

16 marca 2009

E4X

Paradygmat klasowy Klasa Deniuje wszystkie wªa±ciwo±ci charakterystyczne dla wybranego zbioru obiektów. Klasa jest poj ciem abstrakcyjnym odnosz cym si do zbioru, a nie do pojedynczego elementu. Obiekt Jest konkretnym elementem zbioru obiektów.

Paradygmat prototypowy Prototyp W paradygmacie prototypowym nie wyst puje rozró»nienie na klasy i obiekty. Ka»dy obiekt mo»e mie zdeniowany prototyp z którego czerpie pocz tkowe warto±ci dla swoich pól. Obiektom mog by nadawane wªa±ciwo±ci w momencie ich tworzenia lub w trakcie pó¹niejszego dziaªania programu.

Deniowanie klas Klasa Klasa jest oddzielnym bytem. Deniuje pola i wyró»nion funkcj b d c konstruktorem. Prototyp Konstuktor i klasa jest tym samym. Ka»da funkcja mo»e by u»yta jako konstruktor.

Podklasy i dziedziczenie Klasa Klasa mo»e mie nadklas lub nadklasy. Jest to niezale»ne od istnienia jakichkolwiek obiektów. Prototyp Tworzymy konstruktory podklasy i nadlasy, a nast pnie mówimy,»e prototypem konstruktora podklasy, jest obiekt nadklasy.

Dodawanie i usuwanie wªa±ciwo±ci Klasa Klasa deniuje zbiór wªa±ciwo±ci, który jest niezmienny. Prototyp Wªa±ciwo±ci obiektów mo»na dodawa i usuwa w dowolnym momencie.

Podsumowanie ró»nic Klasy Klasy i obiekty to ró»ne rzeczy Denicja i konstruktor s odr bne Obiekty tworzy si przez new Istnieje hierarchia klas po nadklasie Klasa deniuje wszystkie wªa±ciwo±ci Prototyp Klasy i obiekty s tym samym Denicja i konstruktor jest tym samym Tak same Istniej prototypy po prototypie Wªa±ciwo±ci mo»na dodawa w dowolnym momencie

Przykªad Employee ma wªa±ciwo±ci name i dept Manager ma wªa±ciwo± reports WorkerBee ma wªa±ciwo± projects SalesPerson ma wªa±ciwo± quota, nadpisuje dept Engineer ma wªa±ciwo± machine, nadpisuje dept

Implementacja przykªadu

Tworzenie obiektu z prototypem Po wykonaniu mark = new WorkerBee ; mark ma nast puj ce wªa±ciwo±ci mark. name = " " ; mark. dept = " g e n e r a l " ; mark. p r o j e c t s = [ ] ; dodatkowo mark. proto wskazuje na WorkerBee.prototype

Zmiana wªa±ciwo±ci obiektu mark. bonus = 3 0 0 0 ; Employee. p r o t o t y p e. s p e c i a l t y = " none " ; E n g i n e e r. p r o t o t y p e. s p e c i a l t y = " code " ; Pole bonus ma tylko obiekt mark. Pole specialty maj wszystkie obiekty dziedzicz ce po Employee. polega na szukaniu pierwszego prototypu zawieraj cego wªa±ciwo±.

f u n c t i o n Employee ( name, dept ) { t h i s. name = name " " ; t h i s. dept = dept " g e n e r a l " ; } f u n c t i o n WorkerBee ( p r o j s ) { t h i s. p r o j e c t s = p r o j s [ ] ; } WorkerBee. p r o t o t y p e = new Employee ; przyjmuj parametry Zwró my uwag na idiom

Konstruktor - dziwny przypadek f u n c t i o n E n g i n e e r ( name, p r o j s, mach ) { t h i s. base = WorkerBee ; t h i s. base ( name, " e n g i n e e r i n g ", p r o j s ) ; t h i s. machine = mach " " ; } j a n e = new E n g i n e e r (" Doe, Jane ", [ " n a v i g a t o r ", " j a v a s c r i p t " ], " b e l a u " ) ; Employee. p r o t o t y p e. s p e c i a l t y = " none " ; jane nie ma pola specialty base to po prostu funkcja! gdyby±my mieli Engineer.prototype = new WorkerBee, to jane miaªaby specialty

Poszukiwanie wªa±ciwo±ci Algorytm poszukiwania wªa±ciwo±ci wygl da tak 1. je±li obiekt deniuje wªa±ciwo±, to j zwró 2. je±li nie, to sprawd¹ ªa«cuch prototypów (u»ywaj c proto ) 3. je±li który± obiekt w ªa«cuchu deniuje wªa±ciwo±, to zwró pierwsz z nich 4. w przeciwnym wypadku obiekt nie ma wªa±ciwo±ci

Poszukiwanie wªa±ciwo±ci - dziwny przypadek f u n c t i o n Employee ( ) { t h i s. name = " " ; } f u n c t i o n WorkerBee ( ) { } WorkerBee. p r o t o t y p e = new Employee ; amy = new WorkerBee ; Employee. p r o t o t y p e. name = "Unknown" Co to jest amy.name? A gdyby zamiast this.name = byªo Employee.prototype.name =?

Jak dziaªa instanceof? c h r i s = new E n g i n e e r (" Pigman, C h r i s ", [ " j s d " ], " f i j i " ) ; c h r i s. proto == E n g i n e e r. p r o t o t y p e ; c h r i s. proto. proto == WorkerBee. p r o t o t y p e ; c h r i s. proto. proto. proto == Employee. p r o t o t y p e ; c h r i s. proto. proto. proto. proto == O b ject. p r o t o t y p e ; c h r i s. proto. proto. proto. proto. proto == n u l l ; i n s t a n c e O f ( c h r i s, E n g i n e e r ) == t r u e i n s t a n c e O f ( c h r i s, WorkerBee ) == t r u e i n s t a n c e O f ( c h r i s, Employee ) == t r u e i n s t a n c e O f ( c h r i s, O bject ) == t r u e i n s t a n c e O f ( c h r i s, S a l e s P e r s o n ) == f a l s e instanceof sprawdza, czy funkcja jest w ªa«cuchu prototypów.

Kiedy woªany jest konstruktor? v a r i d C o u n t e r = 1 ; f u n c t i o n Employee ( ) { t h i s. i d = i d C o u n t e r ++; } f u n c t i o n Manager ( name, dept, r e p o r t s ) {... } Manager. p r o t o t y p e = new Employee ; f u n c t i o n WorkerBee ( name, dept, p r o j s ) {... } WorkerBee. p r o t o t y p e = new Employee ; f u n c t i o n E n g i n e e r ( name, p r o j s, mach ) {... } E n g i n e e r. p r o t o t y p e = new WorkerBee ; mac = new E n g i n e e r ("Wood, Mac " ) ; Po wywoªaniu tego kodu mac.id == 4

Domkni cia f u n c t i o n makefunc ( ) { v a r name = " M o z i l l a " ; f u n c t i o n displayname ( ) { a l e r t ( name ) ; } r e t u r n displayname ; } v a r myfunc = makefunc ( ) ; myfunc ( ) ; Opis Niby funkcji makefunc nie ma, a makefunc.name jest. Bo to jest domkni cie.

Domkni cia f u n c t i o n makeadder ( x ) { r e t u r n f u n c t i o n ( y ) { r e t u r n x + y ; } ; } v a r add5 = makeadder ( 5 ) ; v a r add10 = makeadder ( 1 0 ) ; p r i n t ( add5 ( 2 ) ) ; // 7 p r i n t ( add10 ( 2 ) ) ; // 12 Opis Program wy±wietli kolejno 7 i 12.

Enkapsulacja v a r Counter = ( f u n c t i o n ( ) { v a r p r i v a t e C o u n t e r = 0 ; f u n c t i o n changeby ( v a l ) { p r i v a t e C o u n t e r += v a l ; } r e t u r n { i n c r e m e n t : f u n c t i o n ( ) { changeby ( 1 ) ; }, decrement : f u n c t i o n ( ) { changeby ( 1); }, v a l u e : f u n c t i o n ( ) { r e t u r n p r i v a t e C o u n t e r ; } } } ) ( ) ; a l e r t ( Counter. v a l u e ( ) ) ; / A l e r t s 0 / Counter. i n c r e m e n t ( ) ; Counter. i n c r e m e n t ( ) ; a l e r t ( Counter. v a l u e ( ) ) ; / A l e r t s 2 / Counter. decrement ( ) ; a l e r t ( Counter. v a l u e ( ) ) ; / A l e r t s 1 /

Problemy z domkni ciami Niekiedy domkni cia zachowuj si nieintuicyjnie, zwªaszcza je±li do ich tworzenia u»ywamy p tli. Przykªad: closure_problem.html Rozwi zanie Rozwi zaniem jest u»ycie let