Estou começando a programar um sistema de mensagem e tive um duvida com relação a Usuário x Administrador, no caso um Usuário pode criar um grupo de bate-papo, quando ele cria passa a ser Administrador, como ocorreria essa mudança em tempo de execução?
Obs.: Administrador herda de Usuário.
Mudança de Comportamento
6 Respostas
Timer
O que diferencia administrador de usuário? Ele possui alguma(s) característica(s) específica(s), não? Logo, a maneira de verificar se um usuário é ou não um administrador é validando se esta(s) característica(s) estão definidas.
Nesse caso em especifico o Administrador pode por exemplo, adicionar ou remover outros usuários e ate excluir o grupo.
Edit: Fiz de uma maneira aqui e aparentemente funcionou.
Na Classe Usuario ficou assim
public Usuario criarGrupo() {
Grupo grupo = new Grupo();
AdministradorDeGrupo userAdmin = new AdministradorDeGrupo(grupo);
return userAdmin;
}
E no main
public static void main(String[] args) {
Usuario u1 = new Usuario();
Usuario u2 = new Usuario();
u2.setApelido("Hugo");
u1 = u1.criarGrupo();
((AdministradorDeGrupo)u1).getGrupo().setMembro(u2);
((AdministradorDeGrupo)u1).getGrupo().imprimeMembros();
}
Certo, isso são ações. O que acrescenta uma gama de ações a uma classe é uma interface (seguindo o princípio do É UM). O usuário sempre será um usuário, mas, ele fará as vezes de um administrador.
Porém, o que eu entendi do teu modelo é que você tem uma relação de herança (especialização), onde administrador é um usuário com características próprias. Essa característica poderia ser um simples atributo (private boolean administrador;) por exemplo.
Esse atributo poderia ser checado para disponibilizar e permitir ao admin que execute as ações que lhe são cabíveis e bloquear aqueles que não têm esses privilégios.
Então minha classe AdministradorDeGrupo não precisa existir se o Usuario tiver esse atributo boolean?
Eu não sei. A modelagem é tua e é você que deve definir isso.