bom dia beleza Lucas mora aqui e nesse vídeo vou te explicar o que é encapsulamento interface na prática a primeira coisa que vou fazer é criar uma classe então eu vou querer aqui primeiro um pacote classes com classes barra e a minha classe que vai se chamar círculo Pronto já é selecionar Express ser cria minha classe círculo agora eu vou fazer uma colinha do que que eu vou adicionar nessa classe sua primeira coisa que eu vou fazer adicionar os atributos depois os métodos vamos chamar de métodos específicos da classe e os métodos getters e setters então o círculo qual que vai ser o atributo do Círculo Vamos colocar apenas o rhay então enterrado faltou aqui a visibilidade e vai ser privado Então por 20 e agora vamos adicionar os métodos getters e setters Então como que eu Gero eu e aqui na lâmpada trade gerenciador raio Dom pinterch vou Mover para baixo aqui dessa forma e aqui nos métodos específicos da classe vamos adicionar um método que é para calcular a área do círculo então vou fazer pobre que o que eu vou querer acessar esse método de fora dessa crosse ou que vai ser o retorno vão considerar se vai ser um double o e calcular área mas o nosso método e no método calcular a área eu sei que a área do círculo é Ari igual Fi vezes aí ao quadrado como que a gente faz isso aqui no jovem vou criar aqui tamo área é igual pe qual é o valor de Pi eu poderia colocar 3014 agradar Mas eu posso usar MEF é uma classe de matemática do Java que já foi criado para a gente então Messi. o peão Double vezes o raio ao quadrado eu poderia fazer de duas formas aí vezes sai ou seja a é o quadrado eu posso usar nerf. com E aí vou fazer o raio elevado a 2 Então dessa forma eu descobri a área como esse método retorna um double eu vou fazer retorno alho pronto Terminou corrigir o erro aqui ou eu poderia fazer dessa forma aqui retorno e simplificar eu não preciso criar uma variável para receber esse cálculo aqui mas fica opcional aí do jeito que você achar melhor tá vou deixar dessa forma Calcular área e agora eu posso fazer o seguinte lá no meu App deixando no Misaki Controller vou criar o circo circo e cortar entre a origem cortou aqui para mim um colocar círculo pequenas = 1000 circo aqui eu terei que fazer círculo.
7 raio compra exemplo dois só que eu quero criar um método do conselho para facilitar aqui a círculo pequeno isso só que eu quero criar um médico consultor para não ter que ficar fazendo sete raios toda vez que for criar objeto tem um adicionar ciumento do consultor então eu esqueci de ser um rascunho aqui consultor Então como que eu faço um pastor pobre que o nome da classe círculo em abril fechou parece dessa forma qual parando que ele vai ser passado pelo consultor vai ser o alho aqui ó ó o rei e agora sim legal você falei aqui então eu quero passar um pai para construir o nosso objeto do tipo círculo Então vai ser raio é um ter enterrado e eu vou fazer o seguinte a consciência objeto eu vou pegar diz. ai tão lembra o risco outro raio É esse atributo aqui da classe e não esse raio que está sendo passar aqui bom então esse tá recebendo essa variável que está sendo passar aqui vou parentes salvei e agora ele deu um erro porque eu preciso informar o raio vou colocar dois pronto e agora eu vou calcular área do círculo um círculo posso calcular área dessa forma se executar não vai mostrar nada porque eu não tô exibindo esse valor da tela então eu posso fazer do horário imprimir área Ah tá imprimi o seu baú lendário eu poderia fazer simplesmente isso aqui dentro do printy Aliança sem precisar criar uma variável para isso você ficar de novo certo então tá aí o número 12,56 63 e assim vai agora eu vou creating um monte é clássico e vai chamar quadrado confusa lá você meu celular que cresce a nossa Cola atributo consultor método específico que gere esferas são atributo o quadrado Vamos definir que ele tem o valor de lado tá no colocar em lado o consultor vou fazer Fabric quadrado vou pegar um lado bom então disse no outro lado é igual a método específico vamos deixar para depois e aqui eu vou gerar o guerreiro espera eu posso clicar aqui que passou Farm só aqui eu posso clicar aqui para gerar o Gary ser Ou posso fazer botão direito sors Action inerente que ears and Sellers dessa forma ele foi lá em cima aqui no método específico eu vou fazer sobre o que a gente área dessa forma eu vou colocar gerar área em qualquer área do quadrado e lado o quadrado tem uma poderia fazer reter do lado vezes lado e ao poderia fazer mexe full lado, dois essa forma aqui ele tá falando que não pode converter é porque foi ele retorna um double Vector ornament então eu terei que colocar amo para resolver esse problema aqui não deixar dessa forma aqui é o retornou a área aqui do nosso quadrado aqui eu vou fazer mais uma coisa o quadrado do Anil quadrado e aqui vou colocar 5 e imprimir o quadrado posso gerar água foi intencional aqui esses nomes de métodos diferentes eu queria quebrar esse padrão mesmo então vou executar aqui e imprimiu 12. 146 um círculo e 25 do quadrado certo percebo que eu criei duas classes círculo e quadrado e essas duas classes tem um método responsável por gerar a área dessas figuras geométricas só que não tem um padrão uma FIFA criado com o nome calcular a área a outra gerar a área isso não está seguindo um padrão e isso pode ser um problema para você lá na frente então a primeira coisa que nós vamos fazer é criar uma interface Ou seja a gente vai obrigar vai ter um contrato que a gente vai falar olha se você quiser criar uma figura geométrica você vai ter que criar uma classe por exemplo com o método calcular a área tem que ser isso e pronto não vai ser gerar a área não vai ser por exemplo estimular a área nada disso vai ter que ter um método chamado com a área e.
Então é isso que interface vai fazer então o que que eu vou fazer aqui em classes porque aqui vou adicionar Seguro e geométrica. Já bo bo e essa forma vou selecionar aqui interface Ok e aqui dentro Eu vou falar o quê que vai o que que faz parte desse contrato então o que que as Praças vão ser obrigados a ter para seguir contrato então eu quero falar o seguinte cada figura geométrica precisa tão método Ok vamos colocar Double é o retorno do método e vai se chamar calcular a área dessa forma e a gente não vai implementar o conteúdo desse método igual a gente fazia abrir a Chaves e colocava o quadro aqui dentro a gente só vai definir o cabeçalho desse método então é com situação contrato a gente tá colocar o termo aqui olha precisa ter o método calcular a área e pronto acabou então Nós criamos o contrato figura geométrica agora nós precisamos falar para essas classes círculo e quadrado para usar esse contrato que nós acabamos de fazer que essa interface aqui então eu vou fechar isso aqui e vou voltar lá para o círculo o círculo eu quero falar para ele para ele implementar essa interface então vou fazer implemente e o nome da minha interface que é figura geométrica Hortência Pronto agora o que que eu vou fazer aquele não deu um erro porque porque Calcular área já existia então por exemplo seu recortar esse código aqui só para não ter que digitar de novo a cor dessa forma e vou salvar percebo que ele dá um erro e qual que é ser ele falou que círculo precisa implementar o método calcular a área só seu clicar aqui e selecionar a lâmpada ele vai sugerir o seguinte adicionar os métodos da classe da interface figura geométrica que não estão dentro dessa classe tão vou clicar aqui de bebê os métodos não implementados eles moveu lá para baixo cálculo errado posso apagar isso aqui esse conteúdo aqui que foi gerado automaticamente e eu coloco o quê que eu quiser que era aquele retornei lá adiante vamos ver lá para cima eu vou deixar e aqui que é embaixo do consultor e Silver Raid Não se preocupe não precisa ter isso aqui no momento mas se você quiser não tem problema só tá falando que é uma sobra escrita tá bom é mas a gente vai ver isso mais para frente não se preocupe Então vou pagar aqui só para evitar confusões então eu entrei nesse calcular a área e sumiu o erro aqui agora nós vamos lá para o quadrado e vou falar quadrado implementa ou segue o contrato de uma figura geométrica implemente sobre geométrica aquele deu eu de novo falando que não existe o método calcular a área existe o gerar área só que não tem o nome que a gente pulou lá no contrato quer calcular a área então vou clicar aqui adicionar métodos não implementados Ou eu posso fazer na mão poderia digitar pobre que Double ia ter que digitar o cabeçalho do método exatamente igual como está aqui Claro que dorme qualquer área então por exemplo copiaki colei deixar só a Chaves aqui e vou implementar o cálculo para gerar a área de um quadrado de e Mexe. Quadrado essa forma Vamos ver isso aqui lá para cima e vou substituir esse antigo aqui pronto perceba que ele resolveu o problema que tinha que antes agora eu vou voltar lá em Java aquele deu um erro porque não existe mais o método gerar área que agora tá com padronizado como calcular área dessa forma em salvar e executar 12.
50 E 6:25 então todas essas classes que implementa esta interface Ou seja que segue Esse contrato elas foram padronizadas Como por exemplo o método de calcular a área então todas essas classes precisam ter esse método calcular a área pensando dessa forma você pode fazer uma coisa bem legal que é o seguinte eu vou criar aqui uma classe vou colocar o nome Bem bem aleatório mesmo vamos colocar calculador de área. Já é o Clécio eu quero fazer o seguinte eu quero fazer um método que ele vai pegar duas figuras geométricas E vai retornar a soma dessas duas áreas então por exemplo Como retornar o download somar área e aqui eu vou fazer o seguinte eu vou receber dois objetos que seria duas figuras geométricas E aí eu poderia passar Quais são as possibilidades eu poderia passar um quadrado no círculo um quadrado ou um círculo eo quadrado círculo dois círculos dois quadrados E como que você faria isso usando o método que eu poderia usar interface então a TIM ao invés de fazer quadrado vou fazer o seguinte eu vou fazer vou começar com quadrado e círculo então vou fazer quadrado o círculo da Amizade círculo ó e vou retornar 1 o Double Total área de quadrado. Calcular área mais circo.
Calcular área dessa forma e vou retornar Total área dessa forma se eu voltar lá no app e eu vou apagar isso aqui é autista passinho e eu vou criar uma classe calculador área e vai chamar concordo objeto mil calculador área e vou fazer calculador. de somar Ares vou passar quadrado e o circo aqui vou colocar só círculo para ficar mais fácil acreditar dessa forma vou executar não imprimiu porque eu não imprimir né É isso que eu fiz sim agora vai imprimir aqui 37 com 56 E se eu quisesse tomar dois quadrados como que eu faria eu teria que criar um novo método não você poderia usar a interface aqui então ao invés de você passar o nome das classes aqui você poderia passar o nome da Inter faz que cada um desses objetos aqui segue então por exemplo eu sei que quadrado segue um contrato sobre vim aqui contra o cliquei posso segurei conta porque aqui eu sei que ele implementa figura geométrica então eu sei que cada figura geométrica é obrigado a te é o método colhe então aqui eu posso fazer o seguinte vou passar uma figura geométrica aqui que tinha invés de com a data eu vou colocar a figura a eu poderia deixar quadrado também importa tá E aqui no lugar do circo a mesma coisa como eu sei que círculo também implementa figura geométrica eu sei que lá é obrigado a ter um método calcula a área então já vai saber que dentro desse círculo existe qualquer água então vou fazer figura geométrica aqui também se eu salvar aqui e executar vai exibir o mesmo resultado de antes e agora eu posso passar dois círculos ou dois quadrados Então agora eu posso fazer diferentes operações aí envolvendo qualquer figura geométrica ou seja qualquer classe que implementa uma interface isso é bem legal não sei se for claro isso mas o que que aconteceu aqui como o Java sabe que uma figura geométrica tem um método de calcular área ele não tá nem aí de Como que foi implementado o cálculo dessa área dessa figura geométrica ele só precisa o que lá tem o médico clarear ele chama esse metro e implementação o que importa é a mesma coisa aqui para esse outro parando chamou um objeto chamado segura B que é uma figura geométrica e eu sei que tem um método de calcular chamei ele e a forma com que a área calculada não importa por já perto sempre está um pouco confuso sobre interface Não se preocupe que eu vou dar um outro exemplo de interface aqui então vou fazer o seguinte eu vou deletar todas essas classes aqui relacionado a figura geométrica posso apagar isso aqui do é do app também e eu vou criar aqui dentro de classes vamos fazer o seguinte Imagina que nós somos responsáveis por sei lá criar um videogame por exemplo e que a gente cria um videogame e a gente vai definir como que vai ser o contrato desses jogos então nós como desenvolvedores de no videogame a gente vai falar olha cada jogo eu conseguir esse contrato tô em outros desenvolvedores vão precisar seguir esse param de contrato Então a primeira coisa que nós vamos fazer aqui vamos criar aqui é uma classe que vai ser uma interface na verdade de jogo pontos aba ou selecionar aqui interface dentro de um jogo eu quero falar o seguinte vai ter um método chamado jogar que é pão e vai ter um método e aqui pode ser flagrante também mas eu vou deixar os como todo por enquanto que vai chamar por exemplo fechar seria um serrar e agora vou fazer o seguinte eu vou criat é um jogo que vai se chamar por exemplo em pó. Já e esse jogo ele vai precisar seguir o nosso modelo o nosso contrato de jogo que a gente implementou do nosso joguinho aqui então imagina que agora vamos ver dor que a fazendo pin.
Nosso vídeo game aqui ela precisa seguir esse contrato que a gente pulou aqui então eu vou fazer piccol Ok Isso implemente jogo sem aquele deu eu vou clicar aqui add metros não implementados dessa forma fechar e jogar possa pagar isso tudo certo agora eu vou fazer o seguinte eu não vou nem colocar atributos aqui vamos só facilitar aqui Imagine que não tem fone Vamos colocar uma mensagem aqui ela de apresentação o lobo o presépio que sim se Inicial que será que elas eles vídeos em que toca no início do jogo aqui vão colocar outra mensagem tô mostrando o menu inicial e aqui uma mensagem tá tocando música de sopa dessa forma eu vou fechar eu vou fazer o seguinte e eu vou como salvar o progresso do jogo tá você sabia essa mensagem aqui eu vou fazer fechar o jogo dessa forma pronto só isso vamos simplificar agora vamos criar um outro jogo aqui por exemplo nós vamos colocar xadrez. Já dessa forma é uma classe e também implementa jogo vou adicionar aqui a jogar Salt xadrez vai ser um jogo bem Simpsons que não tem tela de apresentação vai só vai ser apenas exibir remou ver melhor não tem nem música nem nada o jogo bem se visão só dessa forma aqui eliminou a exibir vídeo e jogadas no fundo Imagine que tocando um vídeo lá no fundo atrás do menu enquanto fica carregando sei lá e aqui esses altos fechar fechando o jogo de xadrez e ele não vai nem salvar o progresso só só saiu ali só lamento certo vou querer aqui mais um outro jogo aqui vamos chamar de um tiro sol ó fechado a press implementa ela se perfaz e Implementos jogo a jogar aqui eu vou fazer Eu imagino que jogar aqui esse tiro ao algo Vamos colocar aqui o direito reflector aqui não foi está Vou colocar Tira logo online dessa forma Ok vai renomear gente talvez aqui vou fazer carregando o jogo o jogo e se conectando ao servidor e aqui tá carregando partida só isso em fechar Vou salvar o progresso o Diogo no servidor a sair da partida e sair do jogo só um exemplo Então pronto aqui eu tenho três jogos aqui agora eu vou criar uma outra classe que vai se chamar videogame ponto de aula de selecionar aqui presta e aqui eu vou ter alguns metros com por exemplo ligar a jogar E aí o e fechar essa forma agora eu vou fazer o seguinte Ligar vamos colocar a mensagem ligando o videogame e jogando o jogo o que iniciando o jogo e aqui e fechando o jogo dessa forma Ligar moço essa mensagem jogar nós vamos fazer o seguinte ele vai jogar o que ele vai jogar um jogo E aí nós vamos usar a nossa interface jogo aqui para ser possível eu jogar qualquer jogo implementa esta interface então eu vou colocar você colocasse aqui só pimpom o jogo eu poderia chamar jogar que esse método passando apenas um objeto que seja do tipo então por isso que eu não posso colocar essa classe aqui porque eu quero poder jogar qualquer jogo tá aí eu coloco a minha interface jogo essa E aí eu vou fazer o seguinte jogo pronto jogar dessa forma a mesma coisa que me fechar mas vou fazer aqui eu posso fazer uma coisa mais legal ainda aqui em videogame eu vou criar um atributo flight O que é do tipo jogo o jogo dessa forma e aí eu vou fazer o seguinte jogar o que que ele vai fazer ele vai definir o valor desse atributo dessa classe aqui jogo curtir porque aí eu vou poder fechar o jogo dentro desse método aqui porque senão terei que fazer isso aqui ó deixar E aí eu faria jogo. Fechar só que eu tô jogando o jogo e aí vou ter que ficar passando Qual jogo que eu vou fechar também isso é bem chato então vamos colocar um negócio mais legal aqui então eu tenho um atributo de classe jogo eu posso usar esse tributo em diferentes métodos estamos fazer além de jogo pode jogar eu vou fazer jogo com bi posso jogo que é esse carinho aqui tá recebendo jogo se ficarem aqui agora aqui no fechar eu preciso adicionar uma verificação e vê se tem um jogo rodando porque senão eu não consigo fechar um jogo que nem foi aberta Como que você faz isso como que você verifica que jogo essa variável aqui jogo do tipo jogo foi definida por padrão aqui no atributo de classe quando ele não foi definido o valor por exemplo se você imprimir jogo aqui sem nunca ter definido o valor para ele ele vai ter um valor de nulo Então os objetos tem um valor de no se ele não tiver um valor inicial Então posso fazer e ir jogo é diferente de novo significa alguma coisa ali dentro então aí eu posso chamar jogo.
Fechar dessa forma Então se existe um jogo rodando ele vai fechar o poderia tornar isso aqui mais fácil de entender poderia fazer boolean o bolo sobre amizade aqui com poder tem jogo rodando E como que eu faço isso jogo é diferente de novo e aí eu poderia fazer sim é o wi-fi tem jogo rodando poder fazer isso aqui é igual a flor jogo quando fechar Ou posso deixar dessa forma que é uma forma simplificada então se tiver jogo rodando ele vai fechar e não e não tem nenhum jogo rodando e esse Fechou eu vou fazer uma outra coisa que é definir essa Vereador aqui de volta para num como fazer jogo é igual a música isso aqui e definindo o valor de mim e não está rodando e dessa forma Então bora testar lá em app eu vou fazer o videogame de access Xbox One e vai chamar Na verdade dois estão se aqui New videogame dessa forma aqui a gente poderia fazer o seguinte ó ligar o poder criar uma tributo aqui Private boolean está ligado E aí eu vou fazer o seguinte me ligar vai ser diz.