Typy obiektów (wersja wideo)
-
0:01 - 0:04Znacie podstawy języka JavaScript.
-
0:04 - 0:06Pokażę wam fajne zastosowanie.
-
0:06 - 0:09Tzw. programowanie obiektowe.
-
0:09 - 0:12Zacznijmy od tego,
czemu to jest przydatne. -
0:12 - 0:17Mam program, który ulepszymy
za pomocą obiektów. -
0:17 - 0:20Teraz też jest niezły!
-
0:20 - 0:24Dwie zmienne, u góry,
przechowują literały. -
0:25 - 0:28Literał to obiekt, który już znamy:
-
0:28 - 0:33w klamrach wpisujemy nazwy
właściwości oraz wartości. -
0:34 - 0:39Tu mamy dwie zmienne z literałami,
a tu - funkcję „drawWinston”, -
0:39 - 0:41przyjmującą jeden argument.
-
0:41 - 0:46Funkcja rysuje obraz
z uwzględnieniem „x” i „y” -
0:46 - 0:48oraz właściwości obiektu;
-
0:48 - 0:52wyświetla też podpis
z przydomkiem i wiekiem. -
0:53 - 0:58U dołu mamy funkcję „drawWinston”
dla wieku nastoletniego i dorosłego. -
0:58 - 1:01Dlatego pokazuje się obraz.
-
1:01 - 1:06Super! Przyglądając się literałom,
-
1:06 - 1:11zauważymy ich podobieństwo.
-
1:11 - 1:14Mają te same właściwości
-
1:14 - 1:18i w obu może działać
ta sama funkcja „drawWinston”. -
1:18 - 1:22Zastanówmy się:
każdy literał opisuje -
1:22 - 1:23jakiś rodzaj Winstona.
-
1:24 - 1:29Jakby na świecie istniał
abstrakcyjny typ Winstona, -
1:29 - 1:32zatem każdy Winston
miałby te same właściwości -
1:32 - 1:36(przydomek, wiek,
współrzędne „x” i „y”)... -
1:36 - 1:42A my tu stworzyliśmy
tylko dwie instancje Winstona, -
1:42 - 1:45by opisać go
w szczególnej sytuacji. -
1:45 - 1:48Ten jest nastolatkiem,
a ten - dorosłym. -
1:48 - 1:51Są podobni do siebie.
-
1:52 - 1:55Bardzo wiele ich łączy.
-
1:55 - 1:57Tak zresztą działa świat.
-
1:58 - 2:01Istnieją abstrakcyjne
typy danych, np. ludzie, -
2:01 - 2:06a każdy z nas jest instancją,
z własnymi cechami. -
2:06 - 2:10W JavaScript możemy używać
technik obiektowych, -
2:10 - 2:15żeby te zmienne z Winstonem
-
2:15 - 2:18były instancjami obiektu „Winston”,
-
2:18 - 2:22i wiedziały,
że mają wspólne cechy. -
2:22 - 2:24Aby tak było, musimy...
-
2:24 - 2:28opisać ten abstrakcyjny
typ danych - „Winstona”. -
2:28 - 2:33W tym celu określimy zmienną,
by przechowywać w niej dane. -
2:33 - 2:36Piszę więc: „var Winston”,
przez wielkie „W” -
2:36 - 2:39(nazwy obiektów
zaczynamy od wielkiej litery). -
2:39 - 2:41I piszemy, że jest to równe funkcji.
-
2:42 - 2:47To funkcja specjalna,
zwana konstruktorem. -
2:47 - 2:50Zostanie przywołana zawsze,
gdy będziemy chcieli -
2:50 - 2:52stworzyć nową instancję Winstona.
-
2:52 - 2:54Chcąc stworzyć Winstona
nastoletniego -
2:54 - 2:58albo dorosłego,
przywołamy tę funkcję. -
2:58 - 3:01Będzie ona przyjmować
-
3:01 - 3:04argumenty, których potrzebuje,
-
3:04 - 3:06by stworzyć pełnego Winstona.
-
3:06 - 3:10W tym przypadku to przydomek,
wiek, „x” i „y”. -
3:11 - 3:15Skoro przyjęliśmy te argumenty,
musimy coś z nimi zrobić. -
3:15 - 3:18Trzeba przypisać
-
3:18 - 3:21te informacje do obiektu „Winston”.
-
3:21 - 3:25Użyjemy nowego specjalnego
hasła, zwanego „this” (to). -
3:26 - 3:28Będzie się odnosić
do bieżącej instancji obiektu. -
3:29 - 3:31Napiszemy: „this.nickname”,
-
3:31 - 3:35co będzie znaczyć, że właściwość
przydomka obiektu jest równa... -
3:35 - 3:38temu, co poda
funkcja konstruktor. OK? -
3:38 - 3:41A „this.age” jest równe
wprowadzonemu wiekowi; -
3:41 - 3:45„this.x” równa się
wprowadzonemu „x”, a „y”... -
3:46 - 3:48równa się wprowadzonemu „y”.
-
3:48 - 3:53Mamy abstrakcyjny typ danych,
który nazwaliśmy Winstonem, -
3:53 - 3:57a z pomocą konstruktora
możemy stworzyć nowego Winstona. -
3:57 - 4:00Spróbujmy z tego skorzystać.
-
4:00 - 4:05Znów robimy nastoletniego Winstona.
Powiemy, że jest on równy... -
4:05 - 4:07Zamiast wstawiać klamry,
-
4:07 - 4:10powiemy, że jest równy
nowemu Winstonowi. -
4:10 - 4:14Czyli staramy się stworzyć
nową instancję Winstona. -
4:14 - 4:17Wprowadzamy potrzebne informacje:
„winstonTeen”, -
4:17 - 4:2115, 20, 50. W porządku?
-
4:22 - 4:26Stary fragment możemy skasować.
Jest już niepotrzebny. -
4:27 - 4:31Stworzyliśmy nowego Winstona.
-
4:31 - 4:35Powiemy, że Dorosły Winston
równa się Nowemu Winstonowi. -
4:35 - 4:38Nazywa się Pan Wygrany,
-
4:38 - 4:39ładnie!
-
4:39 - 4:43Ma 30 lat i znajduje się
na 229 i 50. -
4:44 - 4:47Możemy skasować literał.
-
4:47 - 4:50Hura! Nasz program działa!
-
4:51 - 4:54Powiedzieliśmy tutaj:
-
4:54 - 4:58mamy abstrakcyjny
typ danych, Winstona, -
4:58 - 5:00i możemy tworzyć nowe instancje
-
5:01 - 5:04z wyjątkowymi właściwościami.
-
5:04 - 5:09Przypomnijmy sobie
właściwości w nich zawarte. -
5:09 - 5:11Trzeba o nich pamiętać.
-
5:11 - 5:14Mamy tu „this.nickname”
i „this.age”. -
5:14 - 5:18Gdyby nie było „this.age”,
-
5:18 - 5:20spójrzcie: wyskakuje „nieokreślone”.
-
5:20 - 5:23Bo tutaj, wewnątrz
funkcji „drawWinston”, -
5:23 - 5:28każdy wprowadzony obiekt
powinien mieć właściwość wieku. -
5:28 - 5:31Gdybyśmy nie powiedzieli
„this.age”, -
5:31 - 5:32nie byłoby właściwości wieku.
-
5:33 - 5:35Wpisaliśmy to do konstruktora
i nic nie zrobiliśmy. -
5:36 - 5:39Musimy przypisać wiek do obiektu
używając hasła „this”. -
5:39 - 5:41Dodajmy to z powrotem.
-
5:41 - 5:46Pomyślicie: „Jasne, twój program
śmiga, robisz niezłe rzeczy... -
5:46 - 5:51ale to wszystko dałoby się
osiągnąć starymi metodami”. -
5:51 - 5:52Teraz będzie fajnie.
-
5:52 - 5:56Każdy Winston przechodzi
przez tego samego konstruktora. -
5:56 - 6:01Gdybyśmy chcieli, możemy zmienić
to i owo o Winstonie. -
6:01 - 6:03O wszystkich Winstonach tutaj.
-
6:03 - 6:06Przy wieku napiszemy „ile lat”.
-
6:06 - 6:08Umieszczamy to tu
-
6:08 - 6:12i każdy Winston mówi:
„15 lat”, „30 lat” itd. -
6:13 - 6:15To jego specyfika,
-
6:15 - 6:17ale instancje mają też
cechy wspólne. -
6:17 - 6:21Świetne w programowaniu
obiektowym jest to... -
6:21 - 6:23że istnieją rodzaje obiektów,
-
6:23 - 6:26a my możemy tworzyć
ich instancje. -
6:26 - 6:30Czasami są podobne,
np. mają te same własciwości, -
6:30 - 6:35ale są też różnice, np. „ta właściwość
przybiera inną wartość niż ta druga”. -
6:36 - 6:39Możemy jednak zrobić to samo,
-
6:39 - 6:43przywołać te same funkcje
i użyć ich w podobny sposób. -
6:43 - 6:46To są zalety
programowania obiektowego, -
6:46 - 6:48ale zobaczycie: można więcej!
-
6:49 - 6:50Oglądajcie dalej!
- Title:
- Typy obiektów (wersja wideo)
- Description:
-
To tylko zapis naszych interaktywnych sesji poświęconych kodowaniu, stworzony by ułatwić ich przełożenie na inne języki. Polecamy obejrzenie tych sesji bezpośrednio pod adresem: https://pl.khanacademy.org/cs/programming/
- Video Language:
- English
- Duration:
- 06:51
Lech Mankiewicz edited Polish subtitles for Object Types (Video Version) | ||
Lech Mankiewicz edited Polish subtitles for Object Types (Video Version) |