Dúvida básica sobre arquitetura sistema

Por exemplo eu tenho um usuario com cargos como secretario, tesoureiro,entre outros.Cada cargo poderá ter acesso a determinadas telas.É melhor declarar cada cargo como uma classe ou como uma variavel da classe usuario?

Resumindo:

Cada cargo uma classe:

  1. class Tesoureiro extends Usuario, class Secretario extends Usuario,…

ou

Classe usuario com cargo como string:

2)class Usuario{
String cargo = “”}

ou

Classe usuario com objeto cargo que dentro da classe cargo tera o nome do cargo e uma descrição:

3)class Usuario{
Cargo cargo = }

Corrigindo :

Pensei que fosse uma variável global !!! :shock: :shock: :shock: :shock:
O correto seria uma variável de instância. :wink:

Bom, voltando a sua dúvida eu optaria pela composição.
Talvez não uma String, mas um objeto cargo onde seria possível atribuir os perfís do cargo corretamente.

public class Pessoa{ private ICargo cargo; public ICargo cargo(){ return cargo; } }

Eu gosto bastante de utilizar uma classe para cada cargo, fica com uma cara mais OO, mas isso vai depender do projeto. Caso estes cargos venham a crescer, você terá problemas, pois terá que alterar código fonte. Outra opção também poderia ser um enumerador. Mas meu voto vai para utilizar uma propriedade Cargo na classe Pessoa.

Controle de Acesso? Se vc quer algo mais profissional pq não dá uma olha em frameworks como Spring e Seam!?