Exercícios — Aula 04¶
Lista original da aula
O texto abaixo é a lista de exercícios do professor, copiada do arquivo aula-04/exercicios.md do repositório. Só os níveis de título foram ajustados para o menu do site. Para um caminho sugerido de resolução, veja o roteiro do estúdio.
Objetivo¶
Os exercícios abaixo têm como objetivo praticar:
- Criação de classes e objetos;
- Atributos e métodos;
- Relacionamentos entre objetos;
- Relacionamentos 1 para 1;
- Relacionamentos 1 para N;
- Relacionamentos N para N;
- Uso de coleções, como
ArrayList; - Navegação entre objetos relacionados.
Para cada exercício:
- Implemente todas as classes apresentadas.
- Crie os atributos indicados.
- Crie construtores.
- Crie getters e setters quando necessário.
- Implemente os métodos solicitados.
- Crie uma classe
Mainpara testar o sistema.
Exercício 1 – Campeonato de Futebol¶
Implemente um sistema para controlar um campeonato de futebol.
Classe Campeonato¶
Atributos¶
nomeanotimespartidas
Métodos¶
adicionarTime(Time time)adicionarPartida(Partida partida)listarTimes()listarPartidas()buscarTime(String nome)exibirClassificacao()
O método exibirClassificacao() deve mostrar os times ordenados pela quantidade de pontos.
Para calcular a pontuação, considere:
| Resultado | Pontos |
|---|---|
| Vitória | 3 |
| Empate | 1 |
| Derrota | 0 |
Classe Time¶
Atributos¶
nomecidadejogadores
Métodos¶
adicionarJogador(Jogador jogador)removerJogador(Jogador jogador)listarJogadores()mediaIdadeJogadores()
Classe Jogador¶
Atributos¶
nomenumeroposicaotimeidade
Classe Partida¶
Atributos¶
datatimeMandantetimeVisitantegolMandantegolVisitatecartoescampeonato
Métodos¶
registrarTimes(Time timeMandante, Time timeVisitante)registrarGol(int golMandante, int golVisitante)registrarCartao(Cartao cartao)buscarVencedor()exibirPlacar()
Classe Cartao¶
Atributos¶
jogadorminutotipopartida
O tipo do cartão pode ser "AMARELO" ou "VERMELHO".
Teste¶
Na classe Main:
- Crie um campeonato.
- Crie pelo menos 4 times.
- Crie pelo menos 3 jogadores para cada time.
- Crie pelo menos 6 partidas.
- Registre gols e cartões.
- Exiba os resultados das partidas.
- Exiba a classificação do campeonato.
- Mostre o artilheiro do campeonato.
Exercício 2 – Loja Virtual¶
Implemente um sistema para representar uma loja virtual.
Classe Loja¶
Atributos¶
nomeprodutosclientes
Métodos¶
adicionarProduto(Produto produto)adicionarCliente(Cliente cliente)buscarProduto(int codigo)buscarCliente(String cpf)listarProdutos()listarProdutosPorCategoria(Categoria categoria)
Classe Produto¶
Atributos¶
codigonomeprecocategoria
Métodos¶
aplicarDesconto(double percentual)aumentarPreco(double percentual)
Classe Categoria¶
Atributos¶
codigonomeprodutos
Métodos¶
adicionarProduto(Produto produto)listarProdutos()calcularPrecoMedio()buscarProdutoMaisCaro()
Classe Cliente¶
Atributos¶
nomecpfemailpedidos
Métodos¶
adicionarPedido(Pedido pedido)listarPedidos()calcularTotalGasto()buscarPedidoMaisCaro()
Classe Pedido¶
Atributos¶
numeroclienteitensstatus
Métodos¶
adicionarProduto(Produto produto, int quantidade)removerProduto(Produto produto)calcularTotal()calcularQuantidadeItens()buscarItemMaisCaro()alterarStatus(String status)
Classe ItemPedido¶
Atributos¶
produtoquantidadeprecoUnitario
Métodos¶
calcularSubtotal()
O precoUnitario deve armazenar o preço do produto no momento em que ele foi adicionado ao pedido.
Dessa forma, alterar posteriormente o preço do produto não deve modificar pedidos antigos.
Teste¶
Na classe Main:
- Crie pelo menos 3 categorias.
- Crie pelo menos 8 produtos.
- Crie pelo menos 3 clientes.
- Crie diferentes pedidos.
- Adicione produtos e quantidades aos pedidos.
- Exiba o valor de cada pedido.
- Mostre quanto cada cliente já gastou.
- Mostre o produto mais caro de cada categoria.