Return to Video

Métodos de Objeto (Versão Vídeo)

  • 0:00 - 0:03
    No último vídeo, nós aprendemos
    como fazer um tipo de objeto
  • 0:03 - 0:06
    para representar nossos dois
    objetos do tipo Winston
  • 0:06 - 0:09
    e então os inicializamos
    com os construtores.
  • 0:10 - 0:13
    Um tipo de objeto não deve apenas
    ser associado com propriedades.
  • 0:14 - 0:16
    Também pode ser associado
    com funcionalidades.
  • 0:16 - 0:21
    Pense no mundo e em todos os tipos
    objetos que ele contem, como nós, humanos.
  • 0:21 - 0:22
    Todos nós possuímos alturas e idades,
  • 0:22 - 0:25
    mas também possuímos
    coisas que podemos fazer,
  • 0:25 - 0:27
    como dormir, comer e programar.
  • 0:27 - 0:31
    E nós queremos poder associar
    essas funções com os tipos de objeto.
  • 0:31 - 0:35
    Neste programa, que é o mesmo
    que deixamos de lado na última vez,
  • 0:35 - 0:36
    nós temos uma função aqui,
  • 0:36 - 0:39
    drawWinston, que podemos chamar
    nos dois objetos Winston.
  • 0:40 - 0:45
    Não ficaria melhor se pudéssemos
    anexar isso ao tipo de objeto Winston?
  • 0:46 - 0:48
    Bem, nós podemos, e é fácil de se fazer.
  • 0:49 - 0:51
    Então, embaixo do nosso construtor,
  • 0:51 - 0:55
    escreveremos Winston, com W
    maiúsculo, ponto prototype,
  • 0:55 - 0:57
    e o prototype, essa é uma palavra nova
  • 0:57 - 1:00
    a qual provavelmente você
    ainda não tinha visto antes.
  • 1:00 - 1:06
    E o prototype é uma propriedade de
    objeto que podemos anexar funções.
  • 1:06 - 1:09
    E isso irá significar que todo o objeto,
  • 1:09 - 1:13
    que seja um instância desse,
    terá essas funções nele.
  • 1:13 - 1:16
    Então nós podemos dizer
    ponto prototype e então ponto,
  • 1:16 - 1:20
    e depois o nome da função,
    então escrevemos draw,
  • 1:20 - 1:25
    igual, e então pegamos nosso
    código drawWinston
  • 1:25 - 1:29
    e podemos colocá-lo aqui
    dentro. Tudo bem,
  • 1:29 - 1:33
    então o que fizemos foi
    anexar uma função draw
  • 1:33 - 1:35
    ao nosso protótipo de Winston.
  • 1:35 - 1:37
    E isso significa que poderemos
    chamar draw()
  • 1:37 - 1:40
    em qualquer objeto do tipo Winston.
  • 1:40 - 1:45
    Muito bem, então poderemos chamar
    draw() em winstonTeen ou winstonAdult.
  • 1:45 - 1:50
    E quando temos um função desse tipo,
    que podemos chamar um objeto,
  • 1:50 - 1:54
    nós chamamos de "método", então você
    pode me escutar falar "método" agora.
  • 1:54 - 1:58
    Então vamos dizer que isso é
    "um método de desenhar". Okay.
  • 1:58 - 2:01
    Então agora nós iremos
    deletar isso, e isso,
  • 2:01 - 2:05
    e agora veremos se
    podemos chamar draw().
  • 2:05 - 2:07
    winstonTeen.draw()
  • 2:07 - 2:10
    Okay. Temos um erro,
    nós tivemos esse erro aqui,
  • 2:10 - 2:14
    então ele diz:
    "winstObject não está definido"
  • 2:14 - 2:19
    Okay. Então antes, nós estávamos passando
    esse argumento dentro de drawnWinston,
  • 2:19 - 2:22
    o qual possui o objeto Winston,
  • 2:22 - 2:24
    mas agora não estamos
    passando mais.
  • 2:24 - 2:26
    Hum, então, poderíamos mudar
    isso para que passasse
  • 2:26 - 2:31
    e, vamos ver, o que passaremos aqui?
    Temos que passar winstonTeen. Okay?
  • 2:31 - 2:34
    Isso funcionou, mas
    também parece muito bobo.
  • 2:34 - 2:38
    Eu já estou chamando
    draw no próprio objeto.
  • 2:38 - 2:44
    Eu não deveria ter que passar o objeto
    também. Isso parece redundante.
  • 2:44 - 2:46
    E isso é verdade, não
    deveríamos ter que fazer isso,
  • 2:46 - 2:49
    então vamos deletar isso
    aqui e agora vamos pensar.
  • 2:49 - 2:51
    Se nós estamos dentro do objeto,
  • 2:51 - 2:54
    o que poderíamos usar para
    acessar as propriedades do objeto.
  • 2:54 - 2:56
    Bem, você poderia dar uma
    olhada no nosso construtor,
  • 2:56 - 3:01
    e lembre-se da palavra-chave
    especial "this" (este) e pense " ahh "
  • 3:01 - 3:09
    "E se trocarmos this, por isto?" [risos]
    Então trocamos winstObject por "this"
  • 3:09 - 3:13
    Porque agora nós já estamos dentro de
    um objeto. Essa função está sendo avaliada
  • 3:13 - 3:17
    no objeto, então o "this"
    irá se referir ao objeto atual.
  • 3:17 - 3:20
    Dessa maneira
    podemos dizer "this"
  • 3:20 - 3:24
    e teremos acesso a todas as
    propriedades deste objeto atual.
  • 3:24 - 3:27
    E isso realmente funciona, viu?
    Não é legal?
  • 3:27 - 3:32
    Então agora podemos
    dizer winstonAdult.draw()
  • 3:32 - 3:36
    Ta-da! E isso irá acessar as
    propriedades do winstonAdult
  • 3:36 - 3:39
    porque é o objeto que
    está sendo chamado.
  • 3:39 - 3:42
    Então isso é o que é realmente
    legal sobre esse palavra-chave "this",
  • 3:42 - 3:45
    mesmo que seja confuso algumas vezes.
  • 3:45 - 3:50
    Muito bem, isso foi muito divertido,
    então vamos adicionar outro método.
  • 3:50 - 3:52
    Okay, então, o que mais
    o Winston pode fazer?
  • 3:52 - 3:57
    Talvez ele irá falar. Então nós
    faremos um Winston.prototype.talk,
  • 3:57 - 4:01
    assim nós poderemos anexar quantos
    métodos nós quisermos ao prototype.
  • 4:01 - 4:06
    Então nós iremos dizer "Eu sou Winston!"
  • 4:06 - 4:12
    E depois nós iremos dizer
    this.x+20, e this.y+150.
  • 4:12 - 4:20
    E então, nada aconteceu, mas isso foi
    porque ainda não chamei a função.
  • 4:20 - 4:25
    Então, vamos fazer o teen talk,
    winstonTeen.talk(). Okay.
  • 4:25 - 4:30
    Eu sou Winston, ta-da!
    E depois winstonAdult.talk()
  • 4:30 - 4:33
    Ta-da! Muito bem,
  • 4:33 - 4:35
    então agora temos esse
    tipo de objeto Winston
  • 4:35 - 4:39
    que possui propriedades:
    apelido, idade, x, y;
  • 4:39 - 4:42
    e possui funcionalidades:
    comportamentos, métodos;
  • 4:42 - 4:45
    que se comportam diferente
    dependendo das propriedades
  • 4:45 - 4:49
    e podemos criar quantas instâncias
    de Winstons nós quisermos
  • 4:49 - 4:51
    e chama qualquer desses métodos nele.
  • 4:51 - 4:52
    Bem legal, né?
  • 4:52 - 4:54
    Legendado por [Gabriel Mello Fernandes]
Title:
Métodos de Objeto (Versão Vídeo)
Description:

Esta é apenas uma captura de tela da programação interativa do talk-through, preparado para fazer legendas e traduções mais fáceis. É melhor assistir nossos talk-throughs aqui:

https://www.khanacademy.org/cs/programming/

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

Portuguese, Brazilian subtitles

Revisions