Curso POO Java #08b - Agregação entre Objetos com Java

130.55k views3650 WordsCopy TextShare
Curso em Vídeo
Nessa aula de POO, vamos aprender como trabalhar com relacionamento entre classes criando Agregação ...
Video Transcript:
[Música] Olá pequeno gafanhoto seja bem-vindo a mais uma aula prática do seu curso de Java orientado ao objeto o meu nome é Gustavo Guanabara eu sou o seu professor e agora nós chegamos à aula 08b que é a aula prática da aula teórica 08 a E durante essas aulas oito a gente fez o relacionamento entre classes e eu mostrei para você como dar uma aprimorada naquele nosso exemplo do Ultra emoji Combat Então o que a gente fez na aula teórica agora a gente vai fazer diretamente na aula prática utilizando como base a linguagem Java se
você se lembra muito bem da última aula eu mostrei para você como fazer a ligação entre as duas classes lutador e luta por meio de uma agregação e se por acaso você não sabe o que que é relacionamento entre classes o que que é agregação e como tudo funciona É porque você pulou a aula teórica ou então porque você não prestou atenção direito nela o que a gente fez na aula passada foi exatamente criar objetos instanciar objetos de uma determinada classe e fazer uma ligação desses objetos diretamente com outra classe que no nosso caso aqui
é a classe Luta então nós temos aqui ó apresentado do lado a gente tem dois objetos de lutador dois objetos instanciados da classe lutador e aqui embaixo a gente tem a classe luta nessa classe luta a gente vai fazer ligações isso é na classe luta a gente tem os atributos desafiado e desafiador que são instâncias de lutador Então a gente vai fazer a ligação entre as classes você assistiu a aula teórica você sabe disso se você ainda não sabe assista a aula teórica clicando aqui em cima ó você aqui no de interatividade você vai ver
a Playlist diretamente do curso de programação orientada do objeto na linguagem que você escolheu em Java ou em PGP clique nela e assista a aula 08 a sem ela você não vai conseguir na verdade sem a 07 A e B e a 08 a você não consegue dar prosseguimento nessa aula até porque muitos dos códigos que eu vou utilizar Aqui foram feitos na aula 07b então para de preguiça senão depois você vai ficar botando a culpa na programação vai dizer que programação orientada do objeto é difícil você que não estudou direito basicamente o código que
a gente criou foi esse daqui que tá aparecendo do lado então ó a gente eu botei lá em cima a classe do as duas classes né na verdade o instanciamento de um objeto de lutador e a classe de luta que tá lá em cima aqui do lado eu coloquei a base da classe luta que é a nossa classe nova e que vai utilizar aqui do lado ó duas vezes a classe lutador Então você tem a relação ali de vermelhinho apontando a seta para cima Então vamos entrar no nosso ambiente eu vou deixar como sempre deixo
essa tela aqui do lado esse código vai ficar parado aqui pra gente poder fazer a relação entre um e outro então vamos abrir exatamente aquele mesmo projeto que a gente fez na aula passada e vamos ver como isso tudo funciona já estamos aqui no nosso ambiente do netbeans vou abrir em projetos eu tenho o Ultra emoj Combat que foi o projeto feito na aula passada vou ampliar aqui vou abrir a área de pacotes e vou abrir o pacote Ultra emoji Combat nós já temos a classe lutador que foi aquela classe que a gente criou na
aula passada deixa eu dar uma ampliada aqui na letra e também criamos a classe principal né a classe chamadora onde a gente tinha aqui os lutadores cada um foi cadastrado de 01 até 05 eu vou tirar isso daqui só tá deixa somente até aqui então fizemos a declaração do vetor de seis posições e colocamos aqui os lutadores dentro do vetor O que nós vamos fazer agora é clicar aqui no projeto botão direito em cima do nome do pacote Então tá o pacote aqui amarelinho botão direito em cima do nome dele novo e nova classe nessa
nova classe nós vamos chamar de luta e aí nós vamos criar esse código que é da classe luta que está exatamente igual ao daqui vamos começar aqui com os atributos e os métodos métodos públicos primeiro o atributo desafiado que é exatamente do tipo lutador eu vou utilizar o nome da outra classe diretamente Aqui você vê que o Java não tem objeção nenhuma em fazer isso outra coisa é o lutador que é desafiante você percebe aqui ó compara o que tá aqui com o que tá aqui do lado tá bem parecido vamos fazer rounds e um
Lógico que é o aprovada então esses são os atributos se você comparar o código em Java com o código em algoritmo tá muito parecido agora nós vamos criar os dois métodos o marcar luta e o lutar todos eles públicos Public void marcar luta e Public void lutar compara o que tá aqui com o que tá aqui do lado não existe quase nenhuma diferença então não tem muito mistério né Outra coisa que nós fizemos na aula passada foi criar os métodos getters os métodos setters eu coloquei como preferência aqui ó nesse lado tá aparecendo o método
set desafio e o método get desafio E lembra que ele retorna não um tipo primitivo e sim um tipo abstrato de dado vamos ver como é que se comporta isso fazendo em Java e nós vamos criar automaticamente o código para ficar mais simples para você aqui nós vamos criar os métodos especiais e vamos inserir código ó botão direito inserir código e nós vamos getter e Setter nós não vamos ter Construtor nessa classe Pode até ser feito mas nesse exercício eu não fiz vou querer todos os getters e sets tá vendo aqui ó que ele é
do tipo lutador eu vou gerar e ele já vai gerar ó o desafiado ó get desafiado retorna um tipo lutador set desafiado ele recebe um parâmetro do tipo lutador então ele já fez automaticamente eu não preciso me preocupar com getters E setters mesmo quando eu utilizo tipos abstratos de dados que são esses caso aqui e agora que a gente já fez tudo isso falta a gente complementar tá os nossos métodos públicos que a gente vai colocar lá para ficar disponível na hora da gente criar uma luta sendo assim eu vou colocar aqui desse lado o
código que a gente fez do marcar luta e aí ele vai receber dois parâmetros aquilo tudo que tá acontecendo aqui e que aconteceu lá na aula teórica a gente vai fazer diretamente no Java vou deixar aqui do lado mais uma vez para você poder ter o efeito de comparação você poder ver o código Olá e falar assim pô pera aí mas parece bastante parece porque se a gente entendeu na teoria botar pra linguagem de programação não vai ter dificuldade de nenhuma então como eu disse anteriormente o marcar luta vai receber dois parâmetros do tipo lutador
vai ser lutador L1 L2 tem que botar lutador também lutador L1 lutador L2 ele vai receber dois lutadores como parâmetro e vai verificar se L1 pode lutar com L2 vamos verificar aqui a primeira coisa nós vamos ver se eles são da mesma categoria ó se L1 pon get categoria for igual a L2 pon get categoria isso daqui o net Bing deve reclamar um pouquinho já reclamou ele vai pedir para usar o equals no lugar do igual igual já que o tipo string né que é a categoria string já que esse tipo string ele é uma
classe ele pede para que você use o método equals Então vou botar aqui ó é L1 pget categoria p equ a L2 pget categoria A e tira esse final aqui então é a mesma coisa que tá ali do lado só que eu tô utilizando equs e agora ele não não tem mais nenhum aviso ele vai fazer se a categoria do primeiro for igual à categoria do segundo e também o e a gente vai fazer assim ó dois ex comerciais como a gente aprendeu lá na aula de programação de Java e se você não sabe a
programação básica de Java você tá perdendo a oportunidade aqui em cima também tem um link diretamente pro curso de Java para iniciantes lá você vai aprender toda essa base também não adianta você pular etapas e tentar aprender programação orientada objeto se você não sabe a programação a base da programação de Java que eu te dei nesse outro curso então é extremamente recomendável que você faça o curso básico Antes de a gente fazer esse curso intermediário ele vai fazer se a categoria for igual a categoria 2 e o L1 for diferente de L2 Aí sim ele
vai fazer o aprovado ser verdadeiro então this ponto aprovada recebe verdadeiro o desafiado recebe L1 então des ponto desafiado recebe L1 e des pon desafiante recebe L2 caso contrário Isso é se a categoria não for igual ou então se o se o lutador for o mesmo o que que eu vou fazer eu vou fazer com que this ponto aprovada seja falso e this ponto desafiado seja igual a nul e this ponto desafiante seja também nul isso é não tem lutador E com isso foi criado aqui o código de marcar luta agora a gente tem que
fazer o outro código que é o momento da luta efetivamente o momento da luta se você perceber aqui não recebe parâmetro nenhum e utiliza um randomizador utiliza um gerador de números aleatórios a gente vai utilizar a classe Random do Java para fazer essa tarefa então vou deixar mais uma vez o código parado aqui e a gente vai ver como é que a gente adapta esse código que tá aqui do lado diretamente no Java então vamos parar aqui no método lutar já está parado aqui e como feito anteriormente eu vou fazer aqui ó se this ponto
aprovada Isso é se a luta estiver aprovada a luta vai acontecer senão eu vou dá um erro aqui ó sistem out a luta não pode acontecer certo então el Se eu mandar lutar e a luta não estiver aprovada a luta não pode acontecer agora se ela estiver aprovada eu vou apresentar o lutador um que é o desafiado então this ponto desafiado ponto apresentar e vou apresentar o desafiante this ponto desafiante ponto apresentar vou fazer o seguinte aqui ó vou escrever três hashtags desafiado três hashtags e vou escrever também desafiante que Posso acrescentar funcionalidades a apresentação
que já estava acontecendo agora chegou o momento de verificar a luta né vamos gerar o resultado da luta então primeira coisa que eu vou ter que criar é um objeto do tipo Random Random que eu vou chamar de aleatório sem acento É New Random esse daqui vai utilizar a classe Random ele deu um erro aqui ó basta que eu clique com o botão esquerdo do mouse adicionar importação ele vai vir aqui em cima e vai importar a classe Random que está dentro do pacote Java u então vamos aqui ó agora nós vamos fazer com que
o vencedor que vai ser inteiro recebe o valor de aleatório pon next int 3 is ele vai gerar três resultados 0 1 ou dois a partir de agora nós vamos usar como você olha aqui do lado a estrutura escolha que é o Switch o Java vai ser Switch vencedor abre e fecha aí eu vou ter o Case zero faz alguma coisa Case 1 faz uma coisa Case 2 faz outra coisa exatamente o que a gente fez anteriormente esse aqui é para empate esse daqui é o desafiado vence e esse daqui é o desafiante vence Lembrando
que pro Switch eu tenho que ter um Break em cada uma das estruturas Então já vou colocar aqui para não ter problema meu último comando tem que ser o Break Então vamos adicionar aqui olhando o código do lado Case zero ele escreve na tela empatou e vamos fazer o seguinte this ponto desafiado ponto empatar luta e this pon desafiante ponto empatar luta compare o daqui com o do lado é igual vamos fazer aqui o Case 1 escreve na tela venceu e vamos colocar o nome do desafiado this P desafiado get nome Vitória do a vou
colocar isso daqui vamos fazer P desafiado pto ganhar luta e vamos fazer automaticamente o desafiante perder luta usandoos métodos lá da classe e aqui seafi gha vamos fazer aqui vamos mostar desafiante get nome e vamos L vitória do e bota o nome do cara vamos fazer com que desafiante vença ganhar luta e vamos fazer com que p desafiado perca luta perder luta e aqui está completo O meu código que está aparecendo aí do lado tá exatamente o que está desenvolvido aqui em Java então fazer esse código foi super fácil agora nós temos que testar no
nosso código principal temos também o código principal que a gente fez anteriormente a parte do vetor já foi criada o que a gente vai ter que criar é somente a parte de baixo e fazer aquilo tudo funcionar Então vamos diretamente pro netbeans Vamos pro nosso código principal onde tem o nosso método Main e vamos começar a colocar tudo para funcionar vamos lá ó já tá tudo salvo aqui vamos salvar tudo já tá tudo salvo vamos ao programa principal Então eu tenho as classes ó eu já tenho aqui a classe lutador a classe luta a classe
lutadora não altera em nada você percebe que eu criei uma classe totalmente nova que vai utilizar todas as características da classe antiga diretamente no meu código se eu executar aqui não vai acontecer nada tá vendo construído com sucesso não aconteceu nada porque eu não fiz ação nenhuma agora nós vamos de acordo com o que tá ali do lado eu criei um objeto 01 que é da classe Luta então luta 01 é uma New luta compara ali e vê se não tá bem parecido vamos fazer com que o ec01 seja marcada marcar luta entre quais lutadores
eu vou tentar marcar a luta entre o pretty boy e o scripts Então vamos marcar entre o pretty Boy que é o l0 e o script que é o L1 exatamente o que tá acontecendo ali do vamos dar play ele construiu com sucesso isso é a luta foi marcada vamos ver se a luta pode acontecer quando eu mandar a luta acontecer ó lutar os lutadores vão ser apresentados O resultado vai ser calculado e ele já vai atualizar automaticamente tudo ó executei ó o desafiado ó chegou a hora apresentamos O Lutador proy exatamente o que a
gente tinha feito antes a hora do desafiante chegou a hora e a luta empatou segundo o meu randomizador aqui a luta empatou Viu como é simples a luta empatou e tudo foi atualizado olha só aqui ó se empatou eu tinha um empate para um lutador e três empates pro outro então esse lutador ficou com dois empates e esse outro ficou com três como eu vou fazer isso vou mostrar o status deles vou mostrar aqui ó vou mostrar o l0 ou vou mostrar o status de l0 l0 ponto status e depois o L1 ponto status que
no caso se eu executar de novo pode ser que não dê empate né Dê outra coisa mas vamos lá então olha ol só o desafiado tá lá o desafiante tá lá aí vamos ver o que aconteceu aqui deu uma vitória pro script vamos vamos melhorar aqui o resultado da luta aqui na luta vamos fazer aqui fazer com símbolos iguais resultado da luta e depois de mostrar o resultado eu vou também escrever vários sinais de igual também para ele delimitar qual foi o resultado da luta vamos executar novamente vou executar esse meu código principal aqui então
tá lá ó lutou e o resultado da luta tá aqui a vitória foi do pretty Boy o pretty boy é o primeiro aqui então o pretty Boy que tinha 11 vitórias agora tem 12 e se o pretty Boy ganhou do Script o PR script que tinha duas derrotas agora tem três derrotas então vai ficar 12 vitórias pro PRY Boy antes ele tinha 11 vê tudo isso é feito automaticamente e o script que tinha duas derrotas agora vai ter três derrotas Ó lá ele perdeu três vezes viu como é simples Viu como é que o conteúdo
de uma viu como é que o resultado de uma luta interferiu automaticamente no resultado final e que eu utilizei uma classe Viu como é que a agregação simplifica as coisas viu como é que a programação orientada a objeto reutiliza códigos e permite o crescimento disso tudo eu espero que isso esteja ficando bem claro para você porque senão você não consegue entender a base da programação orientada objeto e a beleza que ela tem E aí vamos fazer alguns testes aqui porque os nossos códigos eles têm princípios né eu não posso fazer um lutador lutar com ele
mesmo eu não posso fazer um lutador lutar com outro que seja da outra categoria vamos ver se isso tudo tá funcionando corretamente tá lá ó ah vamos fazer com que essa luta aconteça entre o lutador um e o lutador um n eu não posso marcar uma luta dele com ele mesmo né lutador um é o script eu não posso fazer script conta script Então vamos executar ó lá a luta não pode acontecer porque eu tô mandando um lutador um com lutador um Outra coisa o script ele ele pesa 57 kg Vamos botar ele para lutar
com um cara de 105 que é o lutador c e vê se ele permite não deveria permitir vamos Executar a luta também não pode acontecer agora a luta entre o lutador 4 e o lutador 5 que são lutadores ó um com 105 outro com 119 são da mesma categoria pode acontecer sem problema nenhum e a luta acontece a vitória de um e de outro e tudo mais E aí gostou o que eu quero te incentivar é o seguinte tente criar classes melhores do que as minhas é claro que durante as aulas não consigo criar uma
classe bem elaborada gigante cheio de funcionalidades por exemplo a minha vitória aqui ela é calculada através de um número aleatório seria mais legal se essa vitória considerasse o peso a experiência Quem ganhou mais quem ganhou menos uma coisa meio RPG tenta criar isso daí dentro do seu programa mas também não né assim só porque o cara é mais pesado mais mais experiente Ele sempre vai ganhar não tem que ter um fator sorte aí tenta criar alguma coisa e bota aqui nos comentários uma solução para que você possa compartilhar com as pessoas você pequeno gafanhoto que
a não não sabe direito de fazer isso Vê Quais são as recomendações aqui da galera se a galera já fez vê Quais são os exemplos que eles criaram a ideia é que esses comentários daqui fiquem com um grande fórum onde as pessoas possam colaborar Então é isso pequeno gafanhoto gostaria de agradecer aqui a sua paciência e gostaria de te incentivar como sempre a praticar fazer testar novos resultados por exemplo eu só botei lutadores aqui do sexo masculino e se você criar um atributo sexo você não pode deixar um homem lutar com uma mulher mesmo que
ele seja da mesma categoria olha aí que legal então coisas é a ideia da programação orientada do objeto é que ela represente a realidade a minha aqui é uma mini realidade abstrata porque eu tenho pouco tempo aqui dentro do YouTube para passar esse conteúdo para você então é isso porque no gafanhoto como sempre eu quero te pedir ó olha aqui do lado olha que maravilha você tá vendo esses botões tem um botão para você se inscrever no canal aqui na inscrição do canal você torna-se parte desse curso em vídeo alunos inscritos conseguem ver com mais
velocidade que uma aula nova saiu e as aulas são sempre as segundas e sextas-feiras segunda-feira programação orientada objeto e sexta-feira Excel no momento em que esse curso tá saindo também tem um link pra Playlist aqui você vai ver todos os cursos todas as aulas desse curso de Java com programação orientado objeto que você tá fazendo aqui e lá embaixo o curso em vídeo você vai ver todos os cursos inclusive o curso de programação orientado objeto para PHP que também tem uma playlist no YouTube que você pode acessar clicando aqui em cima nesse Zin de interatividade
Então é isso pequeno Lar foi outro seja um dos nossos apoiadores a gente tem o site do apoio-me apoie.me bar curso vídeo e você pode colaborar tá gostando dessa aula gostou da qualidade tá melhor do que o professor te explicou tá mais simples tá mais eh livre de bibliografias e de conceitos chatos seja um dos nossos colaboradores torne-se um aluno apoiador E você só tem a ganhar porque você tá disponibilizando mais aulas para as pessoas a gente só consegue o lançamento de um bom curso se a gente tiver bons patrocinadores então eu queria agradecer aqui
Aos três a hostnet hospedagem de site ao sistema educando de ensino e a todos os patrocinadores apoiadores Desse Canal Você pode ser um deles e eu ficaria muito feliz muito honrado de ter você como nosso colaborador um forte abraço peeno gafanhoto estude sempre e até a [Música] próxima
Copyright © 2024. Made with ♥ in London by YTScribe.com