Olá pequeno gafanhoto tá começando agora mais uma aula do seu curso de programação orientada objeto com Java e PHP Mais uma vez você deve ter percebido tô aqui no escritório do Twitter no Brasil e essa aula tá caprichada tá cheia de coisa legal então vamos embora trabalhar desliga esse teu WhatsApp aí que eu tô vendo Vamos [Música] estudar [Música] Olá pequeno gafanhoto seja bem-vindo a mais uma aula do seu curso de programação orientado objeto e agora a gente chegou à sexta aula e nessa aula a gente vai falar sobre um conceito muito importante que é
o encapsulamento então na nossa sequência lógica a gente falou sobre objeto como é que é a construção de objetos classes atributos métodos vimos alguns exemplos visibilidade e agora a gente vai começar a falar sobre os pilares da programação orientado do objeto Você deve saber o que que é um pilar na verdade a gente tem aqui do lado ó um telhadinho e um chãozinho pro telhado ficar no lugar que o telhado tem que tá para sustentar o telhado a gente tem que ter pilares e a programação orientada objeto tem três pilares e nós vamos reconhecer esses
Pilares pela primeira letra deles pra gente poder decorar mais fácil lembra da sigla ehp sempre ehp por exemplo sua impressora sua impressora é HP pronto decorou Então a gente vai ter que saber como é que funciona o ehp sendo que o e é de encapsulamento o h é de herança e o p de polimorfismo Pode até parecer difícil você ver essas palavras e falar ai eu não vou lembrar vai meu filho encapsulamento lembra de cápsula herança lembra da herança do seu avô lembra das coisas que você vai receber da sua mãe não tem isso e
polimorfismo Poli de muito morfo de forma várias formas de se fazer a mesma coisa e agora você pode estar imaginando se você é um gafanhoto que fez faculdade e o seu professor usou uma bibliografia diferente falou assim não gu barara o meu professor falou que são quatro pilares além do encapsulamento da herança do polimorfismo a gente tem um azinho que é de abstração Pois é meu querido Tem lugares tem bibliografias que consideram Quatro Pilares que são a abstração o encapsulamento a herança e o polimorfismo sendo que na bibliografia que eu trabalho na bibliografia que eu
prefiro a gente considera somente três e a abstração está dentro do encapsulamento Então a gente vai falar um pouquinho a gente já falou basicamente sobre abstração que é você abstrair coisas você tem uma coisa muito grande mas você não quer cadastrar essa coisa todas as informações por exemplo um ser humano um ser humano é composto de muitas variantes mas eu preciso que esse ser humano seja tratado como cliente e para cliente Eu preciso guardar dele o CPF o nome dele o endereço dele não me importa qual é a cor da pele dele dele não importa
qual é o a cor dos olhos dele quanto ele pesa quanto ele mede de altura então não me importa nessa situação então eu vou abstrair isso tudo e vou considerar somente o que importa então o conceito de abstração eu não estou ignorando Mas nós vamos considerar o modelo de três pilares encapsulamento herança e polimorfismo vai guardando aí porque é Lar foi outro e para falar dos três pilares obviamente a gente vai começar falar do primeiro que é o encapsulamento como eu te disse anteriormente você vai considerar encapsulamento como sendo uma cápsula Então pensa em alguma
coisa que tenha cápsula eu vou usar como exemplo aqui uma pilha e todo mundo aqui já viu uma pilha você vê que todas as aulas eu mostro um exemplo prático e mostro coisas do dia a dia isso porque como eu já disse várias vezes toda a aula basicamente eu falo isso programação orientada objeto é natural as coisas podem ser explicadas de maneira simples e eu fico muito feliz da quantidade de elogios que o curso tá recebendo falando assim nossa Guanabara eu nunca vi programação orientada objeto de forma simples mas esse é o grande objetivo dela
se o seu professor na sua faculdade tá tornando isso difícil ele simplesmente está tentando valorizar o trabalho dele ele tá falando assim ah não mas programação orientada objeto é difícil se algum professor já chegou para você e disse que programação orientada objeto é difícil ele está mentindo para você porque programar orientado objeto é muito simples é só você saber a base e essa base eu estou passando para você mas vamos voltar a nosso exemplo aqui a pilha que tá aparecendo na tela ela é uma cápsula Mas você já se perguntou por que que a pilha
tem que ser uma cápsula é eu vou te mostrar aqui como é que é uma pilha por dentro Essa é a estrutura da pilha basicamente a função de uma pilha é fornecer energia correto dentro de uma pilha existem componentes químicos que vão fazer o trânsito de energia vão conseguir levar energia de um lado pro outro por exemplo essa pilha que tá sendo aí do lado eu vou representar ela é uma pilha de 1,5 V então ela vai ter que jogar 1,5 V constante entre um pino e outro então você deve ter estudado na escola né
Um pouquinho de física é rápido Calma que não vai doer nada a gente tem a parte de cima aqui que é esse núcleo que é o catodo e a gente tem a parte de baixo que é esse outro componente aqui que tem uma ligação aqui embaixo que é o anodo Então os elétrons vão fazer esse sentido aqui ó deixa eu fazer aqui com risco então eles vão fazer essa direção aqui eles transitando nesse sentido vão formar uma mini corrente elétrica e vai fornecer energia pro seu aparelho você já ele um controle remoto um joystick de
videogame ou qualquer outra coisa que o c de pilha um relógio de parede enfim mas então Por que que pilha é um invólucro pilha é uma cápsula como eu já falei várias vezes aqui ela é uma cápsula por dois motivos primeiro para proteger você dos componentes químicos que estão lá dentro já pensou se você tivesse que segurar os componentes químicos Já pensou que dano isso pode acontecer por exemplo dentro de uma pilha comum tem dióxido de manganês tem zinco Então esse tipo de coisa pode danificar sua pele pode danificar suas mucosas então isso tudo precisa
de uma proteção e também uma proteção da pilha contra você isso é você você por exemplo encostando numa área de zinco que tá exposta pode dar alguma diferença e a pilha parar de funcionar então uma proteção de duplo sentido uma proteção da pilha contra você e de você contra a pilha Esses são os principais motivos para você precisar encapsular uma pilha um outro motivo para encapsular uma pilha é criar um padrão então por exemplo imagina que eu tenha uma lâmpada aquelas lâmpadas gigantes que usam esse tipo de pilha daqui então essa cápsula o formato dela
vai ser comum para que eu posso utilizar dentro de todos os aparelhos Por exemplo essa lanterna que eu falei aqui ela não vai funcionar com pilhas assim a não ser que seja aquelas lanterninhas pequeninhas Mas aquelas lanternas grandonas não funcionam com pilha desse tamanho essas pilhas menores são por exemplo para controle remoto então a cápsula serve além de proteção serve para criar um padrão por exemplo se eu tenho um controle remoto eu tô utilizando esse tipo de pilha aqui aí eu quero trocar a pilha eu vou no mercado e eu só encontro esse outro tipo
de pilha que é parecida com ela só que tá escrito fora alcalina ou então eu acho outra marca de pilha Será que eu posso utilizar no meu aparelho Será que eu posso utilizar no meu controle remoto qualquer uma dessas pilhas que tá aparecendo aí do lado e com certeza se você já utilizou pilha e obviamente você já utilizou pilha você já sabe a resposta você pode utilizar qualquer uma delas por quê Porque elas estão dentro de cápsulas que tem o mesmo formato que tem o mesmo padrão você não poderia por exemplo comprar uma pilha dessa
daqui e colocar dentro do seu controle remoto poderia ou por exemplo se você tá utilizando aqueles controles remotos de avião né aqueles aeromodelos Provavelmente você utiliza esse outro tipo de pilha você pode colocar as pilhas AA as pilhas mais fininhas não porque elas são de cápsulas diferentes e obviamente eles fornecem voltagens diferentes e tudo mais mas o que eu tô tratando aqui é a cápsula na hora de comprar a bateria pro seu aparelho você tem que comprar de acordo com a cápsula que ele foi planejado então além daquela proteção de Mão Dupla o encapsulamento também
te ajuda criando um padrão e eu vou te dar mais uma vantagem de encaps lá dá uma olhadinha nessas três pilhas fininhas aí que tem na tela vamos supor que todas elas sejam do mesmo padrão o componente interno delas a forma que elas funcionam dentro é exatamente a mesma não uma pilha comum é uma pilha que funciona através daquele sistema lá que eu expliquei para vocês do zinco e tudo mais temos também as pilhas alcalinas que Como o próprio nome diz trabalham com um composto alcalino e nós temos as pilhas por exemplo recarregáveis aquela que
você compra e você pode botar carga tirar carga botar carga utilizar botar carga utilizar Aí eu te pergunto será que você pode tirar uma pilha alcalina e colocar uma pilha recarregável no seu controle remoto pode não pode a forma com que ele funciona dentro a forma com que a pilha está funcionando a forma de funcionamento dentro da cápsula não importa contanto que o formato contanto que a cápsula seja no mesmo padrão concorda comigo e aí você vai me falar Poxa agora bara mas o que que importa isso o que que tem a ver isso com
programação e eu te respondo tem tudo a ver com programação orientada objeto porque Esse é o conceito de encapsulamento um software encapsulado ele tem o mesmo padrão um software encapsulado protege o usuário do código e o código do usuário e o usuário quando eu te digo é o programador então um código encapsulado não vai deixar o programador fazer besteira um programador que quer fazer besteira não vai prejudicar um código um código não vai prejudicar o programa de um programador um código encapsulado Usa interfaces usa moldes padrão e esses moldes padrão eles fazem com que o
código que tá lá dentro não importe não importa como eu vou fazer o código O que importa é que o resultado seja sempre o mesmo viu qual é a relação entre as pilhas e os códigos então na programação orientada a objeto nós temos sim o conceito de cápsula e nós temos também um conceito do que é encapsular para programação orientada objetos encapsular é ocultar partes Independentes da implementação permitindo construir partes invisíveis ao mundo exterior vamos prestar atenção vamos aplicar isso aqui ao conceito da pilha imagina uma pilha aí ocultar partes Independentes da implementação isso é
quando você compra uma pilha você sabe quais são os componentes químicos Você sabe qual é a reação você precisa saber qual é a reação que ocorre dentro da pilha para poder comprar essa pilha não você simplesmente quer uma pilha num formato numa cápsula padrão permitindo construir partes invisíveis ao mundo exterior Então é isso você que tá do lado de fora de uma pilha não sei se você tá assistindo esse vídeo dentro de uma pilha pilha mas eu acredito que não mas você que tá do mundo externo da pilha não precisa saber como funciona a pilha
você só precisa saber que ela vai te fornecer o 1,5 v o que quer que seja E que esse fornecimento de energia vai te ajudar porque vai funcionar o seu aparelho simples assim então agora você já sabe Para que que serve uma cápsula E você tem que saber que na programação orientada objeto Você pode conversar com essa cápsula você consegue conversar com objetos a conversa a troca de informações entre o mundo externo e um objeto a gente chama de mensagem então a troca entre mensagens você vai mandar mensagens para essa cápsula e essa cápsula vai
te dar uma resposta você não vai entrar nessa cápsula vocês se lembr em duas aulas atrás onde eu coloquei o exemplo onde tinha uma mesa e um cara atrás para poder pegar o papel e poder né proteger as pessoas de não utilizarem uma estante que estava lá atrás se você não assistiu você está perdendo boa parte do curso de programação orientado a objeto então quando a gente falou sobre vis ilidade eu falei que a visibilidade tinha uma relação com a o encapsulamento na época da aula e a gente não tinha falado sobre encapsulamento até o
presente momento agora sim a gente vai aprender como criar uma cápsula como permitir que a pessoa esteja do lado de fora interaja com o meu sistema o programador esteja do lado de fora interaja com a minha cápsula que é o meu objeto e meu objeto vai dar a resposta para ele a minha pilha vai dar a energia ao aparelho mas o aparelho não precisa saber como essa pilha gerou essa energia seja ela de uma pilha comum uma pilha alcalina ou uma pilha recarregável o programa ele precisa receber uma resposta da minha cápsula uma resposta do
meu objeto eu não preciso que o programa Saiba como o meu objeto funciona Ficou claro isso para você ficou claro que a proteção existe e que é muito mais simples depois na frente quando a gente tem softwares bem encapsulados objetos bem encapsulados e para que esse encapsulamento funcione corretamente eu protejo esse meu código com essa cápsula e digo o seguinte olha só o que essa cápsula fornece é esse tipo de informação o que uma pilha fornece É são dois polos esses dois polos você tem que ligar exatamente no lugar esses dois polos da pilha e
essa e esse canal de comunicação externa que todo objeto tem a gente dá um nome na programação orientada do objeto que é interface sendo assim um bom objeto encapsulado possui uma interface bem definida e segundo as bibliografias O que significa Inter Face vou mostrar para você interface é uma lista de serviços fornecidos por um componente é o contato com o mundo exterior que se define o que pode ser feito com o objeto dessa classe é simples assim então uma pilha é uma cápsula um software encapsulado é uma cápsula a pilha tem os seus polos que
seriam sua interface o software encapsulado também vai ter a comunicação com o meio externo que é a sua interface só que uma pilha ela é uma coisa muito Suzinha vamos começar a trabalhar com exemplos mais complexos e um exemplo até que a gente já trabalhou controle remoto controle remoto é uma cápsula vamos ver se realmente é uma cápsula mas antes eu tenho que te dar um aviso importante quando a gente fala de Pilares a gente pensa assim Ah sem os pilares o telhado não se sustenta correto então sem utilizar encapsulamento eu não posso programar orientado
objeto Pode sim só que o seu programa fica com determinadas falhas e aí eu vou deixar um aviso aqui olha só importante encapsular não é obrigatório Mas é uma boa prática para produzir classes mais eficientes Então quando você começa a estudar programação oriental do objeto a gente não fala dos pilares logo na primeira aula a gente vai passo a passo agora eu já tô te introduzindo o primeiro Pilar que é o encapsulamento encapsular é proteger o seu código você é obrigado a encapsular não mas quando você encapsula você tem vantagens sim então aprenda a encapsular
visto isso o que que a gente tem que fazer agora vamos ver quais são as vantagens de encapsular isso também tá em qualquer teoria de qualquer livro de programação orientada objeto que você pega e eu vou te dar aqui as três maiores vantagens que a gente meio que já viu mas vamos seguir o que que a bibliografia fala a primeira grande vantagem de se encapsular é tornar mudanças invisíveis por exemplo eu peguei a pilha lá essa pilha comum se acabou essa pilha eu posso trocar só por uma outra pilha comum não eu posso trocar por
qualquer pilha o meu controle remoto ele nem vai saber que pilha tá sendo usada ele só vai saber que a energia tá chegando lá E aí ele vai começar a funcionar então se eu tiver que mudar um software por dentro se ele está bem encapsulado mantendo a interface eu posso trocar a pilha contanto que a energia seja mandada no mesmo padrão é uma relação a segunda vantagem de se programar orientado objeto com encapsulamento é facilitar a reutilização de código por exemplo peguei uma pilha essa pilha tava no controle remoto acabou a pilha do outro controle
remoto eu não posso tirar a pilha desse e reusar e utilizar ela de novo ali dentro eu não posso pegar uma pilha carregável tirar do joystick do meu videogame e colocar dentro do meu controle remoto Quando Acaba a pilha do controle remoto é sempre isso que acontece né isso porque a pilha estava encapsulada agora você pega o seu celular por exemplo celulares modernos não trocam a bateria tão simples Você pode tirar a bateria de um celular e colocar em outro celular de outra marca provavelmente não isso porque elas não foram encapsuladas de maneira Profunda o
encapsulamento profundo ele é muito importante porque eles mantém o padrão muito C celulares mais modernos ainda eles não permitem nem você abrir o o celular para poder tirar a bateria e comprar outra você tem que mandar pra assistência técnica para que essa bateria seja trocada Esse foi um modelo de encapsulamento que o fabricante do seu celular decidiu por fazer mas aqueles celulares antigos Lembra que você tirava a bateria de um colocava no outro porque eles tinham o mesmo padrão era do mesmo fabricante Isso é uma forma de encapsular com o reuso do código eu posso
reutilizar essa bateria em outros casos software também funciona assim um software bem encapsulado uma classe bem encapsulada ela pode ser utilizada em outros projetos mas para frente a gente vai ver a importância disso e a terceira e última vantagem que a gente vai levantar aqui da programação orientar do objeto com encapsulamento é reduzir os efeitos colaterais o que seria o efeito colateral você não pode danificar sua saúde sei lá pegando numa pilha uma pilha não pode ter o seu funcionamento comprometido se você encosta nela isso tudo seri um efeitos colaterais seriam efeitos danosos ou para
você ou pra pilha ou pros dois um software não encapsulado ele pode ser destruído por um programador em caa o programa de um programador pode ser afetado se uma classe se modificar e não tiver bem encapsulada se mudar a interface isso tudo vai afetar o programa então manter tudo encapsulado manter uma interface padrão vai garantir a você uma diminuição de efeitos colaterais isso tudo são vantagens da programação orientado objeto mantendo-se o primeiro Pilar que é o encapsulamento Mas vamos parar de papo e vamos para praticar você pode estar perguntando tá guan barara mas como é
que eu encapsulou como encapsular E aí eu vou trazer um exemplo que a gente já fez na aula anterior e que a gente vai refazer nessa aula aqui nós vamos trabalhar com uma cápsula que você conhece você sabe o que que é isso aí que tá aparecendo vamos analisar Então a gente tem aqui ó a gente tem um circuito a gente tem seis botõezinhos aqui a gente tem uma bateria a gente tem um conector aqui embaixo que seria esse objeto aqui vamos o que a gente importa é o seguinte Olha só esses contatos aqui tem
alguma coisa importante então eu tenho aqui esse botãozinho eu tenho tenho né eu tenho vários botões aqui que estão aparecendo todos eles eu tô marcando aqui com essas bolinhas vermelhas se eu venho com o meu dedo e tenho que encostar aqui em qualquer um desses botões Pode ser que o meu dedo escape e eu encoste aqui pode ser que eu aperte no escuro e eu Solte a bateria tá complicado mexer nesse nesse objeto não é isso então eu tô apertando esse objeto mas ele não tá seguro para mim como é que você garantiria a segurança
disso eu coloco uma capa eu coloco uma cápsula Eu transformo ele numa cápsula protegida inclusive criando uma ligação entre aqueles contatos que eu apertaria com o dedo agora eles têm pequenos botõezinhos um botão de menu um botão de ligar e desligar um botão de colocar no mudo desligar o mudo aumentar e diminuir o volume D Play da pause Então agora eu tenho botões e eles estão descritos isso é a interface do objeto percebe que o seguinte se você compra um controle remoto desse importa para você como funcionam as coisas dentro não você sabe que se
você apertar aqui você vai dar play se você apertar aqui você vai aumentar o volume se você apertar aqui embaixo você vai diminuir o volume percebe que o que tá disponível para você é somente a interface vou dar um exemplo de outro objeto o seu carro você tá dirigindo o seu carro você sabe o que que tá acontecendo lá dentro e a você pode estar falando Ah agora agora eu sei o que tá funcionando lá dentro tá você precisa saber o que está acontecendo lá dentro ou você sabe que se você apertar o pedal da
direita o seu carro vai acelerar se você apertar o pedal da esquerda o seu carro vai frear ou se o seu carro carro é manual Se você pisar no pedal do meio ele vai frear que que acontece quando você pega aquela alavanquinha que tem do lado do volante e sobe ela ah liga a seta pra direita que que você faz qu você abaixa ela liga a seta pra esquerda que você acontece quando você gira o volante ah as rodas giram você sabe o que que acontece quando você gira o volante na transmissão e tudo mais
você não sabe disso você não precisa saber disso o seu carro é uma cápsula os seus pedais o seu volante aquela alavanca elas são a sua interface elas são a maneira com que você vai interagir com o objeto Agora imagina que você tivesse que sair né levantar do seu banquinho lá do carro tivesse que ir lá e girar o motor na mão pode amassar seus dedos ou pode estragar o seu carro então isso é encapsular você encapsulou o motor do seu carro dentro de um uma cápsula que é aquele motor e você botou essa cápsula
dentro de outra cápsula que é o seu carro e o que que você deixa disponível pro mundo exterior só interface Tem coisa mais simples que isso tem como justificar alguns professor que falam não programação orientada a objeto é muito difícil cara eu só tô tentando valorizar meu trabalho na verdade eu penso seguinte se eu tornar mais fácil eu vou difundir mais a informação programação orientada a objeto é fácil acredita em mim gafanhoto mas tá Guanabara eu já entendi isso tudo agora me ensina a encapsular primeiro lugar vamos começar criando a interface para criar a interface
eu vou utilizar aqui a sintaxe da uml mais uma vez uma interface ela é representada parecida com uma classe só que ela não tem atributos uma interface só tem métodos então a gente coloca na parte de cima né dois sinaizinhos de menor e maior escreve interface dentro e embaixo bota o nome da interface no meu caso ali a minha interface é de controlador todo o controle remoto ele tem mais ou menos a mesma interface ele tem um botão para aumentar o volume ele tem um botão para diminuir o volume ele tem um botão para mudo
para mudar canal e tudo mais então eu vou criar uma interface controlador Como eu disse anteriormente a interface não tem atributos então só vou colocar métodos os métodos que eu vou colocar são Ligar coisa que eu posso fazer com controle remoto desligar eu também posso abrir o menu eu posso fechar o menu eu também posso aumentar ou diminuir o volume eu posso colocar ele no mudo posso tirar ele do Mudo eu posso apertar o Play e eu posso apertar o pause então esses aí são os métodos que a gente vai ter nessa interface então confere
comigo aqui em primeiro lugar eu tenho o ligar e o desligar ligar e desligar eu vou fazer por esse botão aqui que eu tô marcando aqui com o dedo depois eu tenho abrir menu e fechar menu eu posso abrir menu e fechar menu através do botão menu que tá aqui aumentar o volume e diminuir o volume eu vou fazer por esses dois botões ligar o mudo e desligar o mudo eu vou utilizar esse botão Play e pause eu vou apertar esse botão aqui então essa é a definição da minha interface na minha interface esses métodos
que a gente coloca aqui a gente chama de métodos abstratos o que que são métodos abstratos método abstrato é aquele método que não vai ser desenvolvido na interface eu não vou escrever o código do método na interface eu só vou dizer na interface que vai existir um método método de abrir vai existir um método de aumentar o volume eu não preciso dizer o que que vai acontecer para aumentar o volume eu só quero saber qual vai ser a reação Por exemplo quando você aperta um botão de aumentar o volume no seu controle da televisão e
o botão de aumentar o volume no controle sei lá do seu DVD a forma de aumentar o volume vai ser diferente pra sua televisão vai ser diferente pro seu DVD até porque se você apertasse no da TV ele aumentasse do DVD você ia ter um conflito de coisas ali então a forma a ação de apertar aumentar o volume é a mesma a ação a interface é a mesma só que o funcionamento a implementação é diferente então eu digo na interface ó vai ter um botão de aumentar volume aí como que ele vai aumentar não sei
eu não vou programar isso por isso ele se chama método abstrato um método abstrato ele é previsto mas não implementado já já você vai ver na prática como isso funciona e uma vez que você sabe como é que funciona uma interface já definiu uma interface agora chegou a hora de você colocar como é que funciona o Jeta outra coisa que você precisa saber É que geralmente dentro de uma interface todos os métodos que são definidos são definidos como público então acabei de colocar aí do lado um maizinho do lado de cada método todos eles vão
ser públicos e agora que a minha interface está definida basta que eu defina Como vai ser a minha classe definir a classe A gente já fez anteriormente você coloca um retângulo divide ele em três partes a parte de cima que a gente já colocou aí é o nome abaixo do nome a gente coloca o nome dos atributos e embaixo dos atributos a gente coloca o nome doss métodos Então vamos preencher aqui ó a minha classe controle remoto vai ter os seguintes atributos o volume é o volume atual que o controle remoto tá trabalhando ligado se
ele está ligado ou não e tocando se ele está tocando ou não vou colocar esse esse só esses três atributos aqui para simplificar quando você encapsula e aí vem um conceito muito importante que você precisa saber a primeira coisa a se fazer é tornar todos os atributos privados até protegidos mas nunca públicos Então vamos colocar aqui a gente tá começando agora tudo privado Então você olha aqui do lado só tem atributos privados eu não vou poder mexer em nenhum atributo isso porque eu tô protegendo a parte interna do controle a parte interna do objeto para
que meios externos não possam mexer nos seus atributos aí Vamos definir aqui graficamente como é que eu vou fazer por exemplo para esse controle remoto utilizar esse controlador como interface eu faço assim ó eu faço uma setinha pontilhada com um triangulo Zinho na ponta que que eu tô dizendo isso eu estou dizendo que esse controle remoto que essa classe controle remoto vai implementar essa interface isso é esse controle remoto vai ter que ser um controlador automaticamente Quando eu digo isso eu tô afirmando que essa classe vai ter como métodos esses métodos abstratos que foram definidos
aqui e ainda não implementados Então a primeira coisa que eu tenho que fazer é colocar a lista de métodos que estão na interface todo dentro da classe e aí sim aqui desse lado eu vou implementar ar todos esses métodos abstratos que foram definidos aqui se você ainda não entendeu calma aí que você já já vai entender se você não entender já já você vai entender na parte prática na aula prática de PHP ou de Java você vai entender abaixo desses métodos abstratos aqui eu vou colocar todos os métodos adicionais por exemplo eu tenho três atributos
aqui volume ligado e tocando todos eles são privados para eu ter acesso a eles eu preciso ter os métodos especiais e a gente viu isso duas aulas atrás o método getter e o método Setter de cada um então Vou definir o get volume set volume o get ligado set ligado o get tocando e o set tocando então eu vou definir aqui todos os métodos aqui geralmente esses métodos especiais são públicos não são eu vou fazer um negócio aqui para esse nosso exercício todos eles vão ser privados isso porque o que vai tornar Público aqui é
somente a minha interface eu não vou deixar os métodos internos livres para que eles possam ser utilizados isso é só um exemplo eu poderia colocar isso aqui público também sem problema nenhum na na verdade a gente até recomenda que todo o método getter Setter seja público mas nesse exercício eu vou colocar eles como privado só para mostrar para você que pode ser feito então vamos arregaçar as mangas vamos começar o código aqui vamos começar esse código começando a trabalhar pela interface como é que eu vou definir uma interface na programação orientada objeto normalmente ele é
um arquivo separado onde a gente vai definir a interface em vez de começar com classe fim em classe eu vou começar com Interface fim interface Vou definir lá a primeira coisa que eu vou fazer dentro dessa interface é definir Quais são os meus métodos abstratos Vou definir lá Quais são os métodos que a gente vai trabalhar Se você prestar atenção no gráfico que tá aparecendo aqui em cima a gente tem a lista de métodos que vão ser trabalhados e todos eles são métodos abstratos correto Então vamos começar aqui o primeiro método éo método ligar não
é isso então vou colocar lá público abstrato método Ligar público é a visibilidade dele ele vai ser visível do lado de fora até porque a interface ela tem que ser visível do lado de fora abstrato significa que eu não vou desenvolver o có código ali dentro eu vou definir ele em outro lugar quando eu implementar a minha interface método é o método e ligar é o nome dele e eu vou fazer a mesma coisa também pro desligar e vou fazer a mesma coisa para todos os métodos que estão aparecendo aqui em cima então tem o
ligar desligar botar no mudo tirar do Mudo aumentar volume tirar volume abrir menu fechar menu eu vou colocar todos eles ó lá ó então eu tô colocando lá abrir ligar desligar abrir menu fechar menu mais volume menos volume Ligar mudo desligar mudo Play e pause todos esses são os métodos percebe como a interface é simples Eu não escrevo código nenhum eu simplesmente tô dizendo olha essa é a lista de métodos que todo mundo que for um controlador lá em cima tá controlador né todo mundo que for definido como um controlador vai ter que implementar esses
métodos eu não digo o que que cada método vai fazer eu simplesmente digo que eu vou precisar desses métodos E aí pronto e aí a sua interface já tá criada Vamos partir agora pra criação da minha classe então toda classe A gente já sabe começa com classe fim classe e lá dentro a gente vai começar a definir os atributos os atributos que eu coloquei aqui são volume botei lá privado inteiro volume volume é 10 20 30 25 né geralmente o controle remoto muda de cinco em cinco privado lógico ligado vai ser verdadeiro ou falso né
se ele tá ligado ou não e eu tenho também o privado lógico tocando ele está tocando ou não está tocando então esses são os os meus três atributos em seguida eu vou definir os métodos especiais começando pelo Construtor para esse exemplo sempre que começar um Construtor o volume vai começar em 50 né o volume Vamos colocar que vai de 0 a 100 então o volume vai começar em 50 sempre na metade isso é quando eu criar um controle remoto ele já vai estar na metade do volume outra coisa que eu vou fazer é ligado falso
Isso é o controle vai estar desligado e também não vai estar tocando isso é eu criei um controle remoto novo eu criei um controle ele já vai estar com volume no 50 desligado e não vai est tocando e eu vou logo de cara aqui embaixo definir Quais são os métodos especiais são os getters e os sets não é isso vamos começar aqui pelo volume Então vou colocar lá é Método get volume retorne volume fim do método a gente já viu nas aulas anteriores como é que eu defino um getter um Setter vou fazer também o
get do ligado e do tocando então tá aqui ó o get do ligado agora o get do tocando além dos getters a gente tem que definir os setters Então vamos colocar aqui também o set volume Então tá lá ó o método set volume ele recebe um parâmetro que é inteiro que é do mesmo tipo do volume Então se volume é inteiro eu tenho que receber inteiro aqui ele vai ter que definir o volume que é meu atributo interno para ver que é minha variável que eu passei então eu vou ter que também fazer o set
ligado E também o set tocando eu fiz aqui todos os getters e todos os setters se você ainda tá com dificuldade em getter e Setter assista a aula onde eu falo sobre métodos especiais falei sobre o Construtor falei sobre os métodos acessores e os métodos modificadores não pule etapas se você pular etapa você tá deixando passar um conceito importante que você precisa de programação orientada objeto feito isso agora eu já fiz o que a gente já tinha feito nas aulas anteriores definir os atributos e definir os métodos especiais o Construtor os getters e os setters
falta agora a gente fazer aquela ligaçãozinha lá em cima lembra dessa ligação que a gente fez aqui em cima onde eu disse que o controle remoto vai utilizar a interface controlador eu utilizei uma palavra que é implementa isso é eu digo que controle remoto implementa controlador todo controle remoto vai ter esses métodos aqui que é o método ligar desligar aumentar abrir menu fechar menu mais volume menos volume Ligar mudo desligar mudo Play e pause como é que eu faço com que seja obrigatório isso como é que eu faço essa setinha aqui em forma de código
dentro da minha classe na linha de declaração eu coloco a linha implementa controlador isso é eu digo que é classe controle remoto implementa controlador isso tudo é uma linha só eu só escrevi em duas linhas porque eu tô apertadinho aqui mas você vai colocar uma do lado da outro a classe controle remoto implementa controlador automaticamente eu vou ser obrigado a a sobrescrever esses métodos abstratos que eu defini então eu tenho esses métodos aqui que são de forma Mais Escura então vou ter que fazer ligar desligar abrir então vou montar lá eu botei o público método
ligar você vê que não tem mais a palavra abstrato eu faço também o público método desligar e vou fazer isso para todos os métodos abstratos que existiam lá na interface Então você percebe aí do lado o código tá sendo montado tem uma reticência aí no meio de cada um dos métodos isso porque dentro dessa reticência eu vou colocar o código digo a partir de agora deu para entender como é que é a ideia quando eu defino que a classe controle remoto implementa a interface controlador eu sou obrigado a colocar todos os métodos abstratos lá dentro
dele vamos começar então fazendo ligar e desligar quando eu ligo e eu desligo o controle remoto eu vou mexer num atributo que é o atributo de ligado ou desligado eu já tenho um método para isso que é o set ligado vamos começar a trabalhar com ele Ó então se eu apertar o ligar ele vai fazer set ligado igual a verdadeiro exatamente como eu coloquei ali na hora que eu apertar o desligar ele vai dar o set ligado falso Isso é chamei o método set ligado chamei o método Setter o método modificador do atributo ligado E
vou colocar o verdadeiro ou falso de acordo com ele ligado ou não próxima da lista é abrir menu e fechar menu nessa minha classe sempre que eu abrir o menu ele vai mostrar Quais são as informações desse controle remoto por exemplo em que volume que ele tá se ele tá ligado ou não se ele tá reproduzindo ou não então a gente vai fazer dessa maneira sempre que você apertar o menu vai aparecer as informações do controle remoto beleza para isso nós vamos fazer o seguinte eu vou escrever na tela o get ligado para saber se
ele tá ligado ou não depois eu vou mostrar o volume eu tenho o get volume só que eu vou mostrar o volume de uma maneira diferente eu vou mostrar Barrinhas assim com volume né ele vai mostrar o volume 50 aí vai aparecer cinco Barrinhas 80 oito Barrinhas como é que eu faço isso eu utilizo a programação eu mandei escrever o volume e logo em seguida vou fazer o seguinte um para com i de zero até o get volume iso é ele vai até o volume pulando de 10 em 10 iso é de 10 em 10
ele vai fazer uma barrinha na prática você vai ver como isso funciona então dentro ele escreveu lá a Barrinha em pé e além de mostrar o o ligado e o volume ele vai mostrar se ele tá tocando sim ou não se ele tá reproduzindo ou se não está reproduzindo o fechar menu eu simplesmente vou escrever lá fechando menu e não vai mostrar mais nada o mais volume e o menos volume nós vamos definir ele vai aumentar Um Só vai aumentar de cinco em cinco não sei vamos ver aqui no mais volume eu seguinte eu só
vou aumentar o volume se a TV tiver ligada se a TV tiver desligada eu apertar o volume para cima não vai acontecer nada então ele só vai se o get ligado Isso é se ele estiver com a TV ligada o volume vai ser o get volume mais um eu vou dar um set volume para get volume mais um você pode por exemplo a minha televisão ela aumenta de cinco em cinco quando eu aperto lá beleza pode fazer o mais C lá isso depende da sua televisão depende do seu controle isso é a implementação é sua
você está encapsulando ela então eu tenho lá ele só vai aumentar o volume se a TV estiver ligada eu também vou diminuir o volume somente se a TV você v estiver desligada é o mesmo processo se o get ligado for verdadeiro ele vai dar o set volume pro get volume menos um só ele vai tirar uma unidade ou cinco unidades você vai definir lá nós vamos definir também se eu apertar o mudo ele vai verificar se ele está ligado e se o volume é acima de zero se eu apertar mudo e ele já tiver mudo
não adianta nada então se ele só vai botar mudo se a TV estiver ligada E se o volume for acima de zero se ele for igual a zero ele não vai fazer nada agora se ele estiver ligado e o volume estiver acima do zero vou dar um set volume para zero e vou dar o fencer então apertar o mudo é desligar o volume botar o set volume para zero o desligar o mudo ele vai fazer o seguinte se ele estiver ligado eu só posso tirar do Mudo se ele estiver ligado e se o get volume
for igual a zero Isso é se o get volume for igual a zero seja se ele estiver mudo ele vai definir o set volume para 50 E aí eu tenho o fim da condição Deu para entender então eu estou trabalhando esses esses botões da maneira mais simples possível é claro se você bota muda depois você aperta o mais ele vai aumentar o volume mas no nosso caso aqui nesse código para ficar simples ele não vai tratar dessa maneira Por fim eu tenho os outros dois métodos que são o método de Play e o método de
pause que vão funcionar da seguinte maneira eu só vou apertar play só vai funcionar o play se ele estiver ligado e se ele não estiver tocando ó lá só vai funcionar se ele estiver ligado e não estiver tocando se ele não estiver tocando aí o play funciona se ele estiver tocando o play vai funcionar como pause não é isso Então se isso acontecer ele bota set tocando para verdadeiro s ele está tocando agora o pause funciona ao contrário se ele estiver ligado e estiver tocando aí sim eu posso botar sete tocando para falso e coloco
o fim C então esses são os métodos que a gente previu aqui dentro da nossa classe e é claro que ficar só vendo falando e ficar vendo o código aparecendo aqui não tem graça nenhuma o negócio é botar a mão na massa Então chegou essa hora chegou aquela hora em que você vai escolher você quer assistir essa aula em PHP ou quer assistir essa aula em Java você escolhe a linguagem Você Decide qual é o código que você quer ver primeiro se você quiser ver os dois Obviamente você vai ter que escolher para ver um
primeiro sen não vai poder dar play em dois vídeos ao mesmo tempo mas você tem a opção aqui de duas linguagens de programação PHP ou Java então escolha Você também pode escolher diretamente do menuzinho ali em cima você vai escolher qual é a Playlist que você vai querer assistir lá você vai procurar não se esquece quando você clica ou nesse botão daqui ou no botão de baixo você vai diretamente para a Playlist você tem que assistir a aula 06b então a aula 6B é aquela que você está procurando agora que a gente vai colocar em
prática tudo isso que a gente programou a partir de agora então é isso pequeno gafanhoto a gente se vê já [Música] já i