‫Bem vindo de volta.
‫É hora de desafio novamente, e espero que você consiga conferir todo o vídeo de herança e entender o que
‫estava acontecendo e como criar a postagem e a postagem de imagem e como eles se correlacionam, então como eles
‫estão conectados um ao outro.
‫Portanto, essa postagem de imagem é a classe de direção e posta como a classe base, porque agora o pequeno
‫desafio é criar uma nova classe chamada Video Post, que é uma classe de direção com o vídeo da propriedade seu URL
‫e duração.
‫Portanto, essas são propriedades únicas para aquela postagem de vídeo.
‫Então imagine que ainda estamos nesse tipo de coisa e temos posts normais que são apenas texto do que temos
‫ou que podem ser texto, mas qualquer outra coisa também.
‫Então temos uma postagem de imagem que também tem um URL de imagem.
‫E agora o que queremos é uma postagem de vídeo em que realmente tenhamos um URL de vídeo em vez de
‫um URL de imagem e também a duração do vídeo.
‫Então, essas são as informações que queremos ter sobre cada postagem de vídeo.
‫Portanto, agora crie os construtores necessários para criar uma postagem de vídeo ajustada ao método string de
‫acordo, porque vimos na postagem da imagem que o método de duas strings adiciona mais algumas informações com base nas
‫informações que já foram enviadas aqui.
‫Mas queremos saber ainda mais sobre a postagem do vídeo do que sobre a postagem.
‫Então, basta usar o método string e, em seguida, criar uma instância de postagem de vídeo.
‫Praticamente a mesma coisa que fizemos aqui com a postagem da imagem.
‫Basta criar um e colocá-lo no console.
‫Então, talvez eu deva adicionar isso e usar o método de duas strings nele.
‫Então, se você se sentir um verdadeiro desafio, pode ir em frente com as coisas mais avançadas.
‫Portanto, use um cronômetro e um método de retorno de chamada aqui e você pode pesquisar no Google.
‫Você pode simplesmente sim, você pode tentar fazer você mesmo ou pode pesquisar no Google.
‫Então a ideia é que nossa postagem de vídeo tenha um método chamado Play e outro que se chame Stop e um play
‫seja chamado.
‫Em seguida, eles devem escrever a duração atual do vídeo.
‫Então, a cada segundo que deve haver uma marca em qual segundo do vídeo
‫estamos no momento e, em seguida, uma parada é pressionada, o cronômetro é interrompido e também há um texto escrito, pare com isso.
‫E isso é melhor com nosso pessoal.
‫E sim, é basicamente isso.
‫Portanto, reproduza o vídeo após criar a instância e pause-o quando o usuário pressionar anarquia ou talvez pare
‫quando o usuário pressionar qualquer tecla.
‫Então, por processo, qualquer chave, quero dizer apenas que você tem uma linha vermelha aqui.
‫Portanto, basta mantê-lo simples ou arriscado melhor.
‫Portanto, mantenha as coisas simples.
‫E é isso que você vê aqui e o ajudará a criar até mesmo players de vídeo mais tarde.
‫Esse é realmente apenas um conceito básico e temporizadores de uso aqui.
‫Mas como eu disse, essa é a parte mais avançada.
‫Se você não tiver vontade de fazer isso ou se for muito difícil, tudo bem também.
‫Você pode apenas conferir o vídeo, mas eu realmente aconselho você a conferir porque ele vai te ensinar
‫como usar timers e callbacks apenas pesquisando no Google.
‫E é melhor apenas experimentar por si mesmo como está funcionando e então você definitivamente se lembrará da próxima
‫vez que quiser usar temporizadores.
‫Tudo bem.
‫Então, possivelmente, você sabe, e tente fazer este desafio.
‫Espero que você já tenha experimentado, antes de mais nada, é claro que precisamos de uma nova classe.
‫E vai ser nossa postagem de vídeo e agora essa postagem de vídeo deve herdar da postagem e aqui,
‫como eu disse, teríamos uma propriedade diferente ou na verdade duas propriedades diferentes, que não
‫tínhamos antes.
‫E um deles é o vídeo você um vídeo string protegido.
‫Você é L e é obtido um conjunto e, em seguida, a mesma coisa com o comprimento protegido int comprimento com
‫um L maiúsculo. Na melhor das hipóteses, também obter e definir.
‫Em seguida, precisamos construir.
‫Então, vamos criar um construtor aqui, um post de vídeo público e vou deixá-lo vazio novamente.
‫A mesma abordagem que tivemos em nossa postagem de imagem aqui, onde simplesmente criamos esse construtor vazio porque nenhum dos
‫construtores chama uma classe base.
‫O da postagem será chamado então aquele aqui.
‫Portanto, se tivermos uma entidade que você poste, o método post será chamado ou o construtor post será
‫chamado de padrão.
‫Mas também temos um em que realmente entregamos as informações necessárias.
‫Então, por exemplo, para uma postagem de vídeo, o que é interessante aí, bem, é por um lado o título novamente, a
‫string título e o nome de usuário.
‫Então, enviado por nome de usuário, para você é o vídeo L string, seu URL e o bool são publicados e até mesmo o comprimento para
‫comprimento também é útil aqui.
‫Tudo bem.
‫Portanto, um construtor bastante longo em termos de seus parâmetros.
‫E agora, é claro, precisamos usar esse ponto e, claro, esse DOT, obter a ID ou obter a próxima ID também
‫será necessário aqui.
‫Portanto, não queremos criar um ID que já esteja lá.
‫Queremos seguir em frente e usar a próxima ID.
‫E, como você deve se lembrar, o próximo ID definido está retornando e aumentando ou incrementando o ID da postagem
‫atual, que é uma variável estática.
‫Portanto, é exclusivo para todo o programa, o que significa que será substituído pelo novo valor ou
‫simplesmente obteremos o novo valor.
‫E sempre será apenas um ID uma vez.
‫Portanto, cada lado será único e isso é muito importante aqui.
‫Então, o título será título e, na verdade, podemos ir em frente e copiá-lo daqui porque é a
‫mesma abordagem.
‫Direito.
‫E.
‫Podemos simplesmente importar aqui e agora vamos em frente com nossos URLs exclusivos, então, hum, vídeo de propriedade, seu URL
‫é um membro da postagem de vídeo e, na verdade, chamei-o acidentalmente de apenas publicado, mas deveria
‫ser uma postagem de vídeo pública, mas não da postagem.
‫E esse será esse vídeo.
‫Seu URL será o vídeo YORO e esse comprimento será um comprimento.
‫Portanto, o que quer que seja dado aqui como argumento deve ser levado nas propriedades do objeto, que são comprimento,
‫vídeo, URL e, claro, aquele que herdamos da postagem.
‫Tudo bem, então esse é o nosso construtor.
‫E agora precisamos ter um método de duas strings.
‫Como dissemos, precisaríamos de um método específico para string.
‫E é mais fácil se apenas copiá-lo da postagem da imagem e substituí-lo novamente.
‫Portanto, público substitui string por string.
‫Portanto, substituímos o método de nossa classe de postagem, o que significa que substituímos esse método aqui, que novamente sobrescreve
‫esse objeto do sistema.
‫Portanto, essa é a beleza da herança que você pode substituir e substituir.
‫Agora temos o formato da string e pode ser um pouco diferente.
‫Bem, diferente.
‫Podemos decidir se queremos isso ou não.
‫Podemos enviar o comprimento aqui ou podemos deixar como está.
‫Portanto, a única diferença não seria o URL da imagem, mas o vídeo necessário.
‫E se desejar, você pode adicionar o comprimento aqui também.
‫Então se você quiser nos informar sobre isso.
‫Então, talvez vamos apenas fazer isso.
‫Talvez seja mais fácil simplesmente fazer isso.
‫E isso será para então e aqui.
‫Vou apenas adicionar isso, esse comprimento e separar por vírgula.
‫Agora, para torná-lo mais legível, vou usar apenas uma segunda linha aqui.
‫Certo, então esse é o nosso método G-string, e agora podemos prosseguir em nossa postagem
‫ou realmente em nossa classe de programa e aqui podemos criar uma postagem de vídeo, uma postagem de vídeo.
‫Vamos chamá-lo de postagem de vídeo.
‫Um será um novo post de vídeo.
‫E poderíamos ir em frente e fazer assim.
‫Mas aí seria um post vazio, que é o nosso post ID zero como este aqui, que só tem o meu primeiro
‫post, completo, é público e é do Dennis Pennetta, mas isso não é muito interessante.
‫Então, vamos criar um com nossos próprios valores exclusivos, que terá um ID exclusivo porque o criamos dessa
‫forma.
‫Portanto, podemos prosseguir aqui.
‫E vou dizer que este é um vídeo com falha e eu o carreguei.
‫Então ele é carregado e você pode encontrá-lo em https video dot com slash fail video ou algo parecido.
‫É apenas uma identidade falsa ou um vídeo de link falso dot com slash fail vídeo.
‫E então, como isso é muito longo para um papel, vou passar para o próximo.
‫O que precisamos agora, se você verificar aqui, há duas sobrecargas.
‫Então, vamos verificar o overlord's.
‫Precisamos ter uma informação adicional sobre o acesso ou se é público ou não.
‫Aqui estamos nós de novo, público, e agora precisamos do comprimento.
‫Digamos que este vídeo tenha 15 segundos ou talvez 10 segundos.
‫Dez está bem.
‫Portanto, deixe-o com 10 segundos de duração.
‫E agora.
‫É basicamente isso, então já podemos iniciar nosso programa e devemos ver as informações sobre a
‫nossa postagem de vídeo e claro, a parte mais desafiadora ainda está faltando.
‫Então, aí estamos.
‫Confira meus novos sapatos na images, ponto com.
‫E, na verdade, não chamamos o método ainda o método de duas strings.
‫Então, talvez devêssemos fazer isso.
‫E a seguir, precisamos chamar essas postagens de vídeo para o método string.
‫Tudo bem.
‫Então, a propósito, se você estava se perguntando por cartão postal de vídeo, você pode ver que já existem vários métodos
‫aqui.
‫E não criamos esses números.
‫Eles simplesmente estavam lá.
‫E isso porque nós herdamos da postagem, que novamente, herda do sistema esse objeto.
‫A propósito, se você verificar a postagem um também, poste um que você pode ver esses métodos lá também.
‫Portanto, igual a esse código hash get type update esses métodos, eles são herdados do sistema, dessa classe de objeto.
‫Tudo bem.
‫Portanto, agora temos as duas cordas.
‫Portanto, agora, é claro, precisamos colocá-lo em um console.
‫Direito.
‫E, na verdade, vamos copiar este código aqui e substituir a postagem da imagem por vídeo.
‫Poste um.
‫Tudo bem.
‫E agora podemos começar.
‫Aqui estamos.
‫Então, uma coisa é para os desejos de aniversário, depois três.
‫Como você pode ver, a postagem do vídeo tem um I. diferente. D. do que nossa postagem de imagem.
‫Portanto, temos um, três e dois.
‫Essa é apenas a ordem em que os estamos gravando no console.
‫Então, se você conferir aqui, a postagem do vídeo, mesmo que tenha sido criada após a postagem da imagem
‫que imprimimos anteriormente, e isso nos dá essa ordem errada se você quiser.
‫Mas a ordem não é tão importante.
‫Se você está bem, é baseado no que você deseja mostrar.
‫Então, se você quiser mostrar as imagens com base na ordem em que foram criadas ou as postagens em
‫geral com base na ordem em que foram criadas, ou se quiser mostrar a mais recente primeiro, esse tipo de coisa, depois
‫a ordem, de claro, importa.
‫Mas, no nosso caso, é muito bom termos assim.
‫Assim você pode ver que o ID é configurado no momento em que o objeto é criado.
‫Então eu fiz três e fiz dois e não no momento em que é chamado como aqui, como o método das duas
‫cordas.
‫Então, se você gostaria de ter o correto.
‫Ordem para a ordem em que eles são criados, iríamos apenas em frente assim e agora podemos ver um, dois
‫e três.
‫Então, obrigado pelos votos de aniversário do que a nossa imagem pelos sapatos novos e pelo vídeo fracassado de Dennis Panetta.
‫E como você pode ver aqui, o comprimento de dez também é enviado.
‫Tudo bem.
‫Então essa foi a primeira parte.
‫E agora o desafio mais avançado, que é criar um cronômetro e um método de retorno de chamada, que é chamado a
‫cada segundo, e deve nos informar sobre a duração do vídeo ou a duração atual do vídeo.
‫E, claro, precisamos criar os campos conforme necessário.
‫Portanto, precisaremos de alguns campos adicionais aqui.
‫Por exemplo, precisaremos saber em que ponto do vídeo estamos.
‫Portanto, vamos prosseguir e criar os campos antes das propriedades.
‫Então ele tem propriedades e agora vamos criar os campos de membro.
‫E um será um booleano protegido sendo reproduzido, o que é útil porque, se um vídeo estiver sendo reproduzido, você
‫poderá pausá-lo.
‫Se não estiver reproduzindo, você pode interromper o início.
‫Então isso é muito importante.
‫Portanto, se um vídeo já está sendo reproduzido, você não gostaria de começar a reproduzi-lo.
‫É por isso que temos esse booleano auxiliar aqui e então precisamos de uma duração protegida e cur.
‫Agora é zero para chamar o cronômetro.
‫Criamos um novo método, vamos criar um método public void play e vamos criar o método stop também.
‫Então, pare de vazio público.
‫Agora, o que queremos fazer aqui?
‫Bem, em primeiro lugar, vamos apenas escrever algo no console, como jogar, para sabermos, OK,
‫a reprodução foi iniciada ou em execução.
‫O vídeo foi iniciado.
‫E aqui eu quero definir o cronômetro e primeiro vamos criar o cronômetro.
‫Vamos precisar de um cronômetro aqui, cronômetro, e vou chamá-lo de cronômetro.
‫Agora, para usar o timer, precisamos usar um sistema esse encadeamento que eu preciso usar o sistema,
‫esse encadeamento.
‫E agora o que podemos prosseguir e fazer é inicializar o cronômetro, em qualquer lugar que você pressionou.
‫Portanto, o cronômetro será novo.
‫Timer, timer, callback deve ser o método que é chamado depois do que precisamos declarar aqui, que irei apenas dizer
‫que é agora.
‫Como você pode ver, você precisa de um retorno de chamada do temporizador e, a seguir, de um objeto.
‫Você precisa cumprir um prazo e um período.
‫E o tempo devido é quando deve começar.
‫E o período deve ser a frequência com que deve ser repetido ou em que período de tempo deve ser repetido.
‫Então, no devido tempo, irei defini-lo como zero e o período será de 1000 milissegundos.
‫Portanto, agora é claro que preciso ter esse método de retorno de chamada do temporizador e vou apenas prosseguir e criá-lo.
‫E deve ser um método privado porque não quero que ninguém o chame apenas desta classe.
‫Portanto, apenas a postagem de vídeo nula deve ser capaz de chamar esse retorno de chamada do temporizador e o retorno de chamada do temporizador.
‫Bem, ele precisa de um objeto como parâmetro.
‫Só vou dizer, ah, vou encerrar.
‫Ah, e agora posso verificar se a duração atual está abaixo da duração do vídeo, então quero
‫prosseguir e aumentar a duração atual em um e exibi-la no console.
‫Então, vídeo CW em zero segundos como este e então precisamos ter a duração atual.
‫Então, isso vai fazer é simplesmente direto no console.
‫Agora, a fim de forçar o coletor de lixo para este vídeo, vamos apenas usar a coleta de pontos GC.
‫Isso vai limpar qualquer bagunça.
‫E a propósito, senão, se a duração atual não estiver abaixo da duração, o que significa que o vídeo acabou, queremos chamar
‫o método de parada.
‫Então, aqui, vamos apenas chamar a parada.
‫E agora pare de necessidades, é claro, de serem implementadas.
‫Então, vamos verificar o que precisamos na linha direita Stop Console Todd e isso vai ser interrompido e então nós apenas dizemos, e em
‫um segundo paramos o vídeo.
‫Vou dizer a duração atual.
‫E, claro, precisamos redefinir a duração atual para zero, parar o cronômetro e parar o tempo.
‫Chamamos isso de ambos os métodos.
‫Este apenas limpa o tempo ou para o cronômetro e o zera.
‫Agora, para deixar isso ainda mais limpo, como eu disse, temos esse campo de jogo e podemos usar isso em nosso
‫método de jogo.
‫Portanto, poderíamos dizer apenas se a reprodução é falsa.
‫Portanto, usamos o ponto de exclamação no início.
‫Só então quero fazer isso.
‫Só então quero começar a jogar.
‫Só então quero inicializar o cronômetro.
‫E se não estiver jogando nada deve acontecer.
‫E aqui podemos fazer o mesmo.
‫Portanto, no método de parada, podemos verificar se o jogo dele é verdadeiro, então apenas se o jogador estiver jogando, devemos ser
‫capazes de pará-lo.
‫Tudo bem.
‫Então é isso para nossa pós-aula de vídeo.
‫Portanto, agora devemos ser capazes de conferir acessando nosso programa e, em um ponto, começar a criar ou começar a reproduzir
‫o vídeo.
‫O que vou fazer é, depois de criar a postagem do vídeo, reproduzi-la.
‫E então, como eu disse, gostaria de deixar ou permitir que o usuário realmente pare de reproduzir o vídeo.
‫Então, como fazemos aquele console que lê Key?
‫E depois chamarei o método de parada.
‫E no meio, é claro, gostaria de informar o usuário sobre o que você deve fazer.
‫Vou usar S. C. aqui console linha direita e direi pressione qualquer tecla para parar o vídeo.
‫Tudo bem.
‫E agora podemos dar uma olhada.
‫E veja se o que construímos lá realmente funciona para que possamos pressionar qualquer tecla para parar o vídeo, como você
‫pode ver, o vídeo começou e está rodando.
‫E digamos que eu queira pressionar qualquer tecla.
‫E, na verdade, fui muito lento.
‫Então o vídeo foi até o final e depois de 10 segundos, ele parou.
‫E por que isto?
‫Bem, isso é porque nosso vídeo tem apenas 10 segundos de duração.
‫Portanto, temos essa propriedade de comprimento, que indica a duração do vídeo.
‫Digamos que criamos um vídeo diferente e queremos esse vídeo ou, na verdade, alteramos a duração de uma postagem
‫de vídeo para apenas cinco segundos.
‫Então, vamos apenas fazer isso e executá-lo novamente e, depois de cinco segundos, você verá que ele irá parar.
‫E lá estamos nós, a neve acabada.
‫Vamos parar com isso manualmente.
‫Vamos executá-lo novamente.
‫Lá estamos nós e vamos apertar qualquer tecla para parar o vídeo, e não está funcionando, e isso porque
‫se verificarmos se a postagem que Klaus está tocando está errada e é por isso que sua reprodução nunca é verdadeira.
‫Portanto, o que precisamos fazer aqui é definir a reprodução como verdadeira, é claro.
‫E o mesmo vale para nossa parada aqui.
‫Então, dizemos que está jogando seu falso.
‫Tudo bem, então agora vamos voltar aqui e vamos executá-lo novamente, e agora o vídeo está rodando e eu postei
‫ou parei e ele diz parou em quatro e poderíamos ir em frente e mudar para
‫parar aqueles quatro segundos assim .
‫E para ter mais tempo, como você viu, chegou bem perto.
‫Vou me dar 10 segundos novamente.
‫Então eu arrasto.
‫Aqui estou.
‫E eu paro.
‫Então pressionei a tecla Enter.
‫Ok, isso foi um grande desafio.
‫Espero que você tenha conseguido fazer isso até as coisas mais avançadas.
‫Mas o que é realmente interessante, e não toquei muito nisso, é todo esse método de cronômetro.
‫Então, se você usou, você entende o que está acontecendo ou neste momento de aula.
‫Portanto, existe uma classe chamada Timer e você pode usá-la para usar métodos de timer, trabalhar para usar
‫um timer.
‫Então o que ele faz é você ir em frente e criar um novo objeto timer e você pode usar um
‫callback do timer e um callback do timer permite que você seja chamado ou execute algum código cada vez que essa duração terminar.
‫Assim, cada vez que o prazo que você atribuiu aqui.
‫Portanto, no meu caso, mil milissegundos se passaram ou esse período, desta vez, lembre-se de que o
‫chamaríamos.
‫Então, no meu caso, somos chamados a cada segundo.
‫É por isso que diz vídeo em um segundo, dois segundos e assim por diante.
‫Isso é muito legal porque agora você pode ir em frente e criar um método baseado em cronômetro ou programas baseados em
‫cronômetro.
‫E você poderia criar um cronômetro inteiro com o qual um usuário pode brincar e fazer ainda mais do que acabamos de fazer
‫aqui.
‫Portanto, a ideia geral é criar um novo cronômetro, criar um retorno de chamada do cronômetro, que desta vez é um método
‫de retorno de chamada que precisa de um objeto importante.
‫E então aqui você pode ir em frente ou dentro das chaves, você pode ir em frente e executar
‫seu código regularmente.
‫E isso acontecerá de vez em quando em alguns segundos.
‫Então, é claro, o objeto cronômetro tem, se você olhar para ele, um tempo devido, que você pode atribuir, que é
‫este aqui, e um estado que você pode atribuir.
‫E eu apenas uso o modelo de estado.
‫Tudo bem.
‫Então era isso.
‫E vamos prosseguir e ver ainda mais o que podemos fazer com herança e programação orientada a objetos nos
‫próximos vídeos.
‫Então, vejo você lá.