Atores vs. Classes

Caros, vai ai uma dúvida de iniciante em OO:
Feito a análise inicial do projeto, os casos de uso, tenho sempre uma dúvida com relação a um ponto: Quando atores viram classes? Eles realmente viram?
Por exemplo um sistema simples de biblioteca virtual de uma escola. O ator principal seria o Aluno, ele viraria uma classe?
Obrigado a todos.
Desculpa a Sta. Ignorância.
Abraços.

Classes e atores são coisas diferentes, bastante diferentes.
Você precisa desenhar outros diagramas, antes de você chegar ao diagrama de classes.

Oi cissosaito,

No exemplo que você deu da biblioteca, provavelmente o sistema teria que armazenar dados do aluno. Desta forma, criaríamos uma classe Aluno, com os atributos login, senha, nome, email, etc… E os métodos necessários. Mas não é sempre que isso acontece.

[]´s
Tatiana

[quote=cissosaito]Caros, vai ai uma dúvida de iniciante em OO:
Feito a análise inicial do projeto, os casos de uso, tenho sempre uma dúvida com relação a um ponto: Quando atores viram classes? Eles realmente viram?
Por exemplo um sistema simples de biblioteca virtual de uma escola. O ator principal seria o Aluno, ele viraria uma classe?
Obrigado a todos.
Desculpa a Sta. Ignorância.
Abraços.[/quote]
Atores podem ser sistemas, usuários, hardwares (impressora, teclado, monitor,…), enfim qualquer princípio de início e interação de casos de usos. No seu exemplo de biblioteca virtual de uma escola, aluno é um ator! A representação desse ator ( aluno ) será definido por você, ou seja, na construção do diagrama de classe você terá provavelmente nesse seu sistema uma classe Aluno, mas provavelmente, a ação se dará pelo usuário ( que terá perfil de aluno ) e esse usuário pode ou não usar a classe que foi modelada. Depende de como você vai projetar seu sistema.

Outra coisa também é você criar atores de domínio, ou seja, atores que serão criados apenas para representação de casos de usos e outros diagramas. Mas eles podem assumir outros nomes quando o sistema estiver em funcionamento.

Mas atores são diferentes de classes.

cissosaito,

O software por sí só é um “ser inanimado”, isto é, não funciona sozinho. O M$-Word, sozinho não consegue produzir texto, precisa do ator para digitar as letrinhas.

O ator é alguma coisa externa ao sistema que possui responsabilidades fora do controle do próprio sistema. 99% dos casos o ator será uma pessoa ou um sistema externo (integração entre sistemas).

Seria legal você fazer o nosso curso on-line grátis como ponto de partida. Cadastre-se e acesse: www.aspercom.com.br (recomendo a lição 2, onde tratamos esse assunto).

Pode ocorrer de ter uma classe com o mesmo nome de um ator, mas a classe é interna à responsabilidade do sistema, o ator não!

Gente boa!!!
Atores são classes esterotipadas!! Segundo a UML um ator é uma classe com stereótipo <>. Se o seu sistema precisa de manipular dados desse ator então é possível vc reaproveitar seu ator como classe na modelagem de análise e projeto sim!

Só pra exemplificar: Quem usa o JudeUML (que por acaso está de acordo com a UML) insira um ator em um diagrama e clique com o botão direito no mesmo. Em seguida selecione “Icon Notation”. Imediatamente ele vai ser exibido como uma caixa de classe com o estereótipo marcado.

abração!

Err… não lucas, Ator na UML não é classe. Ator na UML é um classifier que simplesmente permite herança (vide figura 401 da Superstructure). Um Ator não pode ter dados (atributos) e nem comportamentos (operação) na UML. O fato de permitir que o ator seja representado como um retângulo estereotipado como <> é um notação alternativa da UML, também prevista na especificação. Não é porque é um retângulo que é uma classe.

O sistema mudando dados do Ator? Acho que a única situação que eu ví isso foi no filme Matrix e no Exterminador do Futuro. 8) Se o que você está falando fosse verdade você sentaria na frente do computador e o sistema falaria “Lucas, vou mudar a sua idade para 81 anos. OK? Está mudado. Veja a sua nova data de nascimento no RG.”. :? [desculpe a ironia, mas não deu para deixar escapar… sorry, afinal, estamos aqui para dar umas risadas também] :wink:

Não existe ferramenta 100% aderente à UML.

Opa!
Perdoe minha ignorância, acabei tomando o Jude (que até então parecia estar de acordo com a UML :stuck_out_tongue: ) como regra - erro meu. Não disse que por ser retângulo/caixa tornas o elemento uma classe não, só me espelhei no Jude, que trata o ator dessa forma. Veja que no Jude é possível adicionar atributos e operações à um ator sim, mas entre isso e estar de acordo com a UML já não posso afirmar nada.

Quanto à minha expressão “(…)sistema mudando dadosdo ator(…)”. Me expressei mal aqui. Até então eu entendia que se o seu sistema-alvo permitir a realização de casos de uso por um ator que é cadastrado no sistema então vc provavelmente vai ter uma classe relativa à esse ator na sua modelagem de análise/projeto. Certo?

[quote=lucasdeoliveira]Até então eu entendia que se o seu sistema-alvo permitir a realização de casos de uso por um ator que é cadastrado no sistema então vc provavelmente vai ter uma classe relativa à esse ator na sua modelagem de análise/projeto. Certo?
[/quote]

Err… não… você pode ter um ator com o mesmo nome de uma classe no seu sistema. Essa classe pode representar o ator, mas a classe é a classe e o ator é o ator. Como disse, o ator tem responsabilidades fora do controle do sistema, mas a classe é interna e o sistema é responsável por ela.

O ator na UML representa alguma coisa fora do sistema. Você se chama Lucas, certo? Se eu criar uma classe chamada Lucas, daria para colocar você no lugar da Classe? Ou melhor, daria para reaproveitar você no lugar da classe?

Entendo…ator modela qualquer coisa que precisa interagir com o sistema e é externo ao mesmo. Isso eu tinha em mente, mas não é natural acontecer da modelagem de casos de uso contar com um ator Cliente, por exemplo, e a modelagem de classes ter um ator Cliente? Acho que estou criando caso quanto ao conceito de ator que apesar de ser externo ao sistema merece, muitas vezes, uma classe que o represente.

Opa Rodrigo…quis dizer isso não ein! Nada de classe Lucas não…Se existe um ator Funcionário/Gerente/Cliente/… que vai ser o Lucas um dia vamos ter q criar uma classe Funcionário/Gerente/Cliente/… para atender isso.

Tô viajando muito aqui?

[]'s