Vamos começar escrevendo qual é a ideia:
Receber um conjunto de times e devolver a tabela com todos os jogos entre esses times, as datas das partidas e com a opção da nossa "otimização", que visa reduzir o número de viagens entre os times.
Considerando os requisitos de saída, precisamos ter como entrada não apenas o nome do time, mas outros dados também:
- sua localização, para que possamos planejar as viagens;
- o modelo do campeonato: serão times em um grupo único, como o Brasileirão? Ou serão times divididos em vários grupos, como a Copa do Mundo?
- o campeonato será em turno e returno, turno único, ou algum modelo misto, como a Champions League, onde apesar de um grupo único, não jogam todos contra todos? Ou como a NBA, onde se joga 4 turnos contra os times do seu grupo e até 3 turnos contra os demais times[1]?
- se houver a divisão por grupos, somos nós quem vamos sortear que time cai em cada grupo ou o usuário já definiu isso? Vamos dar a opção para o usuário;
- o usuário realmente quer uma tabela "otimizada"?. Talvez seja só o campeonato de condomínio, não é mesmo? Vamos oferecer ao usuário a opção de criar uma tabela simples ou uma otimizada, ok?
- quantos jogos podemos agendar por dia? Haverá diferenças de limite de jogos por cada dia da semana (tipo, mais jogos aos fins de semana)?
e qual é o intervalo de descanso que um time precisa ter entre uma partida e outra?
E o nome do campeonato, claro.
Nota: Nesta fase, em um projeto real, teríamos que obter esses requisitos com o cliente.
Dada as informações acima, podemos inferir que as entradas do nosso sistema serão:
Entradas:
- Um conjunto de equipes e suas localizações
- a forma do campeonato ( quantos turnos haverá entre times do mesmo grupo? E contra times dos demais grupos? Aliás, haverá divisão por grupos?
- Havendo a divisão por grupos, somos nós quem faremos o sorteio ou receberemos os grupos já definidos?
- O usuário quer uma tabela otimizada? Sim ou não?
- Total de jogos permitidos por dia
- Dias de descanso que um time;precisa ter entre um jogo e outro;
- E o nome do campeonato.
E a saída será:
- O nome do campeonato
- Os grupos (ou o grupo, caso seja um só)
- A tabela de jogos, contendo todos os jogos com suas respectivas datas
Aqui já dá pra imaginar dois JSONs, um com os dados de entrada e outro com os dados de saída, certo?
E, pra cada tópico, já dá pra imaginar um objeto, ok?
E como objetos sempre nos levam a falar de classes, então já estamos bem perto dele... O código.
Assuntos para o próximo texto. Prosseguimos.
[1] Por curiosidade, entenda o regulamento da NBA com esse texto no blog deles.
Top comments (0)