Return to Video

Typy obiektów (wersja wideo)

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

This is just a screen grab of our interactive coding talk-through, prepared to make captioning and translation easier. It is better to watch our talk-throughs here:
https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
06:51

Polish subtitles

Revisions Compare revisions