Curso POO Java #06b - Encapsulamento

224.16k views4676 WordsCopy TextShare
Curso em Vídeo
Nessa aula de POO, vamos aprender como fazer Encapsulamento em Java, implementando o primeiro pilar ...
Video Transcript:
Olá pequeno gafanhoto seja bem-vindo a mais uma aula do seu curso de programação orientada objeto com Java o meu nome é Gustavo Guanabara eu sou o seu professor e agora a gente chegou à aula 06b que foi a aula que a gente falou sobre encapsulamento e agora a gente vai colocar em prática tudo que a gente aprendeu na aula de encapsulamento diretamente em Java mais uma vez o blá blá blá de sempre não adianta você assistir essa aula Se você não viu a aula 06 A então a 06b que é essa daqui ela é a
segunda parte que é a parte prática que vai tratar de Java Então assiste a Playlist lá aqui em cima você pode apertar o de interatividade e você vai diretamente pra Playlist e vai procurar a aula 06 a apenas criando uma rápida recapitulação para você não ficar vendo duas vezes a mesma coisa a programação orientada do objeto ela tem pilares e a gente viu que a gente vai tratar os três pilares principais que é os que qual é que a pergunta qual é a sua impressora a minha impressora é HP a primeiro Pilar que é o
e de encapsulamento o h de herança e o p é de polimorfismo é o nome mais difícil de se falar mas fica tranquilo que você vai aprender é fácil é mais difícil falar polimorfismo do que entender polimorfismo e a gente começa com o primeiro Pilar que é o Pilar de encapsulamento onde a gente viu vários exemplos exemplo da pilha o exemplo do carro mas o exemplo que ficou pra gente implementar é o exemplo do controle remoto Você se lembra né então eu vou considerar o controle remoto como sendo uma cápsula a cápsula serve para proteger
o meio externo e o meio interno serve para ocultar a implementação para que a implementação não fique muito pública o que fica visível do lado de fora é somente a interface e também serve para determinar um padrão um padrão a ser seguido a gente viu anteriormente que o controle remoto aberto fica dessa maneira se eu colocar o dedo aqui nos contatos eu vou acabar prejudicando o controle remoto eu posso acabar quebrando o controle remoto e isso não é o desejado por conta disso eu vou crio uma cápsula eu tampo ele e deixo disponíveis só os
botões do lado de fora Acabei de criar uma cápsula Acabei de proteger tudo aqui nós vimos que todo o controle remoto ele segue mais ou menos uma mesma interface e a gente definiu essa interface da maneira da uml lá em cima então nós colocamos lá o nome da interface colocamos todos os métodos e todos os métodos públicos esses métodos são abstratos nenhuma interface possui atributos possui até possui apenas métodos sempre abstratos e quase sempre públicos a partir daí a gente criou a nossa classe nome da classe todos os atributos e todos os métodos então nós
temos lá o controle remoto com os atributos volume ligado e tocando todos os métodos abstratos da interface porque ele faz essa setinha essa setinha quer dizer Esse controle remoto implementa tudo aquilo que a interface tem então ele vai ter todos os métodos abstratos que estão definidos lá na interface coloquei a lista e eu também tenho os métodos especiais como Construtor e todos os métodos getters e os métodos setters então isso tudo daqui foi o que a gente viu durante a aula teórica agora a gente vai partir paraa aula prática mostrando como programar tudo isso que
tá aqui começando pela interface o o código da interface foi a interface né efim interface e lá dentro eu coloquei todos os métodos abstratos então tenho lá uma lista de métodos abstratos e públicos que eu fiz aqui nesse meu exemplo e todos estão disponíveis lá para fora eu vou deixar esse código aqui visível na tela esse código que tá aqui vai ficar parado nós vamos entrar lá no ambiente do netbeans e vamos começar a colocar tudo para funcionar e você vai ver como é fácil criar uma interface dentro de um projeto a gente vai implementar
Esse controle remoto a partir de agora Então abre seu netbeans fecha o seu Facebook WhatsApp Snapchat esses negócio todo dá um tempinho nisso já já você volta para lá mas por enquanto vamos estudar Já estou aqui dentro do meu netbeans e vou criar um projeto novo ó vou clicar aqui no amarelinho Java aplicação Java clicando em próximo Vamos colocar o nome do projeto vou chamar de aula 06 vou deixar marcada essas duas opções e clicar em finalizar alguns segundos depois ele vai criar o projeto aqui da aula 06 vou como sempre sempre apagar aqui todo
o código excessivo pra gente não ficar com medo do código grande né senão eles vão ficar falando aí o povo fica falando que programar é difícil e tudo mais então V dar uma limpada aqui tirando o código desnecessário quer dizer desnecessário não todo o comentário é necessário mas vamos configurar aqui de uma maneira cômoda primeira coisa que eu vou fazer aqui é criar uma interface então vou clicar em projeto vou clicar com o botão direito em cima do pacote da aula 0 me então aqui ó no pacote botão direito novo interface Java ele vai criar
vai pedir o nome da interface o nome da interface se você olhar ali do lado é controlador escreve controlador vou clicar em finalizar ele vai criar o código para mim vamos dar uma limpada aqui para limpar os códigos eu aperto cont Crol e tá Crol e ele apaga as linhas na verdade cont contrl e El apagar a linha atual Mas vamos colocar lá então eu tenho os métodos ligar desligar como é que eu crio um método público no Java eu faria assim né Public void ligar né void porque ele não retorna nada ponto vírgula eu
não abro e fecho o bloco isso porque ele é abstrato para definir claramente que ele é abstrato abstract então tenho ligar o desligar então vou botar Public abstract void desligar ponto e vírgula você vê que é só uma lista Como eu disse anteriormente e você viu aqui do lado eu tenho uma lista de métodos ligar e desligar são os dois primeiros eu tenho também abrir e fechar menu abrir menu nada de copiar e colar Ok pior coisa que você pode fazer enquanto você tá aprendendo fechar menu temos também uma mais volume e o menos volume
também tem Ligar mudo desligar mudo importante dizer o seguinte Nem sempre é void tá ele pode colocar aqui o tipo de retorno se ele retornar no meu caso aqui esse exemplo a gente fez bem simples que é para né não receber parâmetros e tal Porque o objetivo aqui é ver os abstratos implementação e tudo mais por fim eu tenho Play pause Olha só compara o que está desse lado com o código original Ele é bem semelhante né é semelhante porque é programação orientada objeto você vê que o Java ele não tem grandes dificuldades então criada
a interface a gente vai partir pra outra parte e que parte é essa criar minha classe do controle remoto então eu tenho lá no início classe do controle remoto o fim da classe do controle remoto defino todos os meus atributos coloquei lá todos os atributos vou fazer também o meu método Construtor tá aparecendo aqui do lado então tem o método Construtor e vou colocar todos os métodos getters e sets desses meus três atributos que eu ten né o atributo volume ligado e tocando então vou ter get set volume get set ligado get set tocando então
vamos fazer até esse momento aqui vamos deixar esse código na tela sem a implementação você percebe lá em cima que ainda não existe a ligação entre a classe e a interface então a gente já criou a interface separadamente agora a gente vai criar a classe separadamente vamos implementar entar o que tá parado aqui e aí a gente dá prosseguimento fazer isso no Java é extremamente simples vamos aqui em projetos vai no pacote da aula 06 botão direito novo Classe Java aí o nome da classe vai ser controle remoto Lembrando que as classes começam com letra
maiúscula classes e interfaces tá são sempre com letra maiúscula então eu já tenho aqui a minha classe controle remoto já pronta o que eu vou fazer Vamos definir os atributos todos eles privados ó Private inteiro volume Private boolean ligado Private boolean tocando Beleza se você se lembra muito bem das aulas anteriores como é que a gente vai fazer os métodos especiais métodos especiais você vem aqui ó vamos criar o Construtor ou você cria tudo na mão ou você aperta cont Crol i ou contol insert ou então botão direito do mouse inserir código aí eu quero
inserir o Construtor no meu caso aqui o Construtor Se você olhar ali do lado não tem parâmetro nenhum então não vou marcar nenhum desses vou mandar gerar Então tá lá o controle remoto o método e Vamos definir o método aqui dentro assim que eu crio eu vou ter this ponto volume iG 50 this ponto ligado vai ser falso e this ponto tocando também vai ser falso exatamente o que tá ali do lado agora nós vamos fazer o getter e o Setter de cada um deles botão direito de novo inserir código ou cont control I nós
vamos fazer o seguinte Gets e sets de todos eles então vou marcar aqui em cima Marc marquei todos eles gerar ele já me gerou o código lá com uma observação sempre que for blean por exemplo ligado ele não faz get ligado ele faz is ligado vamos renomear aqui mesma coisa que tocando tá só para ficar o mesmo padrão não tem problema é a regra diz que você tem que colocar o is mas nós no enquanto Por enquanto aqui a gente tá fazendo getter não vamos mudar vamos deixar o padrão aqui então percebe que o que
eu fiz aqui foi quase automático eu não precisei ficar digitando tudo isso e ele já fez para mim Vamos partir agora pra outra parte que são os métodos abstratos se você se lembra muito bem o que a gente teve que fazer para fazer os abstratos é criar aquela ligaçãozinha que tem lá em cima então só fazer aquele pontilhado com aquele triângulo inho branco vai fazer o seguinte eu tenho que dizer que a minha classe implementa uma determinada interface como a gente definiu a interface com os seus métodos abstratos na hora que eu coloco implementa controlador
ele vai dizer olha meu querido você vai ter que fazer todos os métodos o método ligar o método desligar o método abrir menu fechar menu mais volume menos volume Ligar mudo desligar mudo Play e pausa vai ter que fazer tudo isso que tá aqui do lado então você vai ver Ah mas vai dar muito trabalho aguenta pequeno gafanhoto confia no tio aqui tudo isso daqui também vai ser feito de maneira automática mais uma vez deixa o código aqui do lado para você poder comparar o resultado sendo assim o que eu preciso fazer é vir aqui
em cima na classe do controle remoto e botar implements que é a palavra implementa em inglês controlador automaticamente me deu um warning aqui clicando sobre esse warning ele vai dizer implementar todos os métodos abstratos clicando sobre ele você vai ver que aqui embaixo ó todos eles foram programados automaticamente ó ligar desligar abr menu fechar menu mais volume menos volume Ligar mudo desligar mudo Play e pause ele botou aqui ele tá disparando uma exceção faz o seguinte a gente não vai tratar exceções aqui então eu vou dar cont Crol e em todos eles para na linha
da cont Crol e para ele poder apagar a linha se você perceber aqui antes o Java colocou a palavra override override significa sobrescrever significa o quê que eu já tinha um método definido que era um método abstrato e que agora eu estou sobrescrevendo isso é eu estou desconsiderando aquela programação que não tinha sido feita e agora eu vou programar cada um deles mas você percebe que essa obrigatoriedade de se ter o método isso é muito prático porque eu disse que o controle remoto enta controlador automaticamente ele já disse para mim aqui olha vou então definir
os seus métodos abstratos de ligar desligar abrir menu e tudo mais do início até o fim Viu como é simples o negócio então se você utilizar a ide né você tá utilizando netbean se você tá utilizando Eclipse se você está utilizando uma ide provavelmente ela tá te ajudando nisso se você não tá utilizando você prefere utilizar né um Notepad mais mais ou qualquer outro que não faça esse tipo de coisa para você você vai ter criar todos esses métodos na mão não tem problema nenhum é só você pausar o vídeo e digitar todos eles a
partir de agora mas se você tá utilizando ide ele vai facilitar tua vida para caramba chega a hora agora da gente programar o ligar e o desligar vamos começar lá ligar e desligar como é que a gente tinha planejado antes o ligar e desligar vai ser o set ligado para verdadeiro ou o set ligado para falso Vamos fazer ele O código vai continuar ali a gente vai ver qual é a diferença entre um e outro então o Ligar vai ser this pon set ligado verdadeiro e o dis Ligar vai ser this pon set ligado é
falso Viu como é simples próximo passo agora é a gente fazer o abrir menu e fechar menu Lembrando que o abrir menu ele previa lá as Barrinhas na hora de né aumentar e diminuir o volume vamos programar dessa maneira aqui mais uma vez o código vai ficar para você poder comparar então V abrir menu ele vai escrever na tela Então vou botar Salt aperto Tab ele vai está ligado vou botar mais this P get ligado aí eu vou fazer aqui o o o final ali está tocando this ponto get tocando fazer esses dois vou mostrar
o volume agora volume this get volume botar print em vez de print LN para que agora eu possa fazer aquele for que tá ali para eu fazer o for vamos fazer o for com o i começando em zero e o i enquanto ele for menor ou igual ao this ponto get volume compara o que tá lá vou somar 10 no i mais igual a 10 ó fiz o for aqui para cada um eu vou escrever com print não com print LN uma barrinha em pé para ele poder fazer o volume lá pode trocar bolinha em
pé por um mozinho fazer assim ó para cada um vai ser uma uma barrinha dessa aqui pode escolher aí o que você quiser e o fechar menu ele vai escrever fechando menu exatamente o que a gente planejou ali do lado vamos partir agora pro mais volume e o menos volume Lembrando que ele só vai aumentar e diminuir o volume se a TV tiver ligada só você olhar aqui ó ol lá ó mais volume menos volume o ligar e o desligar vou fazer todos esses quatro aqui ao mesmo tempo tempo então o mais volume ele só
vai aumentar se tiver ligado e diminuir também ligar e desligar o mudo ele só vai fazer se a TV tiver ligada e se já não tiver no mudo ele vai ligar e se já estiver no mudo ele vai desligar Beleza então como eu disse anteriormente ele só vai acrescentar o volume se a TV tiver ligada então vai lá se this pon get ligado se for verdadeiro né não preciso dizer isso aqui né Igual a true na verdade posso fazer mas não tem necessidade posso fazer direto assim se ela estiver ligada eu vou botar aqui 10
ponto se volume para zero eu vou zerar o volume Ah não ele fez aqui o mais volume o mais volume é assim né mais volume ele tem que tá ligado ele vai set volume this pon get volume mais 1 ou mais C como eu tinha dito anteriormente para você para diminuir o volume é praticamente a mesma coisa se this pon get ligado mais uma vez eu vou ser chato não copie e colhe é a pior coisa que você vai fazer porque você vai achar que você já sabe programar e não sabe set volume para d
P get volume menos 1 Então eu tenho aqui somando um pro volume tirando um pro volume vamos fazer o seguinte Vamos aumentar de cinco em cinco e tirar de cinco em cinco Lembrando que no meu Construtor aqui o volume começa com 50 assim que eu instanciar um objeto Vamos agora pro Ligar mudo desligar mudo o Ligar mudo ele só vai fazer se this pon get ligado E lembrando que o e são dois e comerciais this pon get volume for maior do que zer só vai botar mudo se não estiver mudo eu boto D pon 7
volume zer fazer a mesma coisa aqui com o desligar mudo Ah não esse aqui é se não né não get volume o desligar mudo a gente vai fazer semelhante né se this pon get ligado e this P get volume for igual a zero lembra que igual são dois iguais né this pon set volume 50 C se eu tirar do Mudo ele volta para 50 não é a melhor maneira mas é a maneira mais simples e por fim a gente vai programar aqui o Play e o pause n o Play e o pause a gente tem
esse código que tá aparecendo aí do lado e aí a gente vai deixar parada ali para você poder desenvolver lá o código que a gente vai fazer exatamente igual vamos fazer o Play pause aqui se aí tem lá this ponto get ligado e não get tocando is é não aí abre e fecha parênteses this P get tocando se não estiver tocando estiver ligado e não estiver tocando this set tocando é verdadeiro escrev verdadeiro ó quando apertar o pause se this pon get ligado isso é a gente só pode ligar se tiver né só vai poder
dar pause se tiver ligado e p get tocando então v. set tocando é falso e com isso terminamos a programação da Classe A partir de agora a gente vai começar a fazer um exemplo para ver se o controle remoto tá funcionando a gente vai ligar ele desligar ele a gente vai aumentar volume diminuir volume e vamos ver se tudo tá funcionando corretamente agora que a gente já tem a classe a interface e o meu código principal vamos fazer o código principal aqui então Vamos criar um controle remoto então vamos chamar lá controle remoto vou chamar
de C igual a new controle remoto o meu Construtor não vai ter parâmetro nenhum mas eu poderia fazer né como a gente fez anteriormente mas vamos deixar aqui e vou mandar mostrar ligar o menu c p Ligar abrir menu Primeiro vamos ligar o controle né C pon ligar eu liguei o menu e mandei Abrir Ah esqueci uma coisa aqui os meus métodos get set a gente vai fazer lembra fazer como privado Então a gente vai fazer todos eles como privado só pra gente mostrar que pode quando eu torno privado eu não posso usar nem o
get nem o Setter fora daqui da classe aqui dentro não vou poder usar nenhum get nemum set poder só usar os métodos que estão disponíveis na interface Então eu mandei ligar e mandei Abrir o menu vamos salvar e executar tá lá ó está ligado tá ligado tá tocando não porque eu não dei Play e o volume tá 50 lá cinco Barrinhas eu não gostei dessa Barrinha não vamos voltar para aquela Barrinha em pé se fica mais bonitinho ele vai ficar lá tá vendo ó 50 e tem cinco Barrinhas em pé Deixa eu fazer um print
LN aqui tá para ele falar aqui vai est o menu aqui ó fazer assim Então na hora que eu executo ele mostrou o menu tá ligado tal não sei que tá tudo lá presta atenção só aqui olha quantos comandos eu precisei só três comandos e meu controle remoto já tá funcionando é claro que ele teve você teve trabalho de fazer isso tudo aqui mas na hora de implementar é tudo muito mais fácil então eu liguei e abri o menu vou aumentar o volume aqui ó o volume tá 50 então eu vou c ponto mais volume
isso é ele vai aumentar o volume e vai ficar com 55 não é isso ó lá ó 55 vou botar mudo Ligar mudo executar ó lá o volume tá zero vê que eu abri o menu aqui no final né vou fechar o menu aqui tá vendo ó abri o menu fechando o menu e ele vai eu posso fazer outra coisa por exemplo Deixa eu tirar o Ligar mudo aqui vou colocar c ponto percebe aqui ó que ele já deixou disponível tudo que eu posso fazer vou dar play aqui e tá tocando tá falso agora se
eu der Play tá tocando verdadeiro eu posso fazer o seguinte aqui ó no meu mais volume menos volume Só se tiver ligado por exemplo se eu tentar aumentar o volume vou acrescentar coisas aqui ao ao nosso código is vou botar um else aqui vou botar aqui um impossível diminuir volume porque ele vai tá desligado né você não pode diminuir o volume se a TV tiver desligada mesma coisa você não pode aumentar o volume se a TV tiver desligada né ó impossível aumentar volume Então vamos lá tentar causar um erro desse daqui eu vou tentar não
ligar e vou tentar aumentar o volume da Play ó executando ó lá impossível aumentar o volume certo tá tocando não não tá tocando pô mas eu dei Play mas ele tá desligado para ele tá tocando eu tenho que ligar ó c ponto ligar aí sim ó Eu posso aumentar o volume e ele está tocando ele está ligado você pode vir aqui também ó no controle remoto vira aqui ó Play pause não consegui reproduzir por exemplo aqui não consegui pausar vamos lá aqui tudo bem tá ligado tudo certinho agora se eu não ligar ele não vai
deixar nem eu aumentar o volume nem dá play nem abrir menu V ver abrir menu aqui ó tem o abrir menu lá em cima abrir e fechar menu o abrir menu ele tá tentando ele nem fez né Vamos deixar aqui você pode implementar na sua casa um if aqui para ele só mostrar o menu se a TV tiver ligada também né então aqui ó ele não pode aumentar o volume e ele nem pode reproduzir por quê Porque ele está desligado ó lá então não pode tocar não pode fazer nada na verdade o volume Não poderia
nem est 50 né isso porque a tua televisão no no Construtor ele começou como desligado vamos começar o controle remoto ligado então eu venho aqui ó ele tá ligado tá ligado a partir de agora ele deixa aumentar o volume para 55 e ele deixou reproduzir o reproduzir estava falso e agora está verdadeiro e aí aí gostou A partir de agora você pode começar a brincar com o seu controle remoto dá uma aprimorada na classe do controle remoto verifica assim ó ele só pode abrir o menu se a TV tiver ligada né Ele é invente coisas
coloca aqui nos comentários a sua própria classe do controle remoto toda encapsulada bonitinha com a interface com tudo certinho tente criar é e não vai ser muito difícil criar uma classe melhor do que essa que essa classe ela foi bem básica foi só para mostrar para você como funciona a programação orientada do objeto dá uma olhada no seu código cara e você vai ver que o código pra criação do controle remoto e manipulação dele tá muito simples a coisa tá muito orgânica tá muito natural foi só você prestar atenção e conseguir eh treinar o encapsulamento
quer ver um negócio por exemplo aqui ó eu não posso vir aqui na na no meu controle remoto e fazer C pon volume igual a 80 ele não vai deixar você fazer Ó lá ele não vai deixar porque você tá com ele como privado isso é você tá com ele encapsulado você não consegue nem dar set volume ó set volume 50 você não consegue fazer set volume 50 isso porque a gente colocou aqui ó o set volume e o get volume aqui ó o set volume e o get volume como Privado não é a melhor
técnica Mas eu só tô te mostrando que o encapsulamento pode ser bem rígido para eu mexer no volume eu só vou poder mexer com mais volume ou com menos volume somente esses dois métodos então ISO torna muito mais e e rígido o encapsulamento isso acaba protegendo as coisas internas se por exemplo mais pra frente seu controle remoto evoluir E você tiver que mudar o get volume ou o set volume você vai poder mudar tranquilamente porque a sua interface deixa disponível para fora somente o mais volume e o menos volume eu espero que isso tudo tenha
ficado claro eu espero que você tenha gostado dessa aula espero que você esteja assistindo e praticando e eu também espero que você esteja compartilhando com seus amigos porque é a única maneira que o curso em vídeo tá crescendo curso em vídeo não investe em marketing de Facebook propaganda de não sei que não nada disso a gente já tá chegando quase aos 200.000 alunos somente com a qualidade do nosso material e com a ajuda dos gafanhotos então mais uma vez eu queria te convidar para primeiro ser um dos patrocinadores do curso em vídeo então aqui ó
você pode acessar o apoi PME bar curso em vídeo tornar-se um apoiador o curso em vídeo precisa muito da sua ajuda Por exemplo essa aula tá saindo o dinheiro dos primeiros a a contribuidores os primeiros apoiadores já acabou então no momento que você tá assistindo nosso dinheiro já acabou então eu preciso a gente precisa muito da sua ajuda eu espero que eu possa contar com ela então é isso pequeno gafanhoto no final de tudo sempre tem aquele pedido Maroto né se inscreve no canal né clicando no se inscreva você vai se inscrever no canal vai
se tornar mais um gafanhoto que estuda com a gente clicando no mais curso você vai ser desviado pra Playlist e lá você vai ver todas as aulas do curso de programação orientada objeto com Java e no curso em vídeo você pode acessar nem sempre ele está atualizado com a realidade nem sempre uma aula sai no YouTube ela vai pro curso em vídeo às vezes demora um pouquinho mais mas todo mundo que tem um pouco mais de paciência com certeza consegue usufruir bastante do nosso curso em vídeo Então é isso pequeno gafanhoto me despeço por aqui
se você quiser você pode assistir essa mesma aula em PHP aqui em cima na playlist também está disponível a Playlist de PHP Então você procura a aula 06b lá e você vai ver Exatamente tudo que a gente fez aqui de amente em PHP pratique sempre mostre pros seus alunos estude e não acredite naqueles que falam para você que programação orientada objeto é uma coisa difícil um forte abraço e até a próxima m
Copyright © 2024. Made with ♥ in London by YTScribe.com