Exercicio 1: Modelagem OO e Testes Automatizados
Campeonato de Futebol
Nesta
primeira lição de casa, você deverá fazer uma boa modelagem orientada a
objetos (OO) para um campeonato de futebol. Para tanto, você deverá
criar classes para representar os times que fazem parte do campeonato,
os jogos que serão disputados, o calendário de jogos e também um
contabilizador de pontos e estatísticas. Em um dado instante, cada
objeto jogo pode aparecer como ainda não disputado ou como já disputado;
se o jogo já foi disputado, o objeto irá armazenar o número de gols
marcados por cada um dos dois times.
O
contabilizador de estatísticas recebe como parâmetro um calendário de
jogos (alguns deles já disputados e outros não) e calcula, para cada
time, PG = Pontos Ganhos, J = jogos disputados, GP = Gols Pró, SG =
Saldo de Gols. O contabilizador deve ser capaz também de determinar quem
é o vencedor de um determinado campeonato.
Você deve implementar também uma bateria de testes usando JUnit 5 (Jupiter) para testar muito bem o funcionamento do seu programa. Para tanto, teste vários casos mas inclua, pelo menos, um campeonato com 4 times em que todos jogam contra todos.
Observações:
- O exercício deve ser feito individualmente ou em dupla. Caso seja feito em dupla, é obrigatório que todo o código seja escrito com programação em pares, ou seja, com os dois alunos trabalhando em conjunto em todo o código.
- Ao implementar as classes, pense em torná-las o mais testáveis possíveis. Ou seja, elas devem oferecer métodos que devolvam os valores relevantes para os testes. Por exemplo, a classe que vai contabilizar os pontos e estatísticas deve oferecer métodos que fornecem esses valores. (Se você não fizer isso e fizer simplesmente métodos que imprimem os valores com println, não será possível escrever testes automatizados para testá-los).
- Caso o seu código de teste possua muito código repetido, dê uma olhada na anotação @BeforeEach do JUnit 5. Com ela você pode pegar esse código repetido e movê-lo para um único método que é executado antes de todos os testes. Veja um exemplo em https://www.petrikainulainen.net/programming/testing/junit-5-tutorial-writing-our-first-test-class/
- Vocês podem utilizar qualquer método da biblioteca de classes de Java.
- Coloque o seu nome e NUSP como comentário no início de todos os arquivos.java. Caso faça em dupla, coloque o nome de ambos.
Critério de correção:
Cada exercício receberá uma nota de 0 a 10 seguindo o seguinte critério:
- Uso de bons nomes para classes, métodos e variáveis (2 pontos)
- Boa organização do código em classes (2 pontos)
- O programa faz o que precisa ser feito corretamente (3 pontos)
- Os testes cobrem bem os principais casos de uso do sistema e os principais métodos das classes (2 pontos)
- O código dos testes está bem organizado e com pouco código repetido (1 ponto)