‫Bem vindo de volta.
‫Neste vídeo, gostaria de mostrar as propriedades e ensinar como funcionam as propriedades e porque um vídeo seria muito
‫longo e eu criei um vídeo no passado sobre propriedades e era um pouco confuso demais como
‫parecia.
‫Decidi dividi-lo e regravá-lo porque simplesmente não era bom o suficiente, ao que parece.
‫Portanto, se você encontrar outro vídeo que seja totalmente confuso e não o ajude em nada, por favor,
‫me avise, porque eu quero que esse curso seja o melhor que existe.
‫Tudo bem.
‫Portanto, o que precisamos fazer é, antes de tudo, criar uma nova classe.
‫Então, vamos projetar e adicionar uma nova classe, porque quero ensinar a vocês os fundamentos das propriedades
‫porque são um aspecto ou um conceito importante que vamos usar muito.
‫É por isso que é realmente importante que você entenda toda a sua amplitude.
‫OK, então começamos criando uma nova classe e chamarei essa classe de caixa.
‫Tudo bem.
‫Portanto, seja apenas uma aula muito simples.
‫Portanto, esta classe de caixa será apenas uma classe que possui uma certa quantidade de variáveis.
‫Tudo bem.
‫Então, por exemplo, eu só quero calcular o volume da caixa com base em seu comprimento, sua altura e sua
‫largura.
‫Tudo bem, então vamos apenas criar essas variáveis e irei torná-las públicas por enquanto.
‫Tudo bem.
‫Vou tornar este um comprimento público e depois outro.
‫E este será a altura e então precisamos da largura.
‫E por último quero ter também o volume para que o volume seja o resultado final desta caixa.
‫Tudo bem.
‫Portanto, agora tenho um monte de variáveis.
‫Agora, essas variáveis não são variáveis simples.
‫Eles são, na verdade, variáveis de membro, o que significa que são as variáveis no nível da classe,
‫neste caso da caixa de classe.
‫Portanto, eles têm um impacto direto em toda a aparência da caixa ou em toda a estrutura de uma caixa, por assim
‫dizer.
‫Tudo bem.
‫E vamos ver como podemos usar variáveis de membro de uma maneira diferente ou até mesmo uma estrutura diferente, que é ainda
‫mais segura, porque o problema aqui é que elas são públicas, então não são seguras.
‫Veremos como podemos consertar isso.
‫Portanto, antes de mais nada, vamos criar um novo método aqui.
‫E vou chamar isso de display info, porque a ideia por trás disso é que ele
‫apenas exibirá o comprimento, com a altura, e então calculará o volume e nos dirá o quão grande é o volume.
‫Tudo bem.
‫Vou apenas escrever uma declaração curta na linha certa.
‫Então, eu insiro um duplo toque, o que cria esta declaração da linha certa do console aqui para mim.
‫E aqui, vou apenas dizer algo como comprimento vai ser a primeira entrada e altura.
‫Vai ser a segunda entrada.
‫Então, vou usá-lo assim.
‫E com está a terceira entrada.
‫Então o volume está e eu tenho a quarta entrada.
‫Tudo bem.
‫Portanto, esta é a minha declaração de linha de passeio inteira.
‫E as variáveis que desejo usar são comprimento, altura.
‫Com.
‫E o volume agora é algo que preciso calcular com base no comprimento, altura e largura.
‫Então, vou fazer isso.
‫Vou apenas dizer que o volume é o comprimento multiplicado pela altura multiplicada pela largura.
‫Fazer isso cria esse volume ou calcula o volume, pois o volume é o resultado desse cálculo aqui, aumente
‫os tempos laterais onde vai ser o volume.
‫Tudo bem.
‫Agora, deixe-me dividir em duas linhas para que fique um pouco mais legível.
‫Tudo bem.
‫Portanto, agora temos este método, este plano por enquanto.
‫Vamos salvar este arquivo e ir para o nosso programa.
‫sim.
‫Aqui vamos usar esta classe.
‫Vamos criar um objeto desta classe.
‫Como podemos criar objetos?
‫Nós vamos.
‫Então eu crio um novo objeto dele, vou chamar este de uma caixa e vai ser uma nova caixa.
‫Portanto, é assim que você cria um objeto de uma classe ou uma instância de uma classe.
‫Portanto, estou criando uma instância desta caixa de classe.
‫Então, praticamente uma variável do tipo caixa e caixas que criamos nós mesmos.
‫Agora, o que posso fazer é atribuir os valores a ele
‫para que eu possa prosseguir e dizer, OK, o comprimento será três, a altura será quatro e o com será cinco, algo Curtiu isso.
‫Claro, eu preciso de um sinal de igual aqui também para que isso seja correto.
‫Agora o que posso fazer é seguir em frente e iniciar a chamada.
‫Esta informação de jogo, então isso é muito legal.
‫Eu não preciso mais desta declaração de linha clara aqui.
‫Agora posso salvar este arquivo e executá-lo.
‫Então, vamos executar este arquivo e ele exibirá todas as informações e o console.
‫Então, aí estamos nós, Lenfest grátis e Hyde é para e com seus cinco, então o volume é 16.
‫Tudo bem, então deu certo.
‫Isso é ótimo.
‫Portanto, essa informação de exibição funcionou e apenas reproduziu os detalhes que queríamos.
‫Agora, o que poderíamos fazer é alterar os valores ou o que podemos alterar os valores das variáveis de membro de
‫nossa classe de caixa, e podemos fazer isso porque eles são públicos.
‫Direito.
‫Portanto, este é público.
‫Este é público.
‫Este também é público.
‫Então, todos eles são públicos.
‫Agora, esse é um código muito inseguro porque, neste ponto, se você escrever robôs membros, que são totalmente públicos, todos
‫podem alterá-los a qualquer momento.
‫Assim, todos que podem criar um objeto ou todas as classes que podem criar um objeto de caixa
‫serão capazes de alterar todos os valores daquela instância da caixa.
‫Portanto, todos que tiveram acesso a esta caixa podem alterá-la agora.
‫E isso é algo que pode causar muitos problemas no futuro, bem quando você programa e uma equipe
‫e funcionários podem se tornar realmente incômodos para fazer assim.
‫Portanto, há maneiras melhores, há maneiras mais limpas de implementar isso, porque talvez você não queira que isso
‫seja ajustável por completo.
‫Talvez você queira que o comprimento tenha um determinado valor.
‫Ninguém pode ajustar isso.
‫Então o que você pode fazer é fazer isso.
‫Muito privado, portanto, o comprimento da variável de meu membro será privado e apenas atribuirei um valor padrão de
‫três a ele.
‫Portanto, agora cada caixa que eu crio terá o valor para o comprimento de três.
‫Assim, cada caixa terá um comprimento de três polegadas ou metros ou qualquer que seja a métrica que você está usando.
‫Portanto, agora não posso mais atribuir comprimento.
‫Como você pode ver, recebo uma caixa de erro como esta inacessível devido ao seu nível de proteção.
‫Portanto, adicionamos o nível de proteção tornando-o privado.
‫Portanto, agora não podemos ajustá-lo mais.
‫Então, como podemos mudar isso?
‫Bem, não podemos, não desta forma.
‫Portanto, precisamos implementar algo.
‫Precisamos implementar uma maneira alternativa de alterar o comprimento da caixa.
‫Tudo bem.
‫Para fazer isso, o que podemos fazer é implementar algo chamado setters e getters.
‫Portanto, neste caso, não podemos nem acessar mais o comprimento da caixa.
‫Então, digamos que eu queira escrever o comprimento.
‫Então, eu quero consultar o comprimento correto da caixa de linha e, em seguida, acessar apenas o comprimento da caixa.
‫Como você pode ver, meu ID nem me mostra a variável.
‫Não consigo acessar a caixa com esse comprimento, então não posso alterá-la, mas também não consigo lê-la.
‫Tudo bem.
‫Portanto, não posso obtê-lo nem configurá-lo.
‫Portanto, esta é a configuração e a obtenção da variável.
‫Esses são termos muito importantes, definindo e recebendo, porque agora o que podemos fazer é criar métodos em
‫nossa classe de caixa, o que nos permitirá definir ou obter o comprimento variável.
‫Então, vamos apenas fazer isso.
‫Vamos criar um.
‫Setar, tão público.
‫Voight definiu o comprimento, então este verbal irá definir o comprimento agora, como será?
‫Bem, ele precisa de uma variável ou parâmetro aqui.
‫Ele precisa de um valor aqui para o qual possa definir.
‫Então vai.
‫Precisa de um inteiro aqui, e vou chamá-lo apenas de comprimento.
‫Portanto, ele definirá o comprimento agora, irei definir o comprimento, comprimento igual.
‫Agora, isso é confuso e também está incorreto.
‫Portanto, recebo um aviso aqui.
‫Nem se engane aqui, porque como você pode ver, as cores são diferentes.
‫Direito?
‫Portanto, esta cor e aquela cor são ligeiramente diferentes.
‫Este é uma cor muito clara e este é uma cor azul mais escura.
‫Então, o que está acontecendo aqui?
‫Porque estamos usando a mesma palavra aqui, usamos comprimento aqui.
‫Estamos usando comprimento e aqui, aqui também.
‫Portanto, este comprimento aqui é realmente este ou deveria ser este comprimento aqui no topo.
‫Então, se eu quiser fazer isso corretamente, posso usar essa palavra-chave para isso.
‫Ao fazer isso, digo, OK, quero alterar o comprimento, que é.
‫Peças.
‫Desta classe é chamada de box, então eu quero mudar o comprimento deste objeto.
‫OK, então neste caso do objeto que é criado da caixa de classe.
‫Tudo bem.
‫Portanto, seja qual for o comprimento que estou atribuindo, seja qual for o comprimento que tenha passado, um comprimento de conjunto é
‫chamado este método será.
‫Esta variável aqui, e será definida para o comprimento, que é minha variável de membro privado da minha
‫caixa, isso é muito importante porque o que posso fazer agora é ir em frente e alterar o comprimento
‫da caixa ao fazer o conjunto comprimento.
‫Também posso definir o comprimento para, por exemplo, três e agora executar o código novamente e ele funcionará perfeitamente
‫bem.
‫E vamos ver, tudo bem, estamos livres de comprimento, hidrosfera e assim por diante.
‫Tudo bem, então agora vamos dizer que eu não quero ter três porque era o valor padrão.
‫Agora, digamos que eu queira ter o comprimento de e agora podemos ver que está funcionando e o volume também foi
‫ajustado.
‫Portanto, até funcionou para o cálculo.
‫Então isso é ótimo.
‫Portanto, agora podemos definir uma variável, que é uma variável membro de uma classe.
‫Então isso é importante.
‫Estamos falando de uma classe diferente.
‫Não está na mesma classe.
‫Agora, o que podemos fazer é tentar acessar esse comprimento porque é privado.
‫Direito?
‫Então, como eu poderia acessá-lo?
‫Porque talvez eu realmente precise dessa variável aqui em algum lugar.
‫Quero acessar o comprimento, mas não consigo.
‫Portanto, o que posso implementar é algo chamado GETER.
‫Então eu pego o comprimento público.
‫E, neste caso, o tipo tem que ser o mesmo tipo da variável que desejo retornar.
‫E, neste caso, desejo retornar o valor desse comprimento onde desejo retornar o próprio comprimento.
‫Direito.
‫Portanto, é do tipo final.
‫Portanto, preciso retornar um tipo de extremidade para este método.
‫Portanto, este terá comprimento.
‫E esta também é a convenção para usar o nome get com G maiúsculo e então o nome da variável que você
‫deseja obter.
‫E, neste caso, quero obter o comprimento variável e agora você apenas retorna o comprimento.
‫Agora, para ser mais preciso, você deve retornar esse comprimento.
‫Claro, você poderia apenas por esse comprimento.
‫Mas quando você adiciona isso, fica perfeitamente claro que estamos falando sobre a variável de membro aqui.
‫Portanto, estamos falando sobre a variável que está no nível mais alto desta classe.
‫Portanto, não está dentro de nenhum método ou algo assim.
‫Você não poderia nem mesmo acessá-lo desta forma.
‫Mas aqui é esse comprimento específico de que estamos falando.
‫Então, se eu clicar nele, você pode ver o meu I. D. marca automaticamente.
‫E também está marcando esse comprimento aqui na parte inferior.
‫Agora posso obter o comprimento usando get length usando este método público e é importante que seja público
‫porque, se não fosse público, não poderia acessá-lo.
‫Portanto, neste caso, estou salvando a caixa novamente e agora estou obtendo o comprimento chamando este método get length e
‫agora de repente ele funciona novamente.
‫Agora posso ir em frente.
‫E claro.
‫Bem no lugar correto aqui também, comprimento e vamos executá-lo novamente, e vai dizer que o comprimento da caixa
‫é e, neste caso, é quatro.
‫Tudo bem, então esta é apenas a preparação para propriedades, mas é um conceito importante, setters e
‫getters.
‫Isso é algo que você também verá com frequência.
‫Portanto, é uma abordagem totalmente correta, mas existem abordagens muito mais fáceis e rápidas.
‫Portanto, esta é apenas uma maneira de fazer isso.
‫Mas vou mostrar a vocês duas ou mesmo três outras maneiras de tornar isso ainda mais rápido e ter o mesmo
‫tipo de proteção, porque o que estamos fazendo aqui é chamado de encapsulamento.
‫Portanto, estamos encapsulando o excesso de nosso comprimento.
‫A definição de é que o encapsulamento se refere à construção de dados com os métodos que operam
‫nesses dados ou à restrição de acesso direto a alguns dos componentes de um objeto.
‫Então é exatamente isso que estamos fazendo.
‫Estamos restringindo o acesso a este componente chamado comprimento, que faz parte de um objeto ou nossa caixa de classe
‫da qual podemos criar objetos.
‫Tudo bem.
‫E criamos esses setters e getters para ainda ajustá-los.
‫Agora, a beleza é que você pode definir como deseja encapsular.
‫Nesse caso, tornei os dois públicos.
‫Mas e se eu não quiser que eles se tornem públicos?
‫E se eu quiser que seja.
‫Não é adequado, então digamos que não quero que ninguém seja capaz de definir o comprimento da minha caixa, então o que
‫eu poderia fazer é tornar esta privada.
‫Então agora apenas.
‫As classes que herdam de nossa caixa ou da própria caixa serão capazes de definir o comprimento de fora, não seremos mais
‫capazes de definir o comprimento.
‫Portanto, definindo o comprimento aqui, esta linha de código não está mais funcionando porque eu decidi,
‫OK, se alguém quiser definir o comprimento, eu queria ser apenas a própria classe ou classes herdadas, mas não classes fora
‫de mim.
‫Isso é algo que você pode modificar diretamente daqui, você também poderia dizer, OK, mesmo obter
‫o comprimento não seria permitido fora daqui.
‫Tudo bem.
‫Mas agora o legal é que você pode ir em frente e ajustá-los.
‫Então, digamos que alguém deseja obter o volume.
‫E agora, neste ponto, não ajustamos o volume ainda.
‫Então, o que podemos fazer em vez disso, podemos prosseguir e dizer public int get volume.
‫E se alguém quiser pegar o volume, não vamos apenas devolver o volume, mas o que
‫faremos é devolveremos.
‫Este comprimento inicial multiplicado por este pensamento, altura multiplicada por este pensamento, então se alguém quiser obter
‫o volume, não obterá o volume diretamente.
‫Portanto, não obtenha acesso a esta variável diretamente.
‫Esta variável de volume.
‫Mas eles realmente obterão o resultado do cálculo.
‫Então, agora, se eu salvar isso e prosseguir e usar obter volume, o volume das caixas é e agora exibirá o
‫volume da caixa.
‫Então vamos ver caixa, esse volume é 60.
‫Então agora, geralmente, o que fazemos com esses setters e getters é que
‫não damos acesso diretamente à variável, à variável membro, mas apenas damos acesso a um método que
‫então pode ajustar a variável e nós mesmos podemos decidir como passamos esse valor.
‫Então, como distribuímos o valor neste caso com grande volume, decidimos, OK, não queremos fornecer o volume em
‫si, mas queremos fornecer o resultado de um cálculo.
‫Ou poderíamos dizer, OK, se alguém quiser obter o volume, diremos que
‫será o volume vezes dois ou algo assim, ou se alguém quiser definir a duração e for algo negativo.
‫Então, digamos que tornemos isso público novamente, a voz pública por completo e agora verificamos se.
‫Comprimento.
‫É menor que zero.
‫Vamos lançar um erro, lançar um novo tamanho de exceção ou este comprimento deve ser maior que zero.
‫Tudo bem.
‫Portanto, se o comprimento for menor que zero, lançaremos uma exceção e isso apenas travará nosso programa, de forma que esta
‫linha nunca será executada.
‫Então, agora vamos tentar isso.
‫Vamos para o nosso programa e definir o comprimento da caixa para um valor negativo.
‫Vamos definir para menos quatro.
‫Agora vamos executá-lo novamente e veremos que obteremos uma exceção.
‫Portanto, nosso programa falha e temos uma exceção aqui dizendo.
‫Sistema, comprimento excepcional deve ser maior que zero.
‫Então você vê, com exceção lançada, podemos lançar nossas próprias exceções.
‫Podemos até dizer o que as exceções deveriam dizer.
‫E deve ser significativo.
‫Deve ser algo que seja útil e deixe claro qual é o erro.
‫Nesse caso, criamos um erro porque definimos o comprimento como algo que é menor que zero.
‫Tudo bem.
‫Então esse é o poder desses setters e getters, porque você pode se perguntar: por que eu precisaria desses setters
‫e nos pegaria?
‫Por que não posso simplesmente acessar o comprimento diretamente se apenas tenho setters e recebo também?
‫Agora que você vê, você pode decidir ativamente o que será definido e o que será obtido se
‫alguém tentar acessar essa variável e alterá-la ou mesmo apenas recuperá-la.
‫Tudo bem, então isso foi muito mais longo do que eu esperava e eu estava planejando
‫fazer este vídeo, mas eu realmente queria deixar tudo claro porque isso será um
‫importante trampolim para o próximo conceito, que será propriedades.
‫Então, você verá como podemos resumir tudo ou torná-lo muito mais curto usando propriedades.
‫Então, eu diria que vamos para o próximo vídeo, onde veremos como usar as propriedades e como elas
‫se relacionam com o que aprendemos neste vídeo.
‫Eu espero que faça sentido.
‫Se você tiver alguma dúvida, por favor me avise.
‫E sim, apenas escreva um comentário e, claro, discussões.
‫E por falar nisso, muito obrigado a todos que deram feedback, porque realmente me ajuda a tornar
‫o curso melhor se você apenas assistir passivamente, porque está tudo bem.
‫Mas eu realmente aprecio se você tem um feedback e é construtivo e realmente me ajuda a saber em que ponto
‫algo não está claro, porque se você apenas disser, OK, este vídeo é um lixo completo, não
‫será tão útil como se você diga, OK, não entendi o conceito um minuto e cinco ou algo que entenda
‫muito melhor qual é o problema.
‫Obrigado novamente e até o próximo vídeo.