[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.41,0:00:03.37,Default,,0000,0000,0000,,No último vídeo, nós aprendemos\Ncomo fazer um tipo de objeto Dialogue: 0,0:00:03.37,0:00:05.86,Default,,0000,0000,0000,,para representar nossos dois\Nobjetos do tipo Winston Dialogue: 0,0:00:05.86,0:00:09.12,Default,,0000,0000,0000,,e então os inicializamos \Ncom os construtores. Dialogue: 0,0:00:09.84,0:00:13.24,Default,,0000,0000,0000,,Um tipo de objeto não deve apenas\Nser associado com propriedades. Dialogue: 0,0:00:13.69,0:00:16.16,Default,,0000,0000,0000,,Também pode ser associado\Ncom funcionalidades. Dialogue: 0,0:00:16.16,0:00:20.54,Default,,0000,0000,0000,,Pense no mundo e em todos os tipos \Nobjetos que ele contem, como nós, humanos. Dialogue: 0,0:00:20.54,0:00:22.42,Default,,0000,0000,0000,,Todos nós possuímos alturas e idades, Dialogue: 0,0:00:22.42,0:00:24.63,Default,,0000,0000,0000,,mas também possuímos \Ncoisas que podemos fazer, Dialogue: 0,0:00:24.63,0:00:26.84,Default,,0000,0000,0000,,como dormir, comer e programar. Dialogue: 0,0:00:26.84,0:00:30.54,Default,,0000,0000,0000,,E nós queremos poder associar \Nessas funções com os tipos de objeto. Dialogue: 0,0:00:30.90,0:00:34.65,Default,,0000,0000,0000,,Neste programa, que é o mesmo \Nque deixamos de lado na última vez, Dialogue: 0,0:00:34.65,0:00:36.18,Default,,0000,0000,0000,,nós temos uma função aqui, Dialogue: 0,0:00:36.18,0:00:39.37,Default,,0000,0000,0000,,drawWinston, que podemos chamar\Nnos dois objetos Winston. Dialogue: 0,0:00:40.40,0:00:44.97,Default,,0000,0000,0000,,Não ficaria melhor se pudéssemos \Nanexar isso ao tipo de objeto Winston? Dialogue: 0,0:00:45.65,0:00:48.49,Default,,0000,0000,0000,,Bem, nós podemos, e é fácil de se fazer. Dialogue: 0,0:00:48.79,0:00:50.94,Default,,0000,0000,0000,,Então, embaixo do nosso construtor, Dialogue: 0,0:00:50.94,0:00:55.37,Default,,0000,0000,0000,,escreveremos Winston, com W \Nmaiúsculo, ponto prototype, Dialogue: 0,0:00:55.37,0:00:57.26,Default,,0000,0000,0000,,e o prototype, essa é uma palavra nova Dialogue: 0,0:00:57.26,0:00:59.85,Default,,0000,0000,0000,,a qual provavelmente você \Nainda não tinha visto antes. Dialogue: 0,0:00:59.85,0:01:06.16,Default,,0000,0000,0000,,E o prototype é uma propriedade de \Nobjeto que podemos anexar funções. Dialogue: 0,0:01:06.16,0:01:08.52,Default,,0000,0000,0000,,E isso irá significar que todo o objeto, Dialogue: 0,0:01:08.52,0:01:12.51,Default,,0000,0000,0000,,que seja um instância desse, \Nterá essas funções nele. Dialogue: 0,0:01:12.51,0:01:15.90,Default,,0000,0000,0000,,Então nós podemos dizer \Nponto prototype e então ponto, Dialogue: 0,0:01:15.90,0:01:19.70,Default,,0000,0000,0000,,e depois o nome da função, \Nentão escrevemos draw, Dialogue: 0,0:01:19.70,0:01:24.71,Default,,0000,0000,0000,,igual, e então pegamos nosso \Ncódigo drawWinston Dialogue: 0,0:01:24.71,0:01:29.14,Default,,0000,0000,0000,,e podemos colocá-lo aqui \Ndentro. Tudo bem, Dialogue: 0,0:01:29.14,0:01:32.65,Default,,0000,0000,0000,,então o que fizemos foi\Nanexar uma função draw Dialogue: 0,0:01:32.65,0:01:35.00,Default,,0000,0000,0000,,ao nosso protótipo de Winston. Dialogue: 0,0:01:35.00,0:01:37.40,Default,,0000,0000,0000,,E isso significa que poderemos\Nchamar draw() Dialogue: 0,0:01:37.40,0:01:40.05,Default,,0000,0000,0000,,em qualquer objeto do tipo Winston. Dialogue: 0,0:01:40.05,0:01:45.42,Default,,0000,0000,0000,,Muito bem, então poderemos chamar\Ndraw() em winstonTeen ou winstonAdult. Dialogue: 0,0:01:45.42,0:01:49.83,Default,,0000,0000,0000,,E quando temos um função desse tipo, \Nque podemos chamar um objeto, Dialogue: 0,0:01:49.83,0:01:54.42,Default,,0000,0000,0000,,nós chamamos de "método", então você \Npode me escutar falar "método" agora. Dialogue: 0,0:01:54.42,0:01:58.23,Default,,0000,0000,0000,,Então vamos dizer que isso é \N"um método de desenhar". Okay. Dialogue: 0,0:01:58.23,0:02:01.17,Default,,0000,0000,0000,,Então agora nós iremos \Ndeletar isso, e isso,\N Dialogue: 0,0:02:01.17,0:02:04.53,Default,,0000,0000,0000,,e agora veremos se\Npodemos chamar draw(). Dialogue: 0,0:02:04.53,0:02:07.25,Default,,0000,0000,0000,,winstonTeen.draw() Dialogue: 0,0:02:07.25,0:02:10.14,Default,,0000,0000,0000,,Okay. Temos um erro, \Nnós tivemos esse erro aqui, Dialogue: 0,0:02:10.14,0:02:13.90,Default,,0000,0000,0000,,então ele diz: \N"winstObject não está definido" Dialogue: 0,0:02:13.90,0:02:18.78,Default,,0000,0000,0000,,Okay. Então antes, nós estávamos passando \Nesse argumento dentro de drawnWinston, Dialogue: 0,0:02:18.78,0:02:21.53,Default,,0000,0000,0000,,o qual possui o objeto Winston, Dialogue: 0,0:02:21.53,0:02:23.52,Default,,0000,0000,0000,,mas agora não estamos \Npassando mais. Dialogue: 0,0:02:23.52,0:02:26.31,Default,,0000,0000,0000,,Hum, então, poderíamos mudar\Nisso para que passasse Dialogue: 0,0:02:26.31,0:02:30.79,Default,,0000,0000,0000,,e, vamos ver, o que passaremos aqui? \NTemos que passar winstonTeen. Okay? Dialogue: 0,0:02:30.79,0:02:33.87,Default,,0000,0000,0000,,Isso funcionou, mas \Ntambém parece muito bobo. Dialogue: 0,0:02:33.87,0:02:38.43,Default,,0000,0000,0000,,Eu já estou chamando \Ndraw no próprio objeto. Dialogue: 0,0:02:38.43,0:02:43.62,Default,,0000,0000,0000,,Eu não deveria ter que passar o objeto\Ntambém. Isso parece redundante. Dialogue: 0,0:02:43.62,0:02:46.11,Default,,0000,0000,0000,,E isso é verdade, não \Ndeveríamos ter que fazer isso, Dialogue: 0,0:02:46.11,0:02:48.53,Default,,0000,0000,0000,,então vamos deletar isso \Naqui e agora vamos pensar. Dialogue: 0,0:02:48.53,0:02:50.66,Default,,0000,0000,0000,,Se nós estamos dentro do objeto, Dialogue: 0,0:02:50.66,0:02:53.92,Default,,0000,0000,0000,,o que poderíamos usar para \Nacessar as propriedades do objeto. Dialogue: 0,0:02:53.92,0:02:56.45,Default,,0000,0000,0000,,Bem, você poderia dar uma \Nolhada no nosso construtor, Dialogue: 0,0:02:56.45,0:03:00.86,Default,,0000,0000,0000,,e lembre-se da palavra-chave \Nespecial "this" (este) e pense " ahh " Dialogue: 0,0:03:00.86,0:03:08.73,Default,,0000,0000,0000,,"E se trocarmos this, por isto?" [risos] \NEntão trocamos winstObject por "this" Dialogue: 0,0:03:08.73,0:03:12.56,Default,,0000,0000,0000,,Porque agora nós já estamos dentro de \Num objeto. Essa função está sendo avaliada Dialogue: 0,0:03:12.56,0:03:17.03,Default,,0000,0000,0000,,no objeto, então o "this" \Nirá se referir ao objeto atual. Dialogue: 0,0:03:17.03,0:03:19.57,Default,,0000,0000,0000,,Dessa maneira \Npodemos dizer "this" Dialogue: 0,0:03:19.57,0:03:23.55,Default,,0000,0000,0000,,e teremos acesso a todas as\Npropriedades deste objeto atual. Dialogue: 0,0:03:23.55,0:03:26.93,Default,,0000,0000,0000,,E isso realmente funciona, viu? \NNão é legal? Dialogue: 0,0:03:26.93,0:03:31.92,Default,,0000,0000,0000,,Então agora podemos \Ndizer winstonAdult.draw() Dialogue: 0,0:03:31.92,0:03:35.76,Default,,0000,0000,0000,,Ta-da! E isso irá acessar as \Npropriedades do winstonAdult Dialogue: 0,0:03:35.76,0:03:38.53,Default,,0000,0000,0000,,porque é o objeto que \Nestá sendo chamado. Dialogue: 0,0:03:38.53,0:03:41.87,Default,,0000,0000,0000,,Então isso é o que é realmente \Nlegal sobre esse palavra-chave "this", Dialogue: 0,0:03:41.87,0:03:45.40,Default,,0000,0000,0000,,mesmo que seja confuso algumas vezes. Dialogue: 0,0:03:45.40,0:03:49.86,Default,,0000,0000,0000,,Muito bem, isso foi muito divertido, \Nentão vamos adicionar outro método. Dialogue: 0,0:03:49.86,0:03:52.24,Default,,0000,0000,0000,,Okay, então, o que mais \No Winston pode fazer? Dialogue: 0,0:03:52.24,0:03:56.86,Default,,0000,0000,0000,,Talvez ele irá falar. Então nós \Nfaremos um Winston.prototype.talk, Dialogue: 0,0:03:56.86,0:04:00.68,Default,,0000,0000,0000,,assim nós poderemos anexar quantos \Nmétodos nós quisermos ao prototype. Dialogue: 0,0:04:00.68,0:04:05.67,Default,,0000,0000,0000,,Então nós iremos dizer "Eu sou Winston!" Dialogue: 0,0:04:05.67,0:04:12.48,Default,,0000,0000,0000,,E depois nós iremos dizer \Nthis.x+20, e this.y+150. Dialogue: 0,0:04:12.48,0:04:19.95,Default,,0000,0000,0000,,E então, nada aconteceu, mas isso foi \Nporque ainda não chamei a função. Dialogue: 0,0:04:19.95,0:04:24.80,Default,,0000,0000,0000,,Então, vamos fazer o teen talk, \NwinstonTeen.talk(). Okay. Dialogue: 0,0:04:24.80,0:04:30.44,Default,,0000,0000,0000,,Eu sou Winston, ta-da! \NE depois winstonAdult.talk() Dialogue: 0,0:04:30.44,0:04:32.73,Default,,0000,0000,0000,,Ta-da! Muito bem, Dialogue: 0,0:04:32.73,0:04:35.20,Default,,0000,0000,0000,,então agora temos esse\Ntipo de objeto Winston Dialogue: 0,0:04:35.20,0:04:38.54,Default,,0000,0000,0000,,que possui propriedades: \Napelido, idade, x, y; Dialogue: 0,0:04:38.54,0:04:41.76,Default,,0000,0000,0000,,e possui funcionalidades: \Ncomportamentos, métodos; Dialogue: 0,0:04:41.76,0:04:44.95,Default,,0000,0000,0000,,que se comportam diferente \Ndependendo das propriedades Dialogue: 0,0:04:44.95,0:04:48.80,Default,,0000,0000,0000,,e podemos criar quantas instâncias\Nde Winstons nós quisermos Dialogue: 0,0:04:48.80,0:04:50.70,Default,,0000,0000,0000,,e chama qualquer desses métodos nele. Dialogue: 0,0:04:50.70,0:04:52.30,Default,,0000,0000,0000,,Bem legal, né? Dialogue: 0,0:04:52.30,0:04:53.51,Default,,0000,0000,0000,,Legendado por [Gabriel Mello Fernandes]