Curso POO teoria #08a - Relacionamento de Agregação

Curso POO teoria #08a - Relacionamento de Agregação

Bem-vindo à primeira aula de Android

Visão geral da seção: Nesta aula, o professor introduz o curso e explica que será abordado o desenvolvimento de aplicativos Android.

Introdução ao curso

  • O professor dá as boas-vindas aos alunos e menciona que não é possível assistir às aulas do Android neste momento.
  • Ele indica que há um vídeo completo disponível para visualização.
  • Encoraja os alunos a estudarem bem.

Aula teórica sobre programação orientada a objetos

Visão geral da seção: Nesta seção, o professor introduz o conceito de programação orientada a objetos e menciona que esta é a 8ª aula do curso.

Revisão da classe Lutador

  • O professor relembra os atributos e métodos da classe Lutador criados na aula anterior.
  • Destaca que todos os atributos são privados e foram encapsulados.
  • Menciona os métodos principais da classe, como apresentar lutador, mostrar status e realizar uma luta.
  • Explica que foram criados objetos lutadores na aula anterior.

Relacionamento entre classes - Agregação

Visão geral da seção: Nesta seção, o professor explora o relacionamento específico chamado agregação entre classes.

Compartilhando atributos e métodos entre objetos Lutador

  • O professor mostra dois objetos lutadores baseados na mesma classe.
  • Destaca que eles compartilham os mesmos atributos e métodos.
  • Propõe criar uma nova classe chamada Luta para permitir que os lutadores lutem entre si.

Criando a classe Luta

Visão geral da seção: Nesta seção, o professor cria a classe Luta para permitir que os objetos lutadores interajam.

Atributos da classe Luta

  • O professor define os atributos desafiado e desafiante para a classe Luta.
  • Explica que esses atributos representam os lutadores envolvidos na luta.

Essa é uma estrutura básica das notas de estudo com base no conteúdo do vídeo. Certifique-se de revisar e ajustar as informações conforme necessário.

Compreensão das lutas e regras

Visão geral da seção: Nesta seção, o palestrante discute a compreensão das lutas e apresenta as regras para os combates 8 e 9. Ele também menciona os atributos relacionados às lutas.

Entendendo as lutas

  • Cada luta tem uma quantidade de rounds.
  • É importante verificar se a luta está aprovada ou não.

Regras das lutas do 8 e 9 combate

  • O encapsulamento é o primeiro pilar.
  • Os atributos serão privados.
  • Será implementado um método para marcar a luta.
  • Será implementado um método para realizar a luta.

Contribuições dos alunos

  • Os alunos são incentivados a criar uma classe de luta melhor durante a aula.
  • Podem propor métodos adicionais nos comentários.

Representação básica da classe Luta

  • A visibilidade dos métodos será pública.
  • A representação oficial utilizando UML será mostrada posteriormente.

Relacionamento entre Lutador e Luta

Visão geral da seção: Nesta seção, o palestrante explora o relacionamento entre as classes Lutador e Luta, utilizando diagramas de classes.

Agregação entre Lutador e Luta

  • Existe uma ligação entre lutador e luta, onde um lutador participa de uma luta.
  • O relacionamento é representado por uma linha sólida com um losango branco na ponta.

Multiplicidade entre Lutador e Luta

  • Um lutador pode participar de várias lutas.
  • Uma luta pode ser disputada por vários lutadores.

Relação com o diagrama de entidade-relacionamento

  • O diagrama de classes é uma evolução do modelo entidade-relacionamento.
  • No diagrama de classes, temos dados e funções, enquanto no diagrama entidade-relacionamento temos apenas dados.

Diagrama de Classes vs. Diagrama Entidade-Relacionamento

Visão geral da seção: Nesta seção, o palestrante compara o diagrama de classes com o diagrama entidade-relacionamento e explica a evolução desses modelos.

Evolução do modelo

  • O diagrama de classes é uma evolução do modelo entidade-relacionamento.
  • No diagrama de classes, além dos dados, também temos funções.

Criação da classe Luta

Visão geral da seção: Nesta seção, o palestrante inicia a criação da classe Luta no código.

Declaração dos atributos

  • Os atributos desafiado, desafiante, rounds e aprovada são privados.
  • O atributo round é do tipo inteiro.
  • O atributo aprovada indica se a luta pode acontecer ou não.

Utilizando um tipo abstrato de dados

Visão geral da seção: Nesta seção, o palestrante discute a utilização de um tipo abstrato de dados e como ele pode ser implementado em um programa. Ele menciona que o desafiado será uma instância da classe "lutador" e explica a relação entre o tipo abstrato e as instâncias da classe.

Definindo o tipo abstrato de dados

  • O desafiado é uma instância da classe "lutador".
  • A relação entre o tipo abstrato e a instância da classe é conhecida como agregação.
  • Além dos métodos tradicionais, existem métodos especiais que recebem parâmetros do tipo lutador.

