Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Implementando classes através de diagrama.

Boa noite, estou praticando alguns exercícios sobre herança e polimorfismo que encontrei pela internet, mas me deparei com um exercício que exige que eu implemente as seguintes classes em um diagrama. Segue o link:

https://drive.google.com/file/d/16guCoDEkZLY4DyRiNT77gkDM3ck3lX1r/view?usp=sharing

Como é a primeira vez que vejo esses diagramas e não consegui absorver com clareza s explicações sobre diagramas que vi na internet, gostaria que me tirassem algumas dúvidas:

+Animal() indica que é apenas o construtor padrão da classe? +Animal(nome:String) é de fato um método Animal que recebe uma string como parâmetro ? +caminha():String ... Esse :String está especificando o retorno do método ?

E quanto ao atributo "raca" ? Não deveria o diagrama indicar onde será seu uso ?

Desde já, lhe agradeço.

3 respostas

Isso é um diagrama muito rustico de uma UML (Unified Modeling Language) de um Projeto. UML facilita a qualquer membro de uma equipe ou mesmo um simples desenvolvedor a identificar o que fazer e onde no projeto - Desde a Abstração (o q se quer obter) a forma de distribuir as classes através de herança, interfaces e polimorfismo.

Tanto gato como cachorro se referenciam a uma superclasse do tipo Animal (herança), implementando seus métodos específicos (cachorro .late() e gato .mia().)

O construtor de animal não recebe valores ou recebe uma String com o nome, ficando a critério qual utilizar. A implementação da raça pode ser via um setter ou padronizada para SRD, a verificar a business rule deste projeto.

Pode-se dizer que tanto cachorro como gato, ao invocarem seu construtor podem chamar o super(String nome); ou só invocar um construtor vazio.

se quiser aprender sobre uml: https://www.tutorialspoint.com/uml/index.htm

solução!

Fala meu caro, dei uma olhada no diagrama e vou tentar esclarecer suas dúvidas.

Dúvida 1: +Animal() indica que é apenas o construtor padrão da classe? +Animal(nome:String) é de fato um método Animal que recebe uma string como parâmetro ? +caminha():String ... Esse :String está especificando o retorno do método ?

R: Sim, Animal() indica que é um construtor padrão da classe. Animal(nome:String) é um construtor também porém mais específico, ele será ativado quando você decidir instanciar um animal já com o nome definido. Sim, esse caminha():String especifica o retorno do método. Um possível retorno poderia ser "Seu animal andou". Você poderia trabalhar esse método indicando o nome do animal que andou por exemplo.

Dúvida 2: E quanto ao atributo "raca" ? Não deveria o diagrama indicar onde será seu uso ?

R: Não faria muito sentido raça NESSE exemplo de diagramas pois estamos prevendo que cada animal tem apenas uma raça e que essa raça não implementará características específicas da raça, apenas saberemos o nome dela. Caso fossemos criar a classe raça, ela deveria ter um motivo para sua criação, por exemplo: Raça Dogue alemão reescreve o método caminhar de uma forma mais específica (A mensagem seria "Seu animal correu muito"). Caso contrário seria apenas uma classe fantoche. =)

Abraços!

Meu muito obrigado a todos que colaboraram. Agora ficou bem mais claro como devo implementar esse diagrama.

Obrigado a todos =)