O que você não está entendendo da parte de atribuições? É a isso que me refiro quando digo que é preciso que você diga quais as dificuldades específicas está tendo.
Por exemplo, após a criação da classe (como demonstrei acima), o execício pede 2 coisas em uma mesma frase:
- não permita atribuição direta;
- só aceitar valores válidos (0-23 ou 0-59)
Então, se você, por exemplo, não entendeu a primeira, uma pergunta melhor que você pode fazer é:
“Não entendi o que é atribuição direta, o que isso quer dizer?”
Daí sim podemos te responder melhor. Algo como:
- atribuição direta é quando os atributos da instância de uma classe pode ter seus valores alterados diretamente por classes externas, sem usar métodos acessórios (setters, por exemplo). Você controla se os atributos podem ou não ter atribuição direta usando modificadores de acesso : private, protected e public.
No caso, se os atributos são públicos, dá pra fazer algo como:
class Time{
public int hora;
}
public static void main(String[] args){
Time umaHoraQualquer = new Time();
umaHoraQualquer.hora = 10; // vai funcionar, pois o acesso é público
}
Isso acima é atribuição direta.
Agora, se o atributo é privado, você não consegue passar um valor diretamente:
class Time{
private int hora;
}
public static void main(String[] args){
Time umaHoraQualquer = new Time();
umaHoraQualquer.hora = 10; // NÃO VAI funcionar, pois o acesso é privado, dará erro de compilação
}
Então você precisará de métodos de acesso (ex: set):
class Time{
private int hora;
public void setHora(int novaHora){
this.hora = novaHora;
}
}
public static void main(String[] args){
Time umaHoraQualquer = new Time();
umaHoraQualquer.setHora(10); // vai funcionar, usando o método set
}
Entendeu a ideia?
Com isso, quero reforçar 2 pontos importantes:
- só postar o enunciado e dizer “não sei fazer nada” não nos ajuda a te dar uma resposta. O pessoal aqui é avesso à dar resposta pronta e completa, e mesmo com a resposta, não tem como garantir se você entendeu a solução. Você precisa mostrar o que fez e o que não entendeu como fazer, e ser o mais específico que puder quando estiver com dificuldades;
- você precisa construir seu conhecimento em cima de conceitos, evitando pular etapas sempre que possível. Por ex., se você tem dificuldades em entender métodos de acesso, precisa focar nisso antes de ir para as próximas etapas. Não sei que materiais de estudo está usando, mas há bastante cursos e materiais por aí que cobrem relativamente bem esses conceitos. Veja se uns vídeos no Youtube ou mesmo livros ou cursos diferentes do que você está seguindo são mais efetivos.
Abraço.