< Return to Video

Успадковування об'єктами (відео версія)

  • 0:01 - 0:03
    Ми повертаємось до нашої програми, що
    створює Вінстонів
  • 0:03 - 0:08
    але я додала новий тип об'єкту Хоппер, так
    як він почував себе трішки
  • 0:08 - 0:12
    покинутим, зараз я визначаю Хоппера таким
    самим способом як і Вінстона, ви знаєте
  • 0:12 - 0:16
    починаючи з конструктивної функції і
    присвоюючи такі ж властивості і тоді малюю
  • 0:16 - 0:20
    а потім draw функцію. А після цього,
    я додала інший метод, що називається
  • 0:20 - 0:24
    Ура![Hooray] так як Хоппер дійсно святкує
    а Вінстон насправді
  • 0:24 - 0:28
    не зовсім. Зараз, вкінці функції ми
    створили
  • 0:28 - 0:31
    два нових об'єкти Хоппер: Маленький Хоппер
    та Великий Хоппер
  • 0:31 - 0:35
    і намалювати їх, і ввели, що один говорить
    Ура іншому
  • 0:36 - 0:38
    Так що це дуже акуратно
  • 0:38 - 0:40
    Зараз, якщо поглянемо на цей код ось тут
  • 0:40 - 0:43
    ви можете помітити дещо цікаве. Те, що
  • 0:43 - 0:49
    код для Хоппера дуже подібний на код для
    Вінстона. Частково виглядає як конструктор
  • 0:49 - 0:53
    Я не знаю, чи ви пам'ятаєте, але цей код в
    загальному точно такий же як для
  • 0:53 - 0:55
    функції конструктора Вінстона
  • 0:55 - 1:01
    І ця функція talk[говорити] має точно
    такий код, як наша функція talk Вінстона
  • 1:01 - 1:04
    і вони також обидва мають функції
    draw[малювання]
  • 1:04 - 1:07
    Отже, у них є багато спільних речей у цих
    двох видах об'єктів
  • 1:07 - 1:11
    і це тому, що, ну знаєте, Хоппер і Вінстон
    дуже подібіні об'єкти
  • 1:11 - 1:17
    у нашому світі. І якщо ви задумаєтесь про
    реальний світ за межами комп'ютера
  • 1:17 - 1:21
    більшість об'єктів поділяють деякі
    загальні риси з іншими об'єктами.
  • 1:21 - 1:24
    Як в тваринному світі. Всі тварини
  • 1:24 - 1:28
    подібні в деяких моментах. І потім у нас
    тип, що відрізняться від тварин,
  • 1:28 - 1:32
    як люди. І люди поділяють ці спільні риси
  • 1:32 - 1:34
    але також мають свої власні, неповторні
    риси.
  • 1:34 - 1:35
    Отже, ми можемо сказати, що
  • 1:35 - 1:42
    тварина це тип об'єкта, від якого людський
    тип успадковує функціональність.
  • 1:42 - 1:45
    Ми не почнемо повністю з нуля ми додамо
    зверху функціональність, що ми
  • 1:45 - 1:49
    отримуємо будучи твариною. Наприклад всі
    тварини видають звуки
  • 1:49 - 1:51
    а люди розмовляють мовою.
  • 1:51 - 1:55
    Таким чином, це поняття
    успадкування об'єкта
  • 1:55 - 1:57
    є також корисним і в програмуванні також.
  • 1:57 - 2:00
    І ми можемо створити ланцюг успадковування
    об'єктів в нашому Javascript.
  • 2:00 - 2:03
    Отже. щоб зробити це, коли ви думаєте
  • 2:03 - 2:04
    про спільні риси наших об'єктів.
  • 2:04 - 2:07
    І слід придумати ім'я для цього
  • 2:07 - 2:09
    так як ми створюємо новий тип об'єкта,
  • 2:09 - 2:11
    що представляє основний об'єкт
  • 2:11 - 2:12
    тому, назвемо їх істотами
  • 2:12 - 2:14
    Вони обоє істоти.
  • 2:14 - 2:18
    Отже, введемо var creature =. а зараз нам
    потрібна функція конструктора
  • 2:18 - 2:22
    Тому, давайте поцупимо те, що є у Хоппера
    і теж саме у Вінстона.
  • 2:22 - 2:24
    Гаразд
  • 2:24 - 2:27
    І тоді... подивимось
  • 2:27 - 2:28
    Зараз нам потрібно..
  • 2:28 - 2:30
    Що ми хочемо робити далі?
  • 2:30 - 2:32
    Можливо ми хочемо додати функцію "talk" до
    нього
  • 2:32 - 2:37
    Отже, для функії "talk", ми скопіюємо її з
    Хоппера. Але звісно нам потрібно мати її
  • 2:37 - 2:38
    в об'єкті істоти.
  • 2:40 - 2:41
    Гаразд, класно.
  • 2:41 - 2:45
    Отже, зараз у нас є тип об'єкту істота.
  • 2:46 - 2:49
    але нам потрібно насправді ввести
    Хопперу, що йому насправді слід
  • 2:49 - 2:52
    базувати свою функціональність, по
    істоті.
  • 2:52 - 2:59
    Тому, ми можемо зробити це, пишучи рядок
    тут. Введемо Hopper.prototype
  • 2:59 - 3:04
    = object.create(creature.prototype
  • 3:05 - 3:10
    Те, що ця лінія робить, це говорить
    Javascript основувати прототип Хоппера,
  • 3:10 - 3:14
    тому, основа всієї функціональності
    Хоппера відокремлена від прототипу істоти.
  • 3:14 - 3:21
    І тоді це означає, що кожен раз, коли вона
    шукає функції в Хоппера це буде в
  • 3:21 - 3:22
    прототипі Хоппера
  • 3:22 - 3:26
    спочатку, але потім, якщо не знайде це,
    вона пошукає, в прототипі істоти
  • 3:26 - 3:29
    І це те, що назвиваємо ланцюжком
    прототипів
  • 3:29 - 3:34
    Тепер, коли ми зробили це, ми наспрадві
    змогли б видалити функцію talk
  • 3:34 - 3:36
    В Хоппера
  • 3:36 - 3:38
    Так як вона вже існує в істоти.
  • 3:38 - 3:40
    Що є ланцюжком прототипів.
  • 3:40 - 3:42
    Готові?
  • 3:42 - 3:44
    Це працює!
  • 3:44 - 3:47
    І це працює так як воно находить це в
    прототипі істоти.
  • 3:49 - 3:51
    Що ж, пробуємо видалити Вінстона також.
  • 3:54 - 3:58
    Гаразд. Це не спрацювало, вона говорить,
    об'єкт не має ніякого методу говорити.
  • 3:58 - 4:01
    І саме це так? Ну у нас є наш
    конструктор Вінстона
  • 4:01 - 4:04
    і функція draw і ми забрали функцію talk.
  • 4:04 - 4:07
    Ну, ви помітили, що ми забули ввести
    насправді, щоб прототип Вінстон, базувався
  • 4:07 - 4:09
    на прототипі істота.
  • 4:09 - 4:11
    Отже. нам потрібно саме цей дуже важливий
    рядок.
  • 4:11 - 4:13
    Winston.prototype=object.create
  • 4:13 - 4:15
    creature.portotype.
  • 4:18 - 4:19
    Тада!
  • 4:19 - 4:20
    І зверніть увагу на дещо важливе.
  • 4:20 - 4:26
    У мене цей рядок після функції конструктор
    але перед тим, ніж я що-небудь додам до
  • 4:26 - 4:27
    прототипу Вінстона.
  • 4:27 - 4:29
    Так що, це зазвичай, те, що ви хочете
    зробити.
  • 4:29 - 4:30
    Ви хочете сказати це так само
  • 4:30 - 4:34
    як ви негайно починаєте, це те,
    на чому ваш початковий прототип буде
  • 4:34 - 4:37
    заснований. І тоді ми продовжимо додавати
    більше матеріалу до цього прототипу
  • 4:37 - 4:42
    Тому що може бути щось унікальними у
    Вінстона або неповторним в Хоппера
  • 4:42 - 4:43
    чого немає в істот.
  • 4:43 - 4:45
    І це однозначно класно, що ви можете
    визначити це.
  • 4:46 - 4:50
    Гаразд. Зараз, якщо поглянемо на це, у нас
    все ще є трохи коду, що повторюється
  • 4:50 - 4:52
    Код конструктора.
  • 4:52 - 4:53
    Чи не так? У нас він всі три рази.
  • 4:53 - 4:57
    Чи ми зможемо його видалити?
  • 4:58 - 4:59
    Спробуємо.
  • 5:00 - 5:04
    Добре...щось не виглядає так, що це працює
  • 5:04 - 5:07
    Тому що наш Хоппер з'явився у верхньому
    лівому кутку, ніби він забув все про себе.
  • 5:07 - 5:12
    І це тому, що Javascript не припускав, що
    ви хочете, один і той же конструктор,
  • 5:12 - 5:15
    навіть якщо ви хочете, мати прототип
    на його основі.
  • 5:15 - 5:19
    Ви знаєте, це дозволяє вам визначити свій
    власний конструктор для цих об'єктів.
  • 5:19 - 5:26
    Але це також дає вам справді простий
    спосіб викликати конструктор з об'єкта
  • 5:26 - 5:35
    І спосіб, яким ми зробимо це, ми напишемо
    creature.callthis,nickname,age,x,y
  • 5:35 - 5:41
    Тепер, що це робить (Зверніть увагу, це
    спрацювало.) І те що це зробило, це
  • 5:41 - 5:44
    насправді викликає функції істоти,
    та функції конструктора.
  • 5:44 - 5:49
    Це викликає цю функцію, але вона проходить
    і говорить добре, ви повинні викликати
  • 5:49 - 5:54
    цю функцію конструктора, так як якщо б це
    викликалось з об'єкта Хоппер.
  • 5:54 - 5:57
    і, ніби вона викликається з
    цими аргументами.
  • 5:57 - 5:59
    Ці аргументи з яким Хоппер викликається.
  • 5:59 - 6:04
    І це завершить тільки виконання цього коду
    так якщо б він був тут.
  • 6:04 - 6:06
    Це саме те, що ми хочемо. І це спрацювало.
  • 6:06 - 6:09
    І ми можемо рухатись далі і
  • 6:09 - 6:13
    скопіювати цей рядок до конструктора
    Вінстона також.
  • 6:15 - 6:17
    І це працює. Ура!
  • 6:17 - 6:21
    Гаразд. Так що перевіримо це. Ми коротко
    виклали всі наші загальні властивості
  • 6:21 - 6:25
    і функціональні можливості в цьому
    одному типі базового об'єкта, істота
  • 6:25 - 6:28
    І ми зробили два об'єкти, які поширюються
    від цього основного об'єкта.
  • 6:28 - 6:31
    Вони успадкували деякі функціональні
    можливості але і додали свої власні.
  • 6:32 - 6:36
    І здорово, те що ми можемо змінити
    загальну функціональність в одному місці.
  • 6:36 - 6:40
    Наприклад якби ми хотіли змінити вік знову
    ми могли б ввести плюс років [+ yrs old]
  • 6:41 - 6:43
    Тепер у кожного є "роки" в кінці.
  • 6:44 - 6:51
    Або ми могли б змінити функції "talk" і
    буде як "Вау". А тепер обидва Вінстони та
  • 6:51 - 6:52
    Хоппери кажуть "Суп"
  • 6:53 - 6:57
    Так що тепер, ви побачили, як створювати
    типи об'єктів і успадковування від них
  • 6:57 - 6:59
    ви можете почати думати про те, як це
    могло б бути корисним у ваших
  • 6:59 - 7:01
    малюках, анімацій, моделюванні та іграх.
  • 7:01 - 7:05
    Наприклад, може бути, у вас є гра, і у вас
    є багато типів героїв в ньому
  • 7:05 - 7:08
    і всі вони можуть бігти, але тільки деякі
    з них можуть стрибати.
  • 7:08 - 7:12
    Це ідеальне місце, від деяких типів
    об'єктів і деякого успадковування.
  • 7:12 - 7:15
    Але я впевнена, ви можете придумати безліч
    більше способів також.
Title:
Успадковування об'єктами (відео версія)
Description:

Це просто показ екрану нашої інтерактивної бесіди щодо кодування, готової щоб полегшити створення перекладу і субтитрів. Краще дивитися наші бесіди тут:
https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
07:17
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 6:06 AM
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 5:56 AM
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 5:49 AM
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 5:38 AM
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 5:37 AM
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 5:30 AM
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 5:22 AM
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) May 21, 2016, 5:19 AM
Show all

Ukrainian subtitles

Incomplete

Revisions

  • Revision 12 Edited
    Іван Соломаха May 21, 2016, 6:06 AM