Mudança de Comportamento

6 respostas
poojava
C

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.

6 Respostas

rodriguesabner

Timer

darlan_machado

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.

C

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();
}
darlan_machado

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.

C

Então minha classe AdministradorDeGrupo não precisa existir se o Usuario tiver esse atributo boolean?

darlan_machado

Eu não sei. A modelagem é tua e é você que deve definir isso.

Criado 13 de maio de 2019
Ultima resposta 13 de mai. de 2019
Respostas 6
Participantes 3