Duvida sobre modelagem UML

Pessoal, estou desenvolvendo a documentação do meu projeto final, e tenho acho que duvidas basicas sobre uml. Estou utilizando MVC (Struts). Tenho duas classes, uma de controle e uma DAO. Naõ sei qual relacionamento fazer sobre elas. Tipo assim:

[code]

public class MinhaClasseControle{


public void recuperaAlgo(){
MinhaClasseDAO dao = new MinhaClasseDAO();
String algo2 = dao.recuperaAlgo(algo);
.
.
.
}
public class MinhaClasseDao(){
public String recuperaAlgo(String algo){

return algo;
}
}[/code]
Entao, seria mais ou menos assim, teria uma controle e essa controle instanciaria a DAO para recuperar algo. Achei que isso seria relacionamento de depencia, ja que a controle dependeria da DAO para fazer o que necessita. To certo?

Olha, depende do que você quer demonstrar com o modelo. Para te falar a verdade, se está bem compreendido como funciona as duas classes vejo bem pouca aplicação no estabelecimento desse relacionamento no seu modelo UML.

A meu ver, a maneira como um Control se relaciona com um Entity (ou coisa que o valha como o seu DAO) é melhor demonstrada num diagrama de interação (como o de sequência que é o mais popular).

Mas usar a UML só para fazer demonstração de conceitos (documentação)é a mesma coisa que ir para a Disney só para tirar a foto com o Mickey (essa foi muito ruim)

Dá uma olhada no link abaixo:
http://www.aspercom.com.br/ead/file.php/1/Arquivos/UML_Mitos_e_Erros.ppt

obrigado por responder amigo, mas quer dizer que vc nao aconselha a modelagem de classes de controle e de negocios? Ou seja, seria importante se basear nos objetos mesmo, tipo os que representam as tabelas, os VO,os que são persistidos, e se preocupar com as classes de controle e DAO somente no diagrama de sequencia? mostrando como eles se comunicam?

Não, não, vc não entendeu… eu não aconselho estabelecer o relacionamento.

Bom, não existe receita de bolo, vou te passar um overview. Se tiver bons requisitos na mão inicie pensando na parte estática do sistema: classes de negócio ou de domínio, como vc citou, aquelas que persistem. Não pense nos métodos de negócio ainda. Você vai descobri-los mais tarde.

É bem interessante pensar nessa modelagem da maneira como discutimos aqui.

http://www.guj.com.br/posts/list/33027.java

Ok, já sabemos como o negócio funciona, mas não sabemos como a aplicação funciona. Nesse momento pesquise como seus usuários vão interagir com o sistema. Se tiver os casos de uso ou algo que o valha facilita.

Sabendo como o usuário usa o sistema, coloque-o no diagrama de sequencia (ator), a tela (boundary class), o controle (ou service). Aí é só começar a interagir. O ator faz isso na tela a tela vai buscar não sei o que não sei aonde e retorna alguma coisa para o ator que faz aquilo na tela e a tela vai processar não sei o que não sei aonde e por aí vai…

Viu só… você consegui modelar o sistema de um jeito fácil e prático, sem esticar setas desnecessárias… para não perder tempo gere o código e prossiga até ter o release.

(enfatizo que este é um modo de fazer, o jeito que eu faço, alguns podem dizer que dá para fazer as interações antes de pensar na parte estática)

Use a UML para analisar o sistema. Dependência você usa quando quiser enfatizar uma dependência. Se você quiser esticar seta para todas as dependências que há no sistema você morre louco!

(desculpe, este é um post de sexta-feira a tarde)

Independente do que vc vai fazer, modelar ou não, apenas respondedo a sua pergunta de acondo com o codigo que vc postou:

Tem relacionamento sim, fica assim: usando seta tracejada unidirecional onde, a classe MinhaClasseControle aponta para MinhaClasseDao, vou tentar desenhar, blz?

MinhaClasseControle ---------<<use>>--------> MinhaClasseDao

Pode até usar o esteriótipo, ou não…

Neste caso, usa-se seta traceja para mostrar o relacionamento pelo simples fato, a instância da MinhaClasseDao vive enquanto o método MinhaClasseControle.recuperaAlgo() estiver sendo executado, porque vc esta declarando e instanciando o objeto dentro do metodo (relacionamento fraco)

Agora, se vc estivesse programado assim: por ex:

[code]public class MinhaClasseControle{
private MinhaClasseDAO dao;

public void fazAlgo(){
dao = new MinhaClasseDAO();
}

public class MinhaClasseDao(){

}[/code]

Seria um relacionamento (forte) pois, a declaração do obj DAO fica no escopo de classe da MinhaClasseControle ao contrario da situação anterior, onde a instacia vive no escopo do método.

Neste caso, relacionamento (forte) usa-se uma seta lisa e unidirecional onde a MinhaClasseControle aponta para MinhaClasseDao, vamos desenhar de novo, vai ser dificil mostrar uma seta… mas vale a intenção…

MinhaClasseControle _____________> MinhaClasseDao

Bom, é isso …

espero ter esclareciso sua dúvida

falows

[quote=coutinho]Independente do que vc vai fazer, modelar ou não, apenas respondedo a sua pergunta de acondo com o codigo que vc postou:

Tem relacionamento sim, fica assim: usando seta tracejada unidirecional onde, a classe MinhaClasseControle aponta para MinhaClasseDao, vou tentar desenhar, blz?

MinhaClasseControle ---------<<use>>--------> MinhaClasseDao
[/quote]

Coutinho, se vc for esticar dependência para todas as classes que são utilizadas nos métodos, você não imagina que seriam muitas setas? Vc acha que seria produtivo? Acha que isso agregaria alguma coisa no projeto?

como falei, é mais produtivo esticar dependências para aquilo que você quiser enfatizar no modelo. Se for esticar todas, esse rigor não agrega nada para o projeto. Dependência não gera código…

Caro Rodrigo,

Apenas mostrei que tipo de relacionamneto existe entre as duas classes que ele postou, certo??? Não disse que ele tem que mostrar todos os relacionamentos de todas 999.000.38474.48484 mil classes que ele tem no projeto.

É bem como vc disse:

[quote=rodrigoy]Coutinho, se vc for esticar dependência para todas as classes que são utilizadas nos métodos, você não imagina que seriam muitas setas? Vc acha que seria produtivo? Acha que isso agregaria alguma coisa no projeto?
[/quote]

Tentei explicar a UML para o caso dele, e não ficar contando um monte de lorota que só vai confundir as coisas…

Costumo responder aquilo que me perguntam: ex:

Qual é o seu nome?
Rodrigo.

ao contrario de:

Qual o seu nome? (google:define)
Rodrigo (? — 714) foi o último rei visigodo da Hispânia, eleito depois de destronado Vitiza, provavelmente na Primavera do ano 710. Segundo uma tradição seria filho de Teodofredo e neto de Chindasvindo. … blah, blah, blah …

PÔ, É FODA PARTICIPAR DESSA “COMUNIDADE”, PARECE QUE O PESSOAL AQUI ADORA COMPETIR OU MEDIR CONHECIMNETO…

AO ADMIN… POR FAVOR, EXCLUA O MEU PERFIL

NÃO VOU MAIS CONTRIBUIR…