Você é responsável por construir o backend de um novo gerenciador de times de futebol. Após fecharem o escopo do projeto, você e sua equipe definiram a @interface
que o software deve implementar. A interface é a seguinte :
public interface MeuTimeInterface {
public void incluirTime(Long id, String nome, LocalDate dataCriacao, String corUniformePrincipal, String corUniformeSecundario);
public void incluirJogador(Long id, Long idTime, String nome, LocalDate dataNascimento, Integer nivelHabilidade, BigDecimal salario);
public void definirCapitao(Long idJogador);
public Long buscarCapitaoDoTime(Long idTime);
public String buscarNomeJogador(Long idJogador);
public String buscarNomeTime(Long idTime);
public Long buscarJogadorMaiorSalario(Long idTime);
public BigDecimal buscarSalarioDoJogaodor(Long idJogador);
public List<Long> buscarJogadoresDoTime(Long idTime);
public Long buscarMelhorJogadorDoTime(Long idTime);
public Long buscarJogadorMaisVelho(Long idTime);
public List<Long> buscarTimes();
public List<Long> buscarTopJogadores(Integer top);
}
Os dados devem ficar armazenados na memória.
- Parâmetros com
*
são obrigatórios. - Os parâmetros, com exceção de identificadores, são sempre íntegros e farão sentido.
Realiza a inclusão de um novo time.
- Long
id
* Identificador do time - String
nome
* Nome do Time - LocalDate
dataCriacao
* Data de criação do time - String
corUniformePrincipal
* Cor do uniforme principal do time - String
corUniformeSecundario
* Cor do uniforme secundário do time
Exceções:
- Caso o
identificador
já exista, retornarbr.com.codenation.desafio.exceptions.IdentificadorUtilizadoException
Realiza a inclusão de um novo jogador.
- Long
id
* Identificador do Jogador - Long
idTime
* Identificador do time - String
nome
* Nome do Jogador - LocalDate
dataNascimento
* Data de nascimento do Jogador - Integer
nivelHabilidade
* Nível de habilidade do jogador (0 a 100) - BigDecimal
salario
* Salário do jogador
Exceções:
- Caso o
identificador
já exista, retornarbr.com.codenation.desafio.exceptions.IdentificadorUtilizadoException
- Caso o time informado não exista, retornar
br.com.codenation.desafio.exceptions.TimeNaoEncontradoException
Define um jogador como capitão do seu time. Um time deve ter apenas um capitão, por tanto o capitão anterior voltará a ser apenas jogador.
- Long
idJogador
* Identificador do jogador.
Exceções:
- Caso o jogador informado não exista, retornar
br.com.codenation.desafio.exceptions.JogadorNaoEncontradoException
Mostra o identificador
do capitão do time.
- Long
idTime
* Identificador do Time
Exceções:
- Caso o time informado não exista, retornar
br.com.codenation.desafio.exceptions.TimeNaoEncontradoException
Caso o time informado não tenha um capitão, retornar br.com.codenation.desafio.exceptions.CapitaoNaoInformadoException
Retorna o nome
do jogador.
- Long
idJogador
* Identificador do jogador
Exceções
Caso o jogador informado não exista, retornar br.com.codenation.desafio.exceptions.JogadorNaoEncontradoException
Retorna o nome
do time.
- Long
idTime
* Identificador do Time
Exceções
- Caso o time informado não exista, retornar
br.com.codenation.desafio.exceptions.TimeNaoEncontradoException
Retorna a lista com o identificador
de todos os jogadores do time, ordenada pelo id
.
- Long
idTime
* Identificador do Time
Exceções
- Caso o time informado não exista, retornar
br.com.codenation.desafio.exceptions.TimeNaoEncontradoException
Retorna o identificador
do melhor jogador do time.
- Long
idTime
* Identificador do time.
Exceções:
- Caso o time informado não exista, retornar
br.com.codenation.desafio.exceptions.TimeNaoEncontradoException
Retorna o identificador
do jogador mais velho do time. Usar o menor identificador
como critério de desempate.
-
Long idTime* Identificador do time
-
Caso o time informado não exista, retornar
br.com.codenation.desafio.exceptions.TimeNaoEncontradoException
Retorna uma lista com o identificador
de todos os times cadastrado, ordenada pelo identificador
.
Retornar uma lista vazia caso não encontre times cadastrados.
Retorna o identificador
do jogador com maior salário do time. Usar o menor identificador
como critério de desempate.
- Long
idTime
* Identificador do time.
Exceções:
- Caso o time informado não exista, retornar
br.com.codenation.desafio.exceptions.TimeNaoEncontradoException
Retorna o salário
do jogador.
- Long
idJogador
* Identificador do jogador
Exceções:
- Caso o jogador informado não exista, retornar
br.com.codenation.desafio.exceptions.JogadorNaoEncontradoException
Retorna uma lista com o identificador
dos top
melhores jogadores, utilizar o menor identificador
como critério de desempate.
- Integer
top
* Quantidade de jogares na lista
Exceções:
- Caso não exista nenhum jogador cadastrado, retornar uma lista vazia.
Neste desafio você aprenderá:
- Variáveis e métodos
- Operadores matemáticos
- Controle de fluxo
- Listas
- Tratamento de exceções
Para este desafio você precisará :
- Java 8 +
Para instalar no MacOS, usando o HomeBrew basta executar:
brew cask install java
Para instalar no Linux e Windows confira os links na sessão de conteúdo