Prontos, preparados... já!
Você precisa construir uma arquitetura rudimentar que simule um sistema de distribuição de pontos de XP entre dois estudantes que resolvem uma série de desafios fornecidos no Edabit.
Etapa 1: Construa uma classe Challenge
Os parâmetros do construtor são id e level. O id será o identificador numérico do desafio, e level será um código composto por duas letras maiúsculas:
"VE"= "Very Easy""EA"= "Easy""ME"= "Medium""HA"= "Hard""VH"= "Very Hard""EX"= "Expert"
Etapa 2: Construa um método para a classe Challenge
O nome do método dentro da classe Challenge é points().
O método deve retornar a quantidade de pontos obtidos ao resolver um desafio, com base no nível do desafio:
VE= 5 XPEA= 10 XPME= 20 XPHA= 40 XPVH= 80 XPEX= 120 XP
Etapa 3: Construa uma classe User
Os parâmetros do construtor são name, xp e log. name será, simplesmente, o nome de usuário. xp é o acumulador que armazena os pontos de XP obtidos. log é uma espécie de diário do usuário: é um array que armazenará o id dos desafios resolvidos pelo usuário.
Etapa 4: Construa um método para a classe User
O nome do método a ser implementado dentro da classe User é newSolvedChallenge() e ele aceitará como parâmetro um objeto da classe Challenge.
O método deve incrementar o xp do usuário e armazenar o id do desafio no array log.
Etapa 5: Declare as instâncias necessárias para os testes
Agora que tudo está pronto, você precisa configurar o exercício e declarar as instâncias das classes criadas para que os testes possam ser realizados. Comece pelas declarações dos usuários; são dois:
user1➞name= "Madam" |xp= 0 |log= []user2➞name= "Steve" |xp= 0 |log= []
Agora, declare os desafios; são seis:
challenge1➞id= 1 |level= "VE";challenge2➞id= 2 |level= "EA";challenge3➞id= 3 |level= "ME";challenge4➞id= 4 |level= "HA";challenge5➞id= 5 |level= "VH";challenge6➞id= 6 |level= "EX";
Por fim, você precisa declarar quais são os desafios resolvidos pelos usuários, usando o setter implementado anteriormente:
Madam resolve os seguintes desafios, nesta ordem:
challenge1,challenge4,challenge6
Steve resolve os seguintes desafios, nesta ordem:
challenge5,challenge3,challenge2
Etapa 6: Mecânica dos testes
Os testes verificarão se, depois de chamar as propriedades e os métodos da instância criada por você, o resultado esperado é retornado. Portanto, você não precisa retornar um resultado, apenas garantir que tudo esteja configurado de acordo com as instruções.
Exemplos
user1.name ➞ "Madam"
user2.xp ➞ 110
// Steve has solved challenges 5, 3 and 2 (80 + 20 + 10 points)
user1.log ➞ [1, 4, 6]
// Remember to respect the order given in Instructions for to store data into the log
challenge4.level ➞ "HA"
challenge3.id ➞ 3
challenge1.points ➞ 5Observações
- Ao implementar métodos, você pode usar funções normais ou uma combinação de set/get. Consulte os Resources para ter uma ideia geral sobre a diferença entre esses dois procedimentos e, se quiser deixar sua opinião, use a aba Comments.
- Se quiser se aprofundar, veja um ponto de vista negativo sobre setters & getters.