Curso POO Teoria #07a - Relacionamento entre Classes
Introdução ao Curso de Programação Orientada a Objetos
Visão Geral da Seção: Nesta seção introdutória, o professor apresenta a sala de jogos e os ambientes descontraídos presentes em empresas de tecnologia. Ele destaca a importância de criar um ambiente propício para que os funcionários possam trabalhar com tranquilidade.
- O professor dá as boas-vindas aos alunos e introduz o curso de programação orientada a objetos.
- Ele menciona os diferentes ambientes presentes nas empresas, como salas de jogos e espaços para massagem.
- Destaca que esses ambientes são criados para proporcionar um ambiente tranquilo e estimulante para os funcionários.
- Menciona que, apesar das pausas descontraídas, é importante manter o foco no trabalho.
Aula 07 - Relacionamento entre Classes
Visão Geral da Seção: Nesta aula teórica, o professor aborda o tema do relacionamento entre classes na programação orientada a objetos. Ele ressalta a importância desse conceito para entender a estrutura dos objetos.
- O professor inicia a aula explicando que agora irá abordar o relacionamento entre classes.
- Destaca que esse assunto será tratado em mais detalhes nas próximas aulas.
- Informa que será necessário assistir às aulas 7 e 8 para compreender completamente o relacionamento entre classes.
- Agradece aos colaboradores do curso e destaca a importância do apoio dos alunos.
- Explica que as aulas são disponibilizadas gratuitamente graças ao apoio dos patrocinadores.
Agradecimentos e Exemplo do Curso
Visão Geral da Seção: Nesta seção, o professor agradece aos colaboradores do curso e apresenta um exemplo prático que será desenvolvido nas próximas aulas.
- O professor agradece aos colaboradores do curso pelo apoio.
- Destaca que os exercícios propostos são fruto da colaboração dos alunos.
- Apresenta o exemplo prático do "Ultra Esmaga-Moscas", um jogo de luta fictício.
- Explica as características que serão cadastradas para cada lutador no jogo.
- Mostra o diagrama de classes com os atributos necessários para cada lutador.
Conceito de Atributos em Programação Orientada a Objetos
Visão Geral da Seção: Nesta seção, o professor explica o conceito de atributos em programação orientada a objetos e como eles são representados no diagrama de classes.
- O professor reforça que os atributos são as características de um objeto.
- Apresenta o diagrama de classes com os atributos do lutador.
- Explica que os atributos serão cadastrados durante o exercício prático.
- Destaca a importância do encapsulamento dos atributos.
Essas são as principais seções e informações abordadas no vídeo.
Não pule etapas
Visão geral da seção: Nesta seção, é enfatizado que não se deve pular etapas ao aprender programação orientada a objetos. É importante seguir uma abordagem organizada e estruturada para obter melhores resultados.
- Pular etapas pode levar a dificuldades futuras.
- É necessário seguir as instruções e organizar o aprendizado de acordo com o conteúdo apresentado.
- A abordagem correta garantirá um melhor entendimento da programação orientada a objetos.
Métodos em Programação Orientada a Objetos
Visão geral da seção: Nesta seção, são introduzidos os métodos em programação orientada a objetos e como eles serão aplicados no exercício proposto.
- Será desenvolvido um método chamado "apresentaLutador" para mostrar as informações do lutador.
- Outro método chamado "mostraStatus" será criado para exibir o status do lutador durante uma luta.
- Esses métodos são exemplos de abstração na programação orientada a objetos, onde apenas as características relevantes são consideradas.
Abstração em Programação Orientada a Objetos
Visão geral da seção: Nesta seção, é explicado o conceito de abstração na programação orientada a objetos e sua importância no exercício proposto.
- Abstrair significa considerar apenas aquilo que é relevante para um determinado exercício ou momento de programação.
- No contexto do exercício, os atributos e métodos relacionados à luta são os mais importantes.
- Adicionar atributos ou métodos adicionais é opcional, desde que sejam relevantes para a situação.
Desenvolvimento do Diagrama de Classe
Visão geral da seção: Nesta seção, é explicado que o objetivo é desenvolver um diagrama de classe prático durante a aula de algoritmos. O exercício será implementado posteriormente em Java e PHP.
- Durante a aula, serão definidos os métodos com visibilidade pública.
- Os getters e setters não foram incluídos no diagrama para evitar tornar o programa muito extenso.
- É importante entender os conceitos dos métodos especiais (getters e setters) para seguir o curso corretamente.
Apresentação dos Lutadores
Visão geral da seção: Nesta seção, são apresentados os lutadores que farão parte do exercício proposto. Suas características e categorias são destacadas.
- Foram selecionados seis lutadores para o exercício.
- Existem três categorias: peso leve, peso médio e peso pesado.
- Cada categoria possui dois lutadores representantes.
- As informações sobre nome, nacionalidade, idade, altura, peso e histórico de lutas são fornecidas para cada lutador.
Playboy - Lutador Peso Leve
Visão geral da seção: Nesta seção, são apresentadas as características do lutador "Playboy", que pertence à categoria de peso leve.
- Nome: Playboy
- Nacionalidade: Francesa
- Idade: 31 anos
- Altura: 1,75 metros
- Peso: 68,9 kg
- Histórico de lutas: 11 vitórias, 2 derrotas e 1 empate
Puto Scraps - Lutador Peso Leve
Visão geral da seção: Nesta seção, são apresentadas as características do lutador "Puto Scraps", também pertencente à categoria de peso leve.
- Nome: Puto Scraps
- Nacionalidade: Brasileira
- Idade: 29 anos
- Altura: 1,68 metros
- Peso: 57,8 kg
- Histórico de lutas: 14 vitórias, 2 derrotas e 3 empates
Inep Xandão - Lutador Peso Médio
Visão geral da seção: Nesta seção, são apresentadas as características do lutador "Inep Xandão", que pertence à categoria de peso médio.
- Nome: Inep Xandão
- Nacionalidade: Estados Unidos
- Idade: 35 anos
- Altura: 1,65 metros
- Peso: 80,9 kg
- Histórico de lutas: 12 vitórias, 2 derrotas e 1 empate
Uso Futebol - Lutador Pesado
Visão geral da seção: Nesta seção, são apresentadas as características do lutador "Uso Futebol", que pertence à categoria de peso pesado.
- Nome: Uso Futebol
- Nacionalidade: Brasileiro
- Idade: 37 anos
- Altura: 1,70 metros
- Peso: 119,3 kg
- Histórico de lutas: 5 vitórias, 4 derrotas e 3 empates
Nerd - Lutador Pesado
Visão geral da seção: Nesta seção, são apresentadas as características do lutador "Nerd", também pertencente à categoria de peso pesado.
- Nome: Nerd
- Nacionalidade: Estados Unidos
- Idade: 30 anos
- Altura: 1,81 metros
- Peso: 105,7 kg
- Histórico de lutas: 12 vitórias, 2 derrotas e 4 empates
Introdução ao código da classe
Visão geral da seção: Nesta seção, o instrutor introduz o diagrama de classes e começa a criar o código da classe. Ele define os atributos da classe, como nome, nacionalidade, altura, peso, categoria, vitórias, derrotas e empates.
- O instrutor explica que todos os atributos serão privados porque a classe estará encapsulada.
- Os atributos são definidos com seus respectivos tipos de dados (caractere ou inteiro) e visibilidade privada.
- Os atributos incluem nome, nacionalidade, idade, altura, peso e categoria.
- A categoria é determinada automaticamente com base no peso do lutador.
Métodos da classe
Visão geral da seção: Nesta seção, o instrutor discute os métodos que serão implementados na classe.
- Os métodos incluem apresentar (para mostrar informações sobre o lutador), status (para exibir o status atual do lutador), ganhar luta (para registrar uma vitória), perder luta (para registrar uma derrota) e empatar luta (para registrar um empate).
- Todos os métodos são definidos como públicos.
Construção dos atributos
Visão geral da seção: Nesta seção, o instrutor conclui a definição dos atributos da classe.
- Os atributos foram definidos com seus respectivos tipos de dados e visibilidade privada.
- Os atributos incluem nome, nacionalidade, idade, altura, peso e categoria.
- Atributos como vitórias, derrotas e empates são do tipo inteiro.
Método construtor
Visão geral da seção: Nesta seção, o instrutor começa a implementar o método construtor da classe.
- O método construtor receberá parâmetros para inicializar os atributos do lutador.
- Os parâmetros incluem nome, nacionalidade, idade, altura, peso, vitórias, derrotas e empates.
- A categoria será determinada automaticamente com base no peso do lutador.
Implementação do método construtor
Visão geral da seção: Nesta seção, o instrutor continua a implementação do método construtor da classe.
- Os parâmetros recebidos pelo método construtor são atribuídos aos respectivos atributos da classe.
- A categoria é definida automaticamente com base no peso do lutador.
Uso de métodos setters e getters
Visão geral da seção: Nesta seção, o instrutor discute a diferença entre usar métodos setters e fazer atribuições diretas aos atributos.
- É possível usar tanto métodos setters quanto fazer atribuições diretas aos atributos dentro da classe.
- O instrutor menciona que prefere chamar diretamente os métodos setters para garantir encapsulamento dos atributos privados.
Atributos e Métodos
Visão Geral da Seção: Nesta seção, o palestrante discute os atributos e métodos de uma classe em programação.
Definição dos Atributos
- Os atributos importantes são nome, peso e categoria.
- O método
getNome()retorna o nome do lutador.
- O método
setNome()define o nome do lutador.
- O método
getPeso()retorna o peso do lutador.
- O método
setPeso()define o peso do lutador.
Definição da Categoria
- A categoria é definida com base no peso do lutador.
- As categorias são: leve, médio, pesado ou inválido.
- O método
setCategoria()define a categoria com base no peso.
Método Ganhar Luta
- O método
ganharLuta()atualiza o número de vitórias do lutador.
Método Perder Luta
- O método
perderLuta()atualiza o número de derrotas do lutador.
Método Empatar Luta
- O método
empatarLuta()atualiza o número de empates do lutador.
Criando Métodos para Vitórias, Derrotas e Empates
Visão geral da seção: Nesta seção, o palestrante discute a criação de métodos para registrar vitórias, derrotas e empates em um programa.
Criando método para vitórias
- O método
ganharLutaé criado para adicionar uma vitória ao lutador.
- O número de vitórias é incrementado em 1.
- Exemplo:
lutador.ganharLuta()
Criando método para derrotas
- O método
perderLutaé criado para adicionar uma derrota ao lutador.
- O número de derrotas é incrementado em 1.
- Exemplo:
lutador.perderLuta()
Criando método para empates
- O método
empatarLutaé criado para adicionar um empate ao lutador.
- O número de empates é incrementado em 1.
- Exemplo:
lutador.empatarLuta()
Apresentação e Status do Lutador
Visão geral da seção: Nesta seção, o palestrante aborda os métodos de apresentação e status do lutador.
Método de apresentação do lutador
- Utiliza-se o método
apresentarpara exibir informações sobre o lutador, como nome, nacionalidade, idade, altura e peso.
- Exemplo:
lutador.apresentar()
Método de status do lutador
- Utiliza-se o método
statuspara exibir informações resumidas sobre o lutador, como nome, peso e registro de lutas (vitórias, derrotas e empates).
- Exemplo:
lutador.status()
Programa Principal e Criação de Lutadores
Visão geral da seção: Nesta seção, o palestrante discute a criação do programa principal e a criação dos lutadores.
Criando vetor de lutadores
- Em vez de criar variáveis individuais para cada lutador, utiliza-se um vetor de seis posições para armazenar os lutadores.
- Exemplo:
lutadores = [l1, l2, l3, l4, l5, l6]
Definindo os lutadores
- Utiliza-se o construtor da classe
Lutadorpara definir as características de cada lutador.
- Exemplo:
l0 = Lutador("Playboy", "França", 31, 1.75, 68.9)
Chamando métodos dos lutadores
- Após definir os lutadores, é possível chamar os métodos criados anteriormente para registrar vitórias, derrotas e empates.
- Exemplo:
l0.ganharLuta(),l1.perderLuta(),l2.empatarLuta()
Vetor de Lutadores e Índices
Visão geral da seção: Nesta seção, o palestrante aborda o uso do vetor de lutadores e a definição dos índices.
Uso do vetor de lutadores
- O vetor de lutadores permite acessar cada lutador por meio do seu índice no vetor.
- Exemplo:
lutadoresrepresenta o primeiro lutador.
Definição dos índices
- Os índices do vetor de lutadores começam em 0 nas linguagens Java e PHP.
- Exemplo:
lutadoresrepresenta o primeiro lutador.
Criação de Lutadores com Vetor
Visão geral da seção: Nesta seção, o palestrante demonstra como criar os lutadores utilizando um vetor.
Utilizando um vetor para criar os lutadores
- Em vez de criar variáveis individuais para cada lutador, utiliza-se um vetor para armazenar os objetos lutador.
- Exemplo:
lutadores = [Lutador("Playboy", "França", 31, 1.75, 68.9), Lutador("Pudim", "Brasil", 29, 1.68, 57.8)]
Chamando métodos dos lutadores criados com vetor
- Após definir os lutadores utilizando um vetor, é possível chamar os métodos dos objetos individualmente.
- Exemplo:
lutadores.ganharLuta(),lutadores.perderLuta()
Definindo Características dos Lutadores
Visão geral da seção: Nesta seção, o palestrante define as características dos lutadores utilizando o construtor da classe.
Definindo características do primeiro lutador
- Utiliza-se o construtor da classe
Lutadorpara definir as características do primeiro lutador.
- Exemplo:
l= Lutador("Playboy", "França", 31, 1.75, 68.9)
Definindo características dos demais lutadores
- Repete-se o processo de utilizar o construtor da classe
Lutadorpara definir as características dos demais lutadores.
- Exemplo:
l= Lutador("Pudim", "Brasil", 29, 1.68, 57.8)
Finalizando a Criação dos Lutadores
Visão geral da seção: Nesta seção, o palestrante finaliza a criação dos lutadores e destaca a importância de definir cada objeto individualmente.
Finalizando a criação dos lutadores
- Após definir todas as características dos lutadores utilizando o construtor da classe, os objetos estão prontos para serem utilizados no programa.
- Exemplo: `lutadores = [l0, l
Construção da classe Lutador
Visão geral da seção: Nesta seção, foi feita a construção da classe "Lutador" com seus atributos e métodos. A visibilidade de cada método foi definida.
Classe Lutador
- A classe "Lutador" foi montada com todos os atributos e métodos necessários.
- Os atributos e métodos foram definidos com a visibilidade adequada.
- Agora é possível utilizar os atributos e métodos da classe "Lutador" para criar lutas.
Classe Luta
Visão geral da seção: Nesta seção, é introduzida a classe "Luta", que representa uma luta entre lutadores. São apresentados os atributos dessa classe e sua relação com a classe "Lutador".
Classe Luta
- A classe "Luta" é criada para representar uma luta entre lutadores.
- Os atributos da classe "Luta" são: desafiado, desafiante, quantidade de rounds e aprovação.
- A relação entre as classes "Lutador" e "Luta" é explicada como uma relação de agregação.
- Será ensinado na próxima aula como fazer essa ligação entre as classes.
Visibilidade dos atributos e métodos da classe Luta
Visão geral da seção: Nesta seção, é explicada a visibilidade dos atributos e métodos da classe "Luta". Também são mencionados os métodos principais dessa classe.
Visibilidade dos atributos e métodos
- Todos os atributos da classe "Luta" são privados, encapsulando-os.
- Os métodos principais da classe "Luta" são: marcar uma luta e lutar.
- Esses métodos têm visibilidade pública, fazendo parte da interface principal da classe.
Relação entre as classes Lutador e Luta
Visão geral da seção: Nesta seção, é explicada a relação entre as classes "Lutador" e "Luta". É mencionada a existência de uma ligação entre elas e é dada uma prévia sobre como essa relação será representada.
Relação entre as classes
- Existe uma relação de agregação entre a classe "Lutador" e a classe "Luta".
- Um lutador disputa uma luta.
- Será explicado melhor na próxima aula como essa relação será representada.
Próximas aulas e escolha da linguagem
Visão geral da seção: Nesta seção, é mencionado que nas próximas aulas serão abordadas as relações entre as classes. Também é dada a opção de escolher qual linguagem (PHP ou Java) será utilizada durante o curso.
Próximas aulas e escolha da linguagem
- Nas próximas aulas teóricas, será ensinado como fazer as classes interagirem.
- Será mostrado como fazer a classe "Lutador" se relacionar com outras classes.
- Agora é o momento de escolher qual linguagem (PHP ou Java) você deseja aprender para aplicar os conceitos apresentados no curso.
Agradecimentos aos patrocinadores
Visão geral da seção: Nesta seção, é feito um agradecimento aos patrocinadores do curso e é mencionado que o curso só é possível graças a eles.
Agradecimentos aos patrocinadores
- Os patrocinadores são essenciais para viabilizar a qualidade do curso.
- São exibidas mensagens dos patrocinadores durante as aulas.
- É importante reconhecer o apoio dos patrocinadores e valorizar sua contribuição.
Importância dos anúncios e interatividade
Visão geral da seção: Nesta seção, é ressaltada a importância dos anúncios e da interatividade para manter o curso gratuito e de qualidade.
Importância dos anúncios e interatividade
- Os anúncios exibidos durante as aulas não atrapalham o aprendizado, pois são fundamentais para financiar o curso.
- Sem os patrocinadores e anúncios, não seria possível oferecer um curso gratuito com essa qualidade.
- A interatividade permite acessar facilmente as diferentes partes do curso através das playlists.
Encerramento da aula
Visão geral da seção: Nesta seção, é feito o encerramento da aula com uma mensagem de agradecimento aos patrocinadores e ao esforço realizado para disponibilizar o conteúdo do curso gratuitamente.
Encerramento da aula
- Obrigado aos patrocinadores por tornarem esse curso possível.
- O esforço em disponibilizar o conteúdo gratuitamente é valorizado.
- A próxima aula já está disponível para acesso.