[Música] Olá pequeno gafanhoto seja bem-vindo a mais uma aula prática do seu curso em vídeo de programação orientada objeto o meu é Gustavo Guanabara eu sou seu professor e chegamos agora à terceira aula que falou sobre modificação de visibilidades e nessa aula nós vamos fazer tudo isso que a gente viu na aula conceitual diretamente na linguagem Java E como sempre eu vou bancar o Guanabara chato e vou te falar não adianta você assistir essa aula se você ainda não viu a aula conceitual Então essa é a aula 3B não adianta você assistir a 3B se
você ainda não viu a 3aa 3ae dá todas as bases a gente viu tudo aquilo que é necessário para chegar nessa 3B então se você assumir que você pode assistir a 3B sem assistir a 3aa se depois você se enrolar ou se você não entender na aula conceitual a gente falou um pouco sobre a uml sobre o diagrama de classes e a gente construiu esse diagrama de classe que tá aparecendo aí do lado nele a gente colocou o nome da classe todos os seus atributos todos os seus métodos e definiu a visibilidade para cada um
deles na verdade definiu de uma maneira mais chute mas mais paraa frente a gente vai aprender como definir a visibilidade de cada um certinho quando a gente começar a falar sobre encapsulamento então então se você perceber tem alguns símbolos do lado dos atributos e do lado dos métodos então o maizinho é público o menozinho é o privado e o a cerquilha ou o jogo da velha define a visibilidade protegida Vamos então preparar o nosso ambiente abre o seu Net Beans e vamos começar a trabalhar com o Java Então estou aqui no meu ambiente vou abrir
o netbeans esse netbeans que já foi baixado e instalado com o jre e o jdk nós fizemos isso aqui na aula passada né Nós temos a aula dois aqui que foi definida na aula passada vou clicar com o botão direito na aula dois e vou copiar o arquivo vou clicar em copiar aqui ele vai abrir essa janela e eu vou colocar a aula 03 aqui pra gente poder colocar em prática sem perder o código da aula passada copiar E aí eu gerei a aula três abrindo aqui vamos abrir o pacote eu tenho o pacote aula
02 que ele Manteve então eu tenho esse código que foi o código que a gente criou nós vamos fazer o seguinte aqui eu vou apagar tudo isso daqui eu ficar só com C1 P status pronto para mostrar o status do objeto e eu tenho também o código da caneta que é o código da minha classe onde eu botei lá o modelo cor ponta carga tampada tá vendo eu tenho os cinco atributos eu tenho alguns métodos inclusive o método status que eu utilizei aqui para mostrar os atributos para mostrar qual o estado do objeto vamos executar
aqui ó e você vai perceber ele vai mostrar lá ó não tem modelo não tem cor não tem ponta não tem carga e não está tampada são os valores padrões na aula conceitual também a gente chegou a esse código da classe Então esse código que tá aqui ele é baseado no diagrama que tá aqui embaixo agora o que nós vamos fazer é colocar os atributos e os métodos públicos privados ou protegidos de acordo com aquilo que eu tô utilizando Então nós vamos tentar deixar o código aparecendo na tela aqui do lado para que você possa
digitar a diretamente no seu computador não se esqueça essa é uma aula prática e não sou eu que tenho que praticar é você então eu já estou aqui no código da minha classe e nós V vamos começar a definir a visibilidade de todos os atributos se você tá percebendo aí do lado modelo e cor são atributos públicos Então vou colocar como Public string modelo e Public string cor Então os atributos modelo e cor Se você olhar no diagrama aí do lado eles são públicos ponta é um atributo privado para definir como privado colocar aqui Private
é importante que eu te diga o seguinte por exemplo carga não tem a Qual é a visibilidade padrão do Java a visibilidade padrão do Java é uma visibilidade chamada de pública para pacote E na verdade a gente não vai se aprofundar muito por isso então eu vou simplificar como pública isso porque Nossos programas sempre vão utilizar um único pacote então se você não define a visibilidade ela é pública para pacotes você só vai ter problema com isso caso você trabalhe com mais de um pacote e não coloque a visibilidade via de regra a gente vai
definir a visibilidade são só três possibilidades pública privada e protegida no meu caso aqui ponta é privado então eu coloquei Private lá voltando aqui ó carga e tampada são protegidas Então vou botar protected nas duas o meu status que é um método que eu não tinha previsto antes eu vou colocar ele como público também agora eu tenho rabiscar tampar e destampar se você olhar no lado rabiscar é público então Public tampar e destampar são protegidos Ok então acabamos de definir todas as visibilidades pros meus atributos e métodos vamos salvar isso tudo vou vir aqui vou
executar só para mostrar que tá tudo funcionando perfeitamente e agora vamos comear a trabalhar eu criei aqui meu objeto C1 que é uma nova caneta a gente já viu isso na aula anterior e agora nós vamos tentar fazer a modificação deguns atributos Vamos comear com o modelo vou fazer aqui C1 modelo é igual a bic Cristal vamos ver se ele vai permitir se você perceber aqui Modelo ele é um string pública então Teoricamente se é público eu posso fazer isso vamos executar e no status agora eu tô dizendo que é uma caneta BIC Cristal dar
uma ampliada aqui para você ver então ele executou e o modelo é Bic Cristal Vamos tentar colocar a caneta como Azul vamos lá c1c igual azul vamos analisar antes cor é público vamos ver aqui ó dentro de caneta cor é pública então eu também vou poder fazer isso vamos executar mais uma vez ó lá Bic Cristal uma caneta azul Vamos tentar mexer na ponta agora colocar lá C1 P ponta igual 0.5 na hora que eu faço isso o próprio NET bein já me dá erro Parando aqui em cima eu vou ver ó ponta tem um
acesso privado dentro da caneta você percebe que o próprio netbeans já te deu o erro e se você tá assistindo as aulas também de PGP você percebe que o netbeans pro PGP ele já não dá esse erro você só percebe isso quando você vai executar o net bint como é feito em Java e foi idealizado inicialmente para trabalhar diretamente com Java então ele tem essas facilidades ele não está deixando eu mexer na ponta porque ela é privada Deu para entender se eu tentar executar ele já vai dar erro e não vai deixar eu mexer porque
ponta é privada se você vier aqui em caneta e colocar ponta paraa pública ó vamos salvar e o erro que tá lá ó ele já não vai mais aparecer ah ele tá dando erro de conversão aqui botar 0.5f ele tava dando erro de inconsistência de dados vamos executar aqui agora eu tenho ponta 05 se eu vier aqui de novo em caneta e colocar a ponta como tá no Exercício como privado e salvar automaticamente isso já vai me dar um erro dizendo que ponta tem o acesso privado Deu para entender então vou colocar essa linha como
comentário já que ela deu erro colocar como comentário barra barra na frente já ignorei Vamos então tentar fazer a mesma coisa com outros atributos em caneta eu também tenho o atributo carga e tampada ambos protegidos se eu vier aqui e tentar fazer ó C1 ponto carga você percebe que carga já tem uma chavinha ó cor não tem chavinha porque ela é público e carga tá dizendo que é protegido tá vendo aqui ó carga é protegido vou tentar fazer o seguinte ó carga igual a 80 se você perceber aqui ele não deu erro então vou executar
e eu vejo que a carga foi modificada para 80 sem problema algum Se você prestar atenção esse método que a gente tá executando que é o meu método Main ele está dentro de uma classe que está utilizando a classe caneta Dá uma olhadinha no código aqui dentro da classe aula 02 Eu tenho um método principal que está utilizando o objeto C1 que é uma caneta então ele vai deixar eu mexer num atributo pro ido porque ele está dentro de uma classe que utiliza a classe caneta e se você tá assistindo as aulas de PHP você
percebe que no PHP não é exatamente assim o protegido pro PHP funciona ligeiramente diferente essa aqui é a beleza da gente estudar duas linguagens diferentes utilizando os mesmos conceitos vamos também colocar ela como tampada C1 ponto tampada recebe falso falso não verdadeiro para ele colocar como uma caneta tampada vamos salvar executar e é lá A caneta está tampada a carga é de 80 a ponta foi a única que eu não consegui mexer é uma caneta azul e ela é Bic Cristal que é o modelo da caneta e aí deu para entender então na minha classe
no meu método Main eu não consigo mexer nos atributos nem métodos ditos privados Vamos fazer um exemplo aqui vamos ao método da caneta e vamos transformar o rabiscar aqui em privado Private isso é eu não posso rabiscar a não ser dentro da classe Vamos tentar rabiscar aqui C1 P rabiscar ele já deu erro parando na na lampadazinha á rabiscar tem o acesso privado dentro de caneta vamos transformar agora esse rabiscar aqui em público ou protegido salvar e automaticamente o erro já passou então tá lá ó el mostrou o status tá dizendo ó erro não posso
rabiscar porque a caneta está tampada vamos destampar ela na hora que eu executo Ele está rabiscando aqui no final deu PR entender dentro do meu método Main eu posso fazer uso contanto que eu esteja utilizando objeto dessa classe dos métodos e atributos que são públicos e protegidos mas não dos privados e agora eu vou sugerir uma pequena alteração aqui pra gente poder entender uma coisa vá até o código da sua classe e vamos transformar aqui o tampada em privado isso é eu não posso mexer no atributo tampada isso já vai ó na hora que eu
salvar já vai me gerar um erro aqui porque tampada eu não posso mexer vou colocar como comentário aqui então não posso mexer em tampada porque ela é privada a partir de agora eu coloquei ela como privada tá aqui ó tampada é privada só que eu vou ter os métodos tampar e destampar em vez de protegido público isso é qualquer um pode tampar e destampar a caneta e esse tampar e destampar que são métodos públicos vão dar acesso ao atributo tampada que é privado e aí fica a dúvida será que eu vou conseguir tampar e destampar
vamos ver se funciona vou vir aqui ó em vez de tampar da falso Vou chamar o C1 ponto destampar que é público Então olha aqui ó executando agora ó está tampada falsa porque eu destampei se eu botar aqui tampar e executar tá tampada verdadeiro isso por ó eu chamei o tampar e o destampar eu posso fazer isso e dentro do código do tampar eu tô fazendo com que o tampada fique verdadeiro ou falso is É eu estou mexendo nesse meu atributo aqui que é privado e o que que a gente viu na aula conceitual o
privado Só quem pode mexer é a própria classe então Ó aqui dentro eu posso mexer no tampada aqui fora eu não posso mexer mas o tampar é público ó o método tampar é público e pode mexer em tampada que é privado porque esse código está dentro da própria classe ficou confuso cabeça deu uma girada Não se preocupa a gente vai se aprofundar um pouquinho mais sobre isso mas eu gosto sempre de dar o mesmo exemplo imagina o seguinte você vai no supermercado e compra um produto por exemplo o nosso famig gerado controle remoto Esse controle
remoto custa r$ 0 na hora de ir embora no mercado o que você tem que fazer tem que pagar o atendente vai passar no leitor de código de barra vai falar senhor r$ 0 você vai pegar a nota de r$ 50 e vai dar para ele ele vai te dar R 10 em troco não é isso no supermercado o caixa aquele lugar lá que tem o dinheiro ele é Privado não é qualquer pessoa que pode mexer Só quem pode mexer você não pode pegar r$ 50 botar no cxa e pegar 10 você tem que entregar
pro seu atendente o atendente vai pegar os R 50 vai colocar no caixa e vai te dar o troco percebe o seguinte o Seu acesso ao caixa é privado você não pode acessar o caixa mas o atendente pode e entre você e o atendente existe o acesso público Deu para entender você não pode mexer no caixa mas o atendente pode se você não pode botar r$ 50 no caixa você você dá pro atendente o atendente você tem um acesso público pro atendente o atendente vai mexer no caixa já que ele pode ter acesso a ele
vai pegar os r$ 1 de troco e vai te entregar Deu para entender Qual é essa passagem isso é de suma importância e que você vai aprender mais aprofundadamente na próxima aula que é a aula que trata dos métodos específicos por enquanto o que eu te peço é o de sempre pratique não adianta você assistir Ó bota a mão no queixo e fica assistindo a fazer não adianta a aula é prática você tem que praticar não eu eu tô praticando aqui Você também precisa praticar daí e o que eu gosto de pedir sempre é o
seguinte curta nossas aulas compartilha se inscreve no canal você é inscrito no canal sempre é avisado e na hora de compartilhar nas redes sociais vai mostrar no Facebook vai mostrar no Instagram onde você quiser mostrar pras pessoas Manda o link da playlist completa isso por Quando você vai chegou na aula três o cara tem que assistir a um e a dois Então mostra diretamente nas suas redes sociais a Playlist completa olha is aqui galera assiste o curso de orientação objeto com Java Então a gente tem duas playlists que estão andando em conjunto a programação orientada
objeto com PHP e essa que você tá assistindo que é a programação orientada objeto com Java toda semana sai três aulas uma aula conceitual e duas aulas práticas uma em PHP e uma em Java você pode a qualquer momento assistir as duas você vai perceber que entre Java e PHP existem pequenas diferenças inclusive por exemplo a visibilidade protegida que a gente acabou de ver é um pouco diferente no Java e no PHP Então são linguagens diferentes características diferentes e você pode aprender as duas mas vou te dizer o mais importante é você entender a parte
conceitual porque ela vai ser utilizada em todas as linguagens de programação que são orientadas objeto Então é isso pequeno gafanhoto se inscreve no canal curta compartilha ajuda o curso em vídeo a crescer porque se você precisa da gente a gente também precisa de você um forte abraço pratique sempre e até a [Música] próxima i