Return to Video

Metody obiektowe (wersja wideo)

  • 0:01 - 0:04
    Już wiemy, jak stworzyć typ obiektu
  • 0:04 - 0:06
    i dwa obiekty winstonokształtne,
  • 0:06 - 0:09
    a potem uruchomić je konstruktorami.
  • 0:10 - 0:14
    Typ obiektu nie musi być
    kojarzony z właściwościami.
  • 0:14 - 0:16
    Może mieć też funkcjonalność.
  • 0:16 - 0:19
    Pomyślcie o świecie
    i typach obiektów w nim.
  • 0:19 - 0:20
    Weźmy np. ludzi.
  • 0:20 - 0:22
    Wszyscy mamy wzrost i wiek,
  • 0:22 - 0:26
    wykonujemy też czynności:
    śpimy, jemy, programujemy.
  • 0:26 - 0:29
    Chcemy skojarzyć te funkcje
  • 0:29 - 0:31
    z typami obiektów.
  • 0:31 - 0:34
    Poprzedni odcinek skończyliśmy tak:
  • 0:35 - 0:37
    mamy funkcję „drawWinston”,
  • 0:37 - 0:40
    którą przywołujemy
    przy obu obiektach „Winston”.
  • 0:40 - 0:43
    Czy nie byłoby świetnie
    przyłączyć ją
  • 0:43 - 0:45
    do typu obiektu „Winston”?
  • 0:46 - 0:48
    Można to zrobić z łatwością.
  • 0:49 - 0:52
    Pod konstruktorem napiszemy:
    „Winston”...
  • 0:52 - 0:55
    (wielkie „w”), „. prototype”.
  • 0:56 - 0:59
    Słowa „prototype” jeszcze
    w programowaniu nie widzieliście.
  • 0:59 - 1:04
    To właściwość obiektu,
  • 1:04 - 1:06
    do której możemy dołączać funkcje.
  • 1:06 - 1:10
    A każda instancja tego obiektu
  • 1:10 - 1:13
    będzie powiązana z tymi funkcjami.
  • 1:13 - 1:16
    Piszemy „.prototype”,
    potem jest kropka,
  • 1:16 - 1:19
    a po niej nazwa funkcji, np. „draw”.
  • 1:19 - 1:23
    Dalej znak równości i możemy wziąć
  • 1:23 - 1:24
    kod „drawWinston”,
  • 1:25 - 1:27
    który umieścimy tutaj.
  • 1:29 - 1:33
    Przypisaliśmy funkcję „draw”
  • 1:33 - 1:35
    do prototypu Winstona.
  • 1:35 - 1:37
    Możemy przywoływać funkcję „draw”
  • 1:37 - 1:40
    do każdego obiektu
    typu Winstona.
  • 1:40 - 1:44
    Powinno to działać przy nastoletnim
    i dorosłym Winstonie.
  • 1:45 - 1:49
    Funkcję, którą możemy
    przywołać do obiektu,
  • 1:49 - 1:51
    nazywamy metodą.
  • 1:51 - 1:54
    Będę używać tego słowa.
  • 1:55 - 1:58
    To jest metoda rysowania.
    W porządku.
  • 1:58 - 2:01
    Skasujemy to i to...
  • 2:01 - 2:04
    Spróbujmy przywołać „draw”.
  • 2:04 - 2:06
    Mamy: „winstonTeen.draw”.
  • 2:07 - 2:10
    Wyskoczył komunikat błędu.
  • 2:10 - 2:14
    „WinstObject niezdefiniowany”.
    No dobrze.
  • 2:15 - 2:18
    Wcześniej wprowadzaliśmy
    ten argument do „drawWinston”,
  • 2:19 - 2:21
    czyli do obiektu „Winston”.
  • 2:21 - 2:23
    Już tego nie robimy.
  • 2:23 - 2:26
    Możemy to zmienić,
  • 2:26 - 2:28
    i co tu wprowadzimy?
  • 2:29 - 2:31
    Trzeba dać „winstonTeen”. OK.
  • 2:31 - 2:34
    Udało się, ale to głupie.
  • 2:34 - 2:38
    Przywołuję funkcję „draw”
    do obiektu,
  • 2:38 - 2:42
    więc nie powinnam dodatkowo
    obiektu wprowadzać!
  • 2:42 - 2:43
    Dwa razy to samo!
  • 2:44 - 2:46
    Nie powinniśmy tego robić.
  • 2:46 - 2:48
    Skasujmy to więc i pomyślmy.
  • 2:49 - 2:51
    Gdy jesteśmy wewnątrz obiektu,
  • 2:51 - 2:54
    jak dostać się do jego właściwości?
  • 2:54 - 2:56
    Spójrzmy na konstruktora.
  • 2:57 - 2:59
    Przypomnijmy sobie
    hasło „this”. Aha!
  • 3:00 - 3:03
    A gdybyśmy zmienili to w to?
  • 3:04 - 3:07
    Zmieniamy „winstObject”
    w „this”.
  • 3:08 - 3:11
    Jesteśmy wewnątrz obiektu.
  • 3:11 - 3:14
    Ta funkcja łączy się z obiektem;
  • 3:14 - 3:17
    „this” odnosi się
    do obiektu bieżącego.
  • 3:17 - 3:19
    Możemy więc napisać „this”
  • 3:19 - 3:23
    i zyskamy dostęp do wszystkich
    właściwości bieżącego obiektu.
  • 3:23 - 3:26
    Udało się! Świetnie, prawda?
  • 3:27 - 3:30
    Teraz napiszmy:
    „winstonAdult.draw”.
  • 3:32 - 3:36
    Jest! Mamy dostęp
    do właściwości „winstonAdult”,
  • 3:36 - 3:38
    bo ten obiekt został przywołany.
  • 3:38 - 3:41
    To jest rewelacyjne w haśle „this”.
  • 3:41 - 3:44
    Chociaż czasami trudno je wymówić.
  • 3:46 - 3:49
    Było wesoło, więc dodajmy
    kolejną metodę.
  • 3:50 - 3:52
    Co jeszcze może robić Winston?
  • 3:52 - 3:54
    Niech mówi.
  • 3:54 - 3:56
    Dajmy: „Winston.prototype.talk”.
  • 3:56 - 4:00
    Do prototypu możemy dodać
    tyle metod, ile chcemy.
  • 4:00 - 4:05
    Napiszmy: „Jestem Winston!”.
  • 4:05 - 4:09
    A potem jeszcze: „this.x+20”
  • 4:09 - 4:12
    i „this.y+150”.
  • 4:13 - 4:16
    Nic się nie wydarzyło,
  • 4:16 - 4:20
    bo jeszcze nie przywołałam funkcji.
  • 4:20 - 4:21
    Niech nastolatek mówi.
  • 4:21 - 4:24
    „winstonTeen.talk”.
    Gada cały czas.
  • 4:25 - 4:30
    „Jestem Winston!”.
    A teraz niech mówi dorosły.
  • 4:30 - 4:32
    Hura!
  • 4:32 - 4:35
    Mamy teraz typ obiektu „Winston”
  • 4:35 - 4:38
    z właściwościami: nazwą,
    wiekiem, „x” i „y”.
  • 4:38 - 4:40
    I jest funkcjonalny.
  • 4:40 - 4:45
    Zachowuje się różnie
    w zależności od właściwości.
  • 4:45 - 4:48
    Możemy stworzyć tyle
    instancji Winstona, ile chcemy,
  • 4:48 - 4:51
    i przywołać dowolną z metod.
  • 4:51 - 4:53
    Nieźle, co?
Title:
Metody obiektowe (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/

more » « less
Video Language:
English
Duration:
04:54

Polish subtitles

Revisions