Métodos públicos e relacionamentos

Visão geral da seção: Nesta seção, o palestrante fala sobre os métodos públicos definidos na classe e os relacionamentos com outras classes. Ele destaca a importância das agregações na definição desses relacionamentos.

Métodos públicos e agregações

  • Os métodos públicos "marcar luta" e "lutar" são definidos na classe.
  • Os atributos "desafiado" e "desafiantes" são instâncias de outra classe.
  • A relação entre as classes através dos atributos é conhecida como agregação.

Regras para uma luta

Visão geral da seção: Nesta seção, o palestrante apresenta algumas regras que devem ser seguidas para marcar uma luta. Ele menciona que a luta só pode ser marcada entre lutadores da mesma categoria, os desafiados e desafiantes devem ser lutadores diferentes, a luta deve estar aprovada e o resultado deve ser a vitória de um dos lutadores ou empate.

Regras para marcar uma luta

  • A luta só pode ser marcada entre lutadores da mesma categoria.
  • O desafiado e o desafiante devem ser lutadores diferentes.
  • A luta deve estar aprovada.
  • O resultado da luta deve ser a vitória de um dos lutadores ou empate.

Método para marcar uma luta

Visão geral da seção: Nesta seção, o palestrante explica como é feito o método para marcar uma luta. Ele destaca que é necessário passar os objetos "lutador" como parâmetros e apresenta as condições para que a luta possa ser marcada.

Marcar uma luta

  • O método "marcar luta" recebe como parâmetros os objetos "lutador".
  • É verificado se as categorias dos lutadores são iguais antes de marcar a luta.

Luta entre lutadores da mesma categoria

Visão geral da seção: Nesta parte, o instrutor explica que uma luta só pode acontecer se os lutadores forem da mesma categoria. Caso contrário, a luta não será permitida.

  • Os lutadores devem ser da mesma categoria para a luta acontecer.
  • Se os lutadores forem diferentes categorias, a luta não será permitida.

Parâmetros e atributos da classe Luta

Visão geral da seção: O instrutor discute sobre os parâmetros e atributos necessários para a classe "Luta".

  • O primeiro parâmetro passado é sempre o desafiado.
  • O segundo parâmetro passado é sempre o desafiante.
  • A classe "Luta" possui atributos como desafiado, desafiante e um valor booleano chamado "aprovada".
  • Se a luta não for aprovada, os valores de desafiado e desafiante serão nulos.

Método marcarLuta e verificação de aprovação

Visão geral da seção: Aqui é apresentado o método "marcarLuta" e como é feita a verificação de aprovação da luta.

  • O método "marcarLuta" verifica se a luta é aprovada ou não.
  • Se a luta for aprovada, o valor booleano "aprovada" será verdadeiro.
  • Caso contrário, o valor booleano será falso e os valores de desafiado e desafiante serão nulos.

Método lutar e definição de vitórias e derrotas

Visão geral da seção: O instrutor explica o método "lutar" e como são definidas as vitórias e derrotas dos lutadores.

  • O método "lutar" gera um valor aleatório para determinar o vencedor da luta.
  • As vitórias e derrotas de cada lutador são registradas em seus respectivos objetos.
  • Os resultados da luta são gravados no cartel do lutador.

Verificação de aprovação da luta

Visão geral da seção: Aqui é feita a verificação final para saber se a luta pode acontecer ou não.

  • A luta só acontece se for aprovada.
  • Se a luta não for aprovada, uma mensagem informando que a luta não pode acontecer é exibida.

Apresentação dos lutadores antes da luta

Visão geral da seção: Antes do início da luta, os lutadores são apresentados.

  • O desafiado é apresentado primeiro.
  • Em seguida, o desafiante também é apresentado.
  • Os métodos dos objetos desafiado e desafiante podem ser utilizados sem problemas.

Determinação do vencedor aleatoriamente

Visão geral da seção: O instrutor explica como o vencedor é determinado aleatoriamente.

  • Uma variável chamada "vencedor" recebe um valor aleatório entre 0 e 2.
  • 0 representa empate, 1 representa vitória do desafiado e 2 representa vitória do desafiante.

Resultados da luta

Visão geral da seção: Aqui são apresentados os resultados da luta de acordo com o valor gerado aleatoriamente.

  • O resultado é verificado e a ação correspondente é executada.
  • Caso seja empate, o método "empatarLuta" é chamado para ambos os lutadores.
  • Se o desafiado ganhar, seu número de vitórias aumenta e o número de derrotas do desafiante também aumenta.
  • Se o desafiante ganhar, ocorre o inverso.

Relacionamento entre classes

Visão geral da seção: O instrutor menciona que este exemplo aborda um caso de agregação como relacionamento entre classes.

  • Existem diferentes tipos de relacionamentos entre classes.
  • Neste exemplo, foi utilizado um relacionamento de agregação mais complexo.
  • É possível criar outros tipos de relações e explorar diferentes formas de relacionar objetos em programação orientada a objetos.

