Se entendi correto, na aula foram criadas duas classes Domain para enviarem objetos nas requisições HTTP. Em que essa classe Domain se diferencia de um DTO? E nessa classe Domain não é necessário criar Getters e Setters?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Se entendi correto, na aula foram criadas duas classes Domain para enviarem objetos nas requisições HTTP. Em que essa classe Domain se diferencia de um DTO? E nessa classe Domain não é necessário criar Getters e Setters?
Olá Wagner! Tudo bem?
Uma classe de domínio é usada para representar entidades do mundo real no seu código. Ela encapsula dados e comportamentos que são relevantes para o domínio da aplicação. No exemplo que você mencionou, as classes Abrigo e Pet são classes de domínio, pois representam entidades do mundo real com suas propriedades específicas, como nome, telefone e e-mail para um abrigo.
Por outro lado, um DTO (Data Transfer Object) é um padrão de projeto usado para transferir dados entre diferentes camadas de uma aplicação, especialmente entre a camada de apresentação e a camada de serviço. O principal objetivo de um DTO é transportar dados sem qualquer lógica de negócio. Ele geralmente contém apenas atributos e os métodos getters e setters.
Quanto à necessidade de criar getters e setters em uma classe de domínio, isso depende de como você pretende usar essa classe. Se você precisa acessar ou modificar as propriedades de fora da classe, é uma boa prática criar getters e setters para manter o encapsulamento. No entanto, se as propriedades só precisam ser acessadas ou modificadas dentro da própria classe, você pode optar por não criá-los.
Por exemplo, se você tiver uma classe Abrigo e precisar acessar o nome do abrigo em outra parte do seu código, você pode criar um getter assim:
public String getNome() {
return nome;
}
E um setter para modificar o nome, se necessário:
public void setNome(String nome) {
this.nome = nome;
}
Espero ter ajudado e bons estudos!