Curso POO Teoria #07a - Relacionamento entre Classes

244.29k views7066 WordsCopy TextShare
Curso em Vídeo
Nessa aula de POO, vamos aprender como fazer relacionamentos entre as classes. Gostou da aula? Entã...
Video Transcript:
Olá pequeno gafanhoto seja bem-vindo a mais uma aula do seu curso de programação orientada objeto Olha só cara essa aqui que eu tô mostrando é a sala de jogos tá at mostrou aqui tem videogame tem jogo de tabuleiro tem aqui ó uma máquina de pinball do do Fredy Krueger que a gente não tá conseguindo ligar para jogar tem pebolim né para se você é determinado lugar do Brasil é futebol de o Como é que chama no Rio e esqueci e São Paulo é pebolim e eu tô lembrando de São Paulo só coloca aí depois então assim é muito legal esse tipo de coisa gente conversando com os funcionários tava conversando com a Natália é eles têm esses ambientes todos é obviamente eles não ficam jogando o dia inteiro senão eles não vão ficar muito tempo no Google mas que tem um ambiente Legal tem local para massagem tem uma cadeira de massagem aqui que você tá vendo nesse momento então tem tudo é é muito legal o ambiente que é criado em empresas desse tipo para que o funcionário fique sempre tranquilo para vir trabalhar e que nos seus horários um pouco mais Livres às vezes dá uma corridinha no almoço né dá aquele almoçado rápida que nem você faz NS vezes no trabalho para ir ao banco aqui não aqui eles vêm para jogar [Música] videogame Olá pequeno gafanhoto seja bem-vindo a mais uma aula do seu curso em vídeo de programação orientada a objeto uma aula teórica o meu nome é Gustavo Guanabara eu sou o seu professor e agora a gente chegou aqui ó na aula 07 a e nessa aula a gente vai tratar um assunto novo que é o relacionamento entre as classes até o momento a gente só falou de uma classe por vez a partir de agora a gente vai começar a programar mais de uma classe por vez e vamos começar a fazer essas classes falarem umas com as outras isso é muito importante para que você possa entender a estrutura de um objeto e é importante que eu te digo o seguinte logo de cara essa aula eu não consigo fazer em uma aula só a gente vai ter a teoria Inicial Agora de relacionamento entre classes preciso criar uma classe razoavelmente grande com vocês mas mais pra frente a gente vai poder criar a outra classe e poder fazer elas se relacionarem mas para isso eu vou precisar da aula sete e da aula oito e antes de começar a aula sete eu também quero dar um recado especial essa aula essa aula que tá acontecendo agora ela é uma colaboração eu montei a aula e eu pedi a ajuda de alguns dos nossos gafanhotos apoiadores e se você tá acompanhando o curso e se você tá gostando do curso eu recebo todo dia eu recebo mensagens dizendo Poxa você tá mostrando programação orienta do objeto com uma outra Ótica com um outro enfoque eu tô gostando a coisa tá mais simples e essas aulas estão chegando até todo mundo totalmente gratuitamente Graças aos nossos patrocinadores e um dos grupos grandes de patrocinadores são os nossos próprios alunos os nossos próprios gafanhotos e você você pode acessar aqui ó apoie. me bar curso vídeo aqui você pode ver lá alguma faixa de apoio escolhe como você pode agradecer pelo curso você pode agradecer pelo curso dizendo pô gente obrigado e tal vocês desenvolveram Sem problema nenhum Mas se você puder e se você quiser dar um apoio pra gente a gente tá precisando bastante então ó apoie. me bar curso envío aqui você vai poder fazer sua colaboração e eu queria fazer um agradecimento especial pros seguintes colaboradores Olha só o Airton sou o Braga Mateus O Cordeiro seg o Eduardo Airton o Fábio Silva a Rafaela Ribeiro o Thiago André o wellon Magno e o Welton vaaz senhores Muito obrigado pela ajuda de vocês uma parte desse exercício que os nossos gafanhotos estão vendo agora são Graças a vocês vocês que ajudaram colaborando e que vocês ajudaram também participando dessa aula e nada mais justo do que eu deixar eternizado aqui o nome de vocês numa das aulas que particularmente até o momento é a que eu gostei mais de fazer mas agora agradecimentos feitos vamos entender um pouco mais sobre esse exemplo você deve estar percebendo que várias aulas eu tô tentando criar exemplos diferentes para que você possa ter o maior número de experiências possíveis ao criar objetos e o exercício que eu planejei aqui agora é o Ultra emoji Combat obviamente por motivos de uso de marca a gente não vai revelar aqui a marca original na verdade a marca original é essa que tá aparecendo aqui o Ultra emoji Combat o Ultra emoji Combat é exatamente isso daqui ó é a luta entre entre emojis sabe aquelas carinhas que você manda no WhatsApp ou no Zap Zap como a maioria das pessoas fala então nós vamos colocar esses emojis para lutar e durante as próximas aulas a gente vai começar a construir melhor esse exercício que inicia a partir de agora basicamente nessa aula o que a gente vai fazer é criar o perfil de um lutador pro nosso exercício eu coloquei aqui algumas características que um lutador tem que ter para participar do Ultra emoji Combat o que nós vamos cadastrar aqui para cada um é o nome a nacionalidade Então quem vai lutar no Ultra emoji Combat vai ter um nome vai ter uma nacionalidade vai ter uma idade vai ter a altura o peso a categoria também o número de vitórias o número de derrotas e o número de empates então tudo que tá aparecendo aqui do lado eu vou precisar registrar para cada um dos lutadores então a gente já começa a pensar assim tá pera aí na aula anterior você disse que todos os dados que compõem um determinado objeto são os seus atributos são suas características são as suas variáveis internas então Exatamente isso daqui são os atributos que a gente vai cadastrar durante o nosso exercício Mas vamos lá vamos transformar tudo isso num diagrama de classes que tá aparecendo aqui do lado então eu vou ter o lutador que é a nossa primeira classe como a gente viu anteriormente nós vamos ter os atributos os atributos são colocados aqui né onde você tem a área de atributos a parte de cima é o nome da classe o nome dos atributos vem seguida E logo depois os métodos os atributos que eu vou colocar são exatamente aqueles atributos que eu Previ anteriormente então eu coloquei aqui do lado ó nome nacionalidade idade altura peso categoria vitórias derrotas e empates vou colocar também a visibilidade de todos esses atributos você viu na aula anterior a gente colocou todos os atributos como privados Isso faz parte de uma técnica que é o primeiro Pilar da programação orientada a objeto que é o encapsulamento você não deixa ninguém mexer nos atributos E aí vem á na bara chato de novo se você pulou tudo isso porque você quer ouvir falar sobre relacionamento de objetos você tem que ter uma sequência o nosso curso é sempre uma sequência uma aula teórica e uma aula prática dependendo da a linguagem que você escolheu fazer então pequeno gafanhoto não pule etapas ou então se você quiser pular etapas depois você não reclama quando você tiver aquela sensação de pera aí isso tá difícil demais está difícil Porque você está plantando essa dificuldade na sua cabeça você seguir tudo organizado do jeito que eu coloquei aqui com certeza você vai aprender programação orientada do objeto E para completar o nosso diagrama de classes aqui a gente tem a parte de baixo que é a parte de métodos Vamos colocar os métodos aqui o que eu Previ para esse exercício é o seguinte nós vamos ter o método apresentar um lutador o método de mostrar um status do lutador apresentar o lutador sabe quando entra aquele apresentador lá fala assim agora vai entrar o lutador tal tal tal ele tem tantos kilos vai ter apresentação o status é aquilo que aparece na barrinha embaixo quando o cara tá lutando aparece lá o status é uma coisa um pouquinho mais simples vai aparecer alguns dados menores ali do lutador eu tenho também o ganhar luta perder luta e empatar luta que é o que o lutador pode fazer E aí você vai me falar pô pera aí Guanabara um lutador também treina um lutador também toma suplementos um lutador também sei lá corre enfim um lutador pode fazer tudo mas o que importa pra gente nesse exercício são essas características são esses atributos e são esses métodos isso a gente chama na programação orientada do objeto de abstração abstrair é você considerar somente aquilo que lhe importa num determinado exercício ou num determinado momento de programação de alguma classe se por acaso paraa sua situação você quiser adicionar um determinado atributo aqui em cima ou um determinado método aqui embaixo fique à vontade o que eu vou fazer aqui o que eu vou desenvolver durante essa aula É exatamente esse diagrama de classe aqui da forma prática no caso dessa aula em algoritmos Mas nós vamos fazer logo em seguida todo esse exercício aqui em Java em PHP vou também definir aqui o que eu tinha esquecido os métodos a visibilidade de todos os métodos então tem aqui os métodos e todas as visibilidades aqui desses métodos eu coloquei como pública outra coisa também no diagrama de classe aqui eu não coloquei os métodos os getters e os métodos setters eu não botei os acessores e os modificadores isso porque senão o nosso diagrama ia ficar muito grande então eu não representei por exemplo o Construtor o get nome set nome o get nacionalidade set nacionalidade Então nada disso eu representei aqui mas você já fica sabendo que se você tá seguindo o curso bonitinho da forma que é para se fazer então você já sabe o que que são esses métodos especiais já sabe o que que são esses métodos que precisam ter em todas as classes que estão encapsuladas e agora eu vou apresentar para vocês os lutadores que vão fazer fazer parte desse exercício eu separei aqui seis lutadores E como você pode acompanhar aqui do lado existe um atributo chamado categoria Então eu tenho categoria eu eu separei para esse exercício três categorias o peso leve o peso médio e o Peso Pesado eu também sei que existem outras categorias mas para esse exercício considerei somente essas três o peso leve o peso médio e o Peso Pesado eu coloquei dois lutadores de cada uma das categorias pra gente poder entender melhor o nosso primeiro lutador que chega no momento é esse daqui ó acho características dele são o nome dele é Pretty Boy a nacionalidade dele é Francesa A idade é de 31 a altura de 1,75 o peso de 68,9 ele é um peso leve depois nesse exercício a gente vai ver quais são as faixas que caracterizam ele como um peso leve ele também tem 11 vitórias duas derrotas e Um empate então nós definimos aqui uma Instância dessa classe lutador essa instância é o pretty boy aí com esse oculozinho tudo né É aquele smile que tem o Ah eu mando bem PR Caramba então tá ali ó o pretty boy é o nosso primeiro lutador durante o andamento dessa aula a gente vai fazer o cadastro do pretty Boy no nosso programa e você vai acompanhar comigo como se faz tudo isso o nosso próximo lutador é o scripts Esses nomes estão demais esses nomes foram dados pelos nossos gafanhotos que eu falei o nome lá na frente eles colaboraram para colocar nome nos nossos lutadores e se você também quiser ter a oportunidade de ver os bastidores do curso em vídeo e participar das aulas efetivamente você tem que participar do nosso grupo fechado do telegram e do Facebook Quem pode participar quem faz a sua colaboração aqui ó rapidinho de novo apoie.
me bar curso vídeo Quem fez a sua colaboração Viu como é que tava sendo montada a aula eu pedi ajuda para dar um nome pro lutador e tudo tá acontecendo como você tá vendo a partir de agora então dá um apoio lá pra gente a gente tá precisando da ajuda de vocês e é bem legal você participar da aula e eternizar o seu nome nesses registros aqui do curso em vídeo o script ele é meio bolado ele é do Brasil 29 anos 1,68 7,8 kg ele é do Peso Leve também 14 vitórias duas derrotas e três empates essas são as informações do nosso segundo lutador o Script o próximo lutador é o Snap Shadow que já é do peso médio então ele é dos Estados Unidos tem 35 anos 1,65 M 80,9 kg é peso médio 12 vitórias duas derrotas e Um empate e ele é assim nosso próximo lutador é o Dead Cold que é esse cara aqui ó já todo caverão ele é da Austrália tem 28 anos 1,93 81,6 kg peso médio também de acordo com o peso dele ele tem 13 vitórias nenhuma derrota ele é invicto e tem dois empates Você tá entendendo mais ou menos o que a gente vai fazer a gente vai cadastrar essa galera E para isso eu preciso de uma base para isso eu preciso de uma classe vamos para mais um lutador aqui agora é a vez do uf cobol cara que ótimo os nomes ele é brasileiro também 37 anos 1,70 199. 3 kg é um senhor gordinho categoria pesado cinco vitórias quatro derrotas e três Pates e o nosso Último Lutador é mais um peso pesado o ner Dart que é dos Estados Unidos 30 anos 1,81 de altura 105. 7 de Puro músculo ele é do Peso Pesado 12 vitórias duas derrotas e quatro empates Então é isso esse é o exercício que a gente tem que criar e o meu objetivo é cadastrar essa galera aqui se você quiser pausar esse vídeo agora e começar a criação da sua classe vai ser legal para caramba pode criar diretamente em algoritmo ou em PHP ou em Java ou em qualquer língua que você preferir o ideal aqui é que você Tente fazer o exercício se você ainda tá um pouco enrolado assiste essa aula teórica mas não faz as aulas práticas antes de tentar programar na linguagem que você escolheu Vou colocar aqui o diagrama de classes que a gente criou anteriormente ele tá lá em cima na tela para poder servir de referência e a partir de agora a gente vai começar a criar aqui do lado o código da nossa classe vamos começar pelo cabeçalho e o final da classe Então vai ter lá classe lutador e fim da classe o próximo passo é a gente começar com os atributos dá uma olhada lá em cima ó nome nacionalidade idade altura peso categoria vitórias derrotas e empates o nome nome é caractere né então vou colocar lá privado nome e caracter deu para entender lembra lá da visibilidade todos os nossos atributos vão ter visibilidade privada isso porque a nossa Classe A partir de agora vai estar encapsulada nesse exercício aqui eu nem P construir uma interface mas a interface seria composta desses cinco métodos que estão aparecendo ali do lado que é o apresentar status ganhar luta perder luta e empatar luta isso é a interface do nosso lutador então o primeiro atributo tá ali feito o segundo é nacionalidade nacionalidade também é caracter né então tem lá privado nacionalidade também do tipo caracter privado idade do tipo inteiro né uma idade tem quantos anos 18 25 32 45 então é número inteiro a próxima é altura que é real seguido do peso que também é real eu poderia até declarar os dois na mesma linha mas estou fazendo isso daqui porque é uma aula introdutória de programação orientada do objeto vou colocar cada linha um atributo logo em seguida depois do Peso tem a categoria que também é caracter então eu vou colocar lá se ele é peso leve peso méo ou Peso Pesado de acordo com uma conta que a gente vai fazer aqui na verdade não uma conta uma comparação com uma faixa de peso depois a categoria vitórias derrotas e empates todos eles inteiros então V botar lá Vitória derrota e empate tudo inteiro então acabamos aqui a construção dos nossos atributos é simples desse jeito já definimos Quais são os atributos e qual a visibilidade e tipo primitivo de cada um deles isso tudo você vai ter que fazer na sua linguagem de preferência que você tá aprendendo no programação orientar do objeto comigo chegou a hora agora dos nossos métodos os métodos que a gente vai montar é basicamente são esses aqui ó a gente vai ter o método apresentar a gente vai colocar o código do método apresentar e botar fim do método vamos ter o método status também é público tá lá o o método status definido depois eu vou ter o ganhar luta o perder luta e o empatar luta percebe aqui do lado ó olha no código e olha no diagrama lá em cima todos os métodos que são desse caso aqui desse exercício Eles foram definidos como público também então esse é a é o código base daquele diagrama que tá aparecendo lá em cima eu tenho o cabeçalho e o roda pé da minha classe eu tenho que vai definir a minha classe o que vai delimitar a minha classe coloquei dentro todos os atributos na parte de cima todos os métodos na parte de baixo é simples gente não tem mistério você vai colocar os atributos são como variáveis dentro de uma classe e os métodos são como as nossas funções e procedimentos dentro de uma classe aí além dos atributos a gente viu que a gente vai ter que ter alguns métodos especiais vamos começar aqui pelo método Construtor percebe aí que eu abri o parêntese do Construtor e eu ainda não fechei isso por eu vou utilizar aquele Construtor que a gente tinha feito anteriormente numa das aulas anteriores onde eu vou receber alguns parâmetros para que na hora que eu instanciar um objeto eu já colocar alguns atributos lá dentro e eu vou receber já que eu tenho vários atributos eu vou receber vários parâmetros vamos dar uma olhada aqui olha o código que tá aparecendo aqui do lado eu tenho aqui alguns parâmetros eu vou receber no n a i d a l p e v i de e em dá para você perceber que isso daqui é o nome do cara a nacionalidade dele a idade a altura o peso a quantidade de vitórias a quantidade de derrotas e a quantidade de empates E aí você vai falar pô Guanabara tá faltando uma coisa ali a categoria A categoria A gente vai fazer automaticamente porque olha só eu não preciso dizer que o cara pesa sei lá 80 kg e ele é peso médio não se eu já tenho a faixa se eu já sei qual é a faixa de peso a partir do momento em que eu coloco o peso do lutador eu já vou conseguir descobrir qual é a faixa Então nesse caso aqui no meu Construtor eu não vou precisar informar qual é a classificação Qual é a categoria A qual o lutador pertence essa categoria vai ser estabelecida automaticamente pelo nosso sistema Olha que legal então vamos começar a gente tem aqui os parâmetros no na ID a l pe vi iide e e m então eu tenho lá vou pegar o no e vai ser o nome da pessoa como é que eu vou dar um nome para esse lutador simples vou pegar lá Vou fazer com que o meu nome receba o no isso é o nome que foi passado como parâmetro pro Construtor que é o n no vai fazer parte lá do nosso atributo então nome nessa linha é o atributo no é o parâmetro vou fazer a mesma coisa paraa nacionalidade nacionalidade recebe na a a explicação é exatamente a mesma vou fazer a mesma coisa pra idade e vou fazer a mesma coisa pra altura o peso eu poderia colocar peso igual a pe sem problema só que eu vou fazer um pouquinho diferente em vez de fazer peso igual a pe eu vou fazer com que o peso seja atribuído pelo método Setter dele aga na bara é obrigatório nesse nosso exercício vai ser você já já vai entender e outra dúvida ua na bar eu posso fazer em vez de nome recebe no eu posso fazer set nome no Sem problema isso porque você vai ter os métodos setters e os métodos getters você faz da maneira que você achar melhor Particularmente eu gosto sempre de chamar diretamente pelo método mas como a gente tá dentro da classe e dentro da classe tudo que é privado está disponível eu posso fazer diretamente no método porque o nome se você olhar ali em cima o nome é privado então eu posso fazer nome recebe no ou set nome entre parênteses no Ó você escolhe Só que nesse caso aqui o peso nós vamos fazer diretamente pelo Setter na aula prática eu mostro para você qual é a diferença entre fazer pelo Setter e fazer pela atribuição diretamente ao atributo que é o método que a gente fez um misto aqui depois eu vou fazer a mesma coisa para vitórias vitórias recebe vi derrotas recebe de e empates recebe am com isso eu construí aqui o meu método Construtor em seguida vamos continuar a nossa construção de métodos especiais você vê que ali do lado sumiram alguns atributos é só para eu poder economizar espaço eu não vou eliminar esses atributos Então eu vou deixar aqui eu deixei nome peso e categoria só pra gente poder entender aqui peso e categoria são dois atributos importantes porque como eu falei quando eu fizer o set peso ele já vai automaticamente atualizar a categoria dá uma olhada aqui ó eu fiz o método get nome n eu vou ter que fazer pro nome get nome set nome não é isso então vou fazer lá o get nome o get nome é retorne nome e o fim do método a gente já fez isso várias vezes vamos fazer também o set nome o set nome vai ter que receber um nome como parâmetro o nome caractere e vamos colocar o nome igual a no nesse caso aqui você já deve perceber que não tem como eu fazer set nome no aqui porque esse é o método set nome então esse aqui é o método modificador do atributo nome então vamos fazer dessa maneira Essa maneira é obrigatória não tem como eu fazer de outro jeito então a gente já fez pro primeiro atributo lá pro nome nós fizemos o getter e o Setter vamos fazer agora o get peso no get peso eu simplesmente Vou retornar o peso dessa maneira que coloquei aqui do lado simples assim agora o set peso ele vai ficar um pouco diferente olha só vamos montar aqui o set peso então vou botar público método set peso vou receber um peso que é caractere e vou fazer peso receber pe Sem problema se você comparar o set peso aqui de baixo com o set nome daqui de cima ele está virtualmente bem parecido só que agora vamos fazer o seguinte nada impede de você colocar mais linhas ali dentro e eu vou precisar vou colocar uma linha ali dentro então antes de terminar o método eu vou colocar mais uma linha ali dentro que é a linha S categoria isso é sempre que eu configurar o peso eu também vou configurar a categoria Deu para entender Qual é a ideia Quando eu disser Olha o lutador tem sei lá 120 kg automaticamente eu vou botar ele no Peso Pesado isso eu não vou precisar que o usuário Diga que o programador diga isso o meu próprio sistema vai definir qual é a categoria do lutador de acordo com o peso que ele tiver E aí fica faltando criar esse set categoria eu vou limpar esse código um pouquinho vou deixar só o set peso aqui do lado e aí nós vamos criar o set categoria que é o que já tá aparecendo ali o set categoria vai dizer se ele está em peso leve médio ou pesado ou se o peso é inválido né o cara estiver leve demais abaixo do levvel ele é inválido se tiver acima do pesado também ele é inválido e eu defini algumas faixas aqui baseada mais ou menos nas faixas de luta mais ou menos que eu conheço Então nós vamos definir o seguinte se o peso do lutador for abaixo de 52.
2 kg ISS é se ele tiver menos de 52. 2 ele é da categoria inválido isso é ele não pode lutar porque ele tá muito abaixo do Peso mínimo necessário para ser um peso leve qualquer coisa acima disso Isso é 52. 2 acima e até 70.
3 exatamente 70. 3 ele vai ser o peso leve dá uma olhada ali ó a categoria vai ser leve caso o peso seja menor ou igual a 70. 3 só que aí Analisa um negócio aqui comigo para eles ser leve é sinal de que isso daqui é verdadeiro e de que isso aqui foi falso concorda comigo então eu não preciso escrever se o peso for maior ou iG 52.
2 e o peso for menor ou se o peso for menor do que 70. 3 ele vai ser categoria leve eu não preciso dizer isso tudo Eu simplesmente coloco o peso máximo e como ele tá dentro do sinão ele vai verificar que o leve somente se ele for acima de 52. 2 e abaixo de 70.
3 Incluindo 70. 3 aí se ele estiver acima de 70. 3 e estiver abaixo de 83.
9 aí ele já vai pra categoria média então ele vai ser média se ele não for nenhuma das de cima mas estiver acima de 70. 3 né Sem contar o 70. 3 e abaixo de 83.
9 contando 83. 9 essas são as faixas que eu defini aqui você pode definir suas próprias faixas se quiser fazer peso galo peso pena ou peso Ultra pesado fica a seu critério meio médio Então você tem várias categorias eu tô fazendo o menor número de categorias possível para esse exercício não ficar tão grande assim e eu tenho também outra categoria A minha última categoria é o Peso Pesado Então se o peso não estiver abaixo de 83. 9 seja se estiver acima de 83.
9 e abaixo de 120. 2 incluindo 120.
Copyright © 2024. Made with ♥ in London by YTScribe.com