Atribuição de Dados aos Lutadores

Visão Geral da Seção: Nesta seção, o instrutor explica como atribuir dados aos lutadores através do construtor e destaca a importância dessa etapa.

Atribuição de Dados aos Lutadores

  • O construtor é utilizado para atribuir informações aos lutadores no momento de sua criação.
  • Os dados importantes, como nome, nacionalidade, idade, altura, peso e histórico de vitórias/derrotas/empates, são passados como parâmetros no construtor.
  • Exemplo: Criar dois lutadores com os respectivos dados - nome: Playboy, nacionalidade: França, idade: 31 anos, altura: 1.75m, peso: 68.9kg; nome: Pulsoscript, nacionalidade: Brasil, idade: 29 anos, altura: 1.68m, peso: 57.8kg.
  • Essa atribuição de dados é feita para todos os lutadores (do lutador 0 ao lutador 5) utilizando o mesmo processo.

Marcação e Realização das Lutas

Visão Geral da Seção: Nesta seção, o instrutor aborda a marcação e realização das lutas entre os lutadores previamente cadastrados.

Marcação e Realização das Lutas

  • Para marcar uma luta entre dois lutadores previamente cadastrados, utiliza-se o método "marcarLuta" do objeto "Luta".
  • Exemplo de marcação de luta entre o lutador 0 (Playboy) e o lutador 1 (Pulsoscript): luta.marcarLuta(lutador, lutador).
  • Antes de marcar a luta, é verificado se os lutadores são da mesma categoria e se o peso está dentro dos limites permitidos.
  • Após a marcação da luta, pode-se chamar o método "lutar" para que a luta aconteça.
  • O resultado da luta (empate, vitória do desafiante ou vitória do desafiado) é gerado aleatoriamente.

Restrições e Validações das Lutas

Visão Geral da Seção: Nesta seção, o instrutor explica as restrições e validações aplicadas às lutas entre os lutadores.

Restrições e Validações das Lutas

  • As lutas só podem ser marcadas entre lutadores de categorias iguais.
  • As lutas não podem ser marcadas entre lutadores de categorias diferentes (exemplo: peso leve vs. peso pesado).
  • Durante a realização da luta, é feita uma verificação para garantir que a luta seja válida antes de prosseguir.
  • Caso haja alguma restrição ou invalidade na marcação ou realização da luta, um erro será exibido.

Benefícios da Programação Orientada a Objetos

Visão Geral da Seção: Nesta seção, o instrutor destaca os benefícios da programação orientada a objetos no contexto do projeto dos lutadores.

Benefícios da Programação Orientada a Objetos

  • A programação orientada a objetos permite criar classes reutilizáveis e flexíveis.
  • No contexto do projeto dos lutadores, isso significa que é possível criar quantos lutadores e lutas forem necessários.
  • A criação de objetos a partir de classes previamente definidas simplifica o desenvolvimento do código principal.
  • A programação orientada a objetos facilita a organização e manutenção do código, tornando-o mais simples e legível.

Próximos Passos

Visão Geral da Seção: Nesta seção final, o instrutor sugere os próximos passos para continuar aprendendo sobre programação orientada a objetos.

Próximos Passos

  • Escolher uma das linguagens disponíveis (PHP ou Java) para prosseguir com os estudos.
  • Acessar as playlists dos cursos de PHP ou Java para aprender mais sobre programação orientada a objetos.
  • Aula 08B desses cursos abordará programação orientada a objetos em outra linguagem, complementando o conhecimento adquirido nesta aula teórica.
Video description

Nessa aula de POO, vamos aprender como realizar um relacionamento de agregação entre classes para gerar objetos ainda mais poderosos. Gostou da aula? Então torne-se um Gafanhoto APOIADOR do CursoemVídeo acessando o site apoie.me/cursoemvideo Nós do CursoemVideo sempre recomendamos assistir a aula completa, mas se quiser aprender diretamente uma parte específica, clique nos marcadores de tempo a seguir: 0:19 - Qual é o assunto da aula? Aula do Curso de Programação Orientada a Objetos POO criado pelo professor Gustavo Guanabara para o portal CursoemVideo.com. Curso em Vídeo Seja um apoiador: http://apoie.me/cursoemvideo Site: http://www.cursoemvideo.com YouTube: http://www.youtube.com/cursoemvideo Facebook: http://www.facebook.com/cursosemvideo Twitter: http://twitter.com/cursosemvideo Google+: http://plus.google.com/112666558837414979080 Patrocínio HOSTNET: http://www.hostnet.com.br EDUCANDUS: http://www.sistemaeducandus.com.br GAFANHOTOS: http://apoie.me/cursoemvideo Ask Rufus de Audionautix está licenciada sob uma licença Creative Commons Attribution (https://creativecommons.org/licenses/by/4.0/) Artista: http://audionautix.com/