[RESOLVIDO] Modelagem Classe | Boas práticas

5 respostas
modelagemjava
T

Olá galera. Modelei um classe para Usuário em um projeto mas estou com dúvidas se a maneira como construi é “correta”. O cenário é o seguinte:

A aplicação terá os usuários:
especialista, líder, coordenador, supervisor, gerente e administrador. Então, criei a classe Usuario:

public class Usuario {

private int id;
private String nome;
private String email;
private String telefone;
private Perfil perfil;

... getters and setters ...

}

e a classe Perfil:

public class Perfil {
    private int id;
    private String nome;
}

Neste cenário, eu deveria:

  • criar uma classe para representar cada tipo de usuário? Porque?
  • criar uma classe do tipo enum para perfil?
  • existe uma boa prática para este tipo de modelagem?
  • adicionalmente, para tratar as questões de acesso e autorização a aplicação estas duas classes seriam suficientes? (não estou me referindo a implementações de mecanismos de login)

Valeu!

5 Respostas

D

Classe do tipo enum não existe, enum é um tipo específico.

Vamos lá, você deve entender que classe é, de modo geral, um agrupamento de características (atributos) e ações (métodos) que estão ligados à um grupo de objetos.

Desta maneira, você começa a modelar as coisas, como você fez. Criando a classe usuário.
A partir daí, você precisa ver se cada um dos perfis é um conjunto de objetos com características ou ações próprias (aí você estende a classe usuário para cada especialização necessária) ou se cada perfil é um atributo de usuário (o cenário mais real, mais possível).

Sobre se estas classes seriam suficientes, quais são os requisitos para controle de acesso? Estas classes atendem aos mesmos?

T

Oi Darlan, você está todas hein rsrs … legal pela ajuda. Você descreveu exatamente o que eu estava pensando. Mas como não consegui encontrar um modelo de arquitetura assim para validar minha implementação, compartilhei a dúvida aqui. Seguirei assim.

Obrigado!

C

olá, aproveitando o post, em realção a duvida do amigo ai. No caso de Herança teria uma boa pratica padrao a se seguir ou isso vai depender muito do projeto em si.

um exemplo: Uma Clinica tem Secretaria,Medico e administrador.
Seria ideal ter um classe Usuario ou Pessoa e herdar ou deixar os atributos para todos eles?

T

Depende do projeto, não há uma receita única.

Para um exemplo simples como esse seu (Pessoa -> [Secretaria, Medico, Administrador]), pode ser viável sim, mas tudo depende do escopo e requisitos.

Abraço.

D

Cara, de Fowler a Robert Martin, eu diria que a melhor prática é não usar.
Mas, como é um conceito de OO e o java implementa e etc, etc, etc, você deve, sempre, ter cuidado com o uso de herança.
Lembre-se de seguir os princípios S.O.L.I.D. em que, um deles, preza por dar preferência à abstração e não à implementação.

Criado 12 de abril de 2018
Ultima resposta 13 de abr. de 2018
Respostas 5
Participantes 4