Dúvida no diagrama de sequência

Fala galera, tudo tranqüilo, galera eu estou tentando criar um diagrama de seqüência para a minha aplicação de controle de estoque, mais eu não estou conseguindo compreender muito bem como ficaria esse diagrama com a arquitetura que eu estou utilizado, o meu projeto está assim eu tenho uma classe Produto com os gets e sets, uma classe ProdutoBO com ás regras de negocio, uma classe ProdutoDAO com os sqls e uma classe com a interface para o usuário. Inclusive eu dei uma olhada nos diagramas lá no site da sun mais mesmo assim eu não conseguir compreender como ficaria esse diagrama de seqüência com essa arquitetura. Galera agradeço desde já pela atenção é vou ficar torcendo para que alguém possa esclarecer essa minha dúvida t+++.

Putz… “Falar” um diagrama de sequencia é meio estranho… mas vamos tentar…

Eu faria da seguinte maneira:

1. O Ator submete o jsp para o controller. 2. O Controller delega quem irá processar esta solicitação. Controller Atual [CA]. 3. O CA instanciaria o Business Object [BO]. 4. O BO chama uma fábrica de DAOs [Factory]. 5. A Factory retorna uma interface do DAO solicitado. 6. O BO chama os métodos para executar a solicitação. 7. O DAO executa as tarefas e retorna objetos de transferencia [DTO]

É meio dificil “escrever” este diagrama, mas seria mais ou menos assim…
Lembre-se de:

  • Desacoplar totalmente as camadas de DAO e de BO!!!
  • Nunca pule uma camada!!!
  • Para transferencia de informação entre as camadas, utilize os objetos disponiveis na linguagem (nativos e/ou primitivos) ou os DTOs.
  • BOs e DTOS SEMPRE devem levantar exceções!

Boa tarde,

Cara, vc tem q ter em mente q o diagrama de sequência serve pra descrever seus “processos”, exemplo, o processo de “cadastrar produto”. Neste caso vc começa colocando o ator q dispara essa ação, vc coloca a linha jogando pro outro ator (geralmente uma classe do “sistema”), e por cima da linha vc coloca o nome do método q faz essa requisitação, bem como seus parâmetros e retorno. Com relaçao a nomenclatura e forma de se desenhar este diagrama, aconselho vc pegar na net algum tutorial ou usar o livro “Utilizando UML e Padrões”, 2ª Edição, Graig Larman.

Espero ter ajudado.

Tipo para cada caso de uso vc cria uma classe Controle , para cada ator(usuário,banco de dados e etc), vc cria uma classe Fronteira(Interface) e depois cria um classe Entidade que seria a sua Produto com os Get e Sets a sua classe controle seria responsável em comandar as interfaces e criar as entidades , resumindo a sua classe Controle ficará mesmo o algoritmo(regra de negócio) a classe Entidade responsável só p/ armazenar e Classe Interface só comunicação com ator …
Não seise é p/ deskotp ou web o seu sistema …

E aí Rodrigo é Tiago, tudo beleza obrigado aí pela ajuda. Rodrigo são vários diagramas de sequencia, eu me expressei mal, e o meu projeto eu estou usando swing. Tiago eu sei fazer diagramas de sequencia, eu só não estou conseguindo compreender a classe Produto que tem os gets e sets.

Obrigado aí ramilani12 pelas dicas mais eu estou tentando seguir esse meu pradrão mesmo, exemplo uma classe Produto com os gets e sets, uma classe ProdutoBO com ás regras de negocio, uma classe ProdutoDAO com os sqls e uma classe com a interface para o usuário é eu estou usando swing.

   O
 / | \ 
  / \             |-(ProdutoAction)       [ProdutoBO]        <ProdutoDAO> 
   |                  |                     |                 |               
   |-----> inserir(produto)  ---> inserir(produto) ----> inserir(produto)
   |                  |                     |                 |
   |<----------- return produto <----  return produto  <------|                        
   

hehehhee, tosco neh ? rs brincadeira, pra fazer use o jude ou alguma outra ferramenta gráfica pra modelagem uml.

Observe ao fato de que vc está representando operações e fluxos de informações em uma determinada linha de tempo. Ou seja, não tente expressar muita coisa (tudo que acontece), pois seu diagrama fica poluido, e tente ver o que de fato vai ser compreensível para a equipe de desenvolvedores vai entender. Expresse os métodos mais importantes, se houver algum padrão de projeto importante pra ser colocado no diagrama é legal também, só não exagera.

Como falei no outro tópico, isto não é necessário nem recomendável a menos que existam diversas Camadas Físicas. Para outros cenários utilize objetos de negócio normais. Mais detalhes Revista Mundo Java #15.

[quote=rodrigoallemand]

  • BOs e DTOS SEMPRE devem levantar exceções![/quote]

Essa eu não entendi. Como assim?

[quote=pcalcado]

Objetos de negocio e de acesso a dados retornam o produto gerado na sua chamada ou levantam exceções… muitos, no inicio de UML, colocal a verificação de retorno no próprio diagrama. Diagrama de sequencia deve representar um fluxo de sucesso, normalmente. Fluxos alternativos (exceções, validações, erros, etc) devem ser representados em skets separados ou no documento de descrição de caso de uso…

Valeu aí pelas dicas de todo mundo. Eu tentei fazer o digrama de sequencia, mais eu não sei aonde colocar a classe Produto que tem os gets e os sets. Esse exemplo ficou bem básico.


[quote=rodrigoallemand][quote=pcalcado]

Objetos de negocio e de acesso a dados retornam o produto gerado na sua chamada ou levantam exceções… muitos, no inicio de UML, colocal a verificação de retorno no próprio diagrama. Diagrama de sequencia deve representar um fluxo de sucesso, normalmente. Fluxos alternativos (exceções, validações, erros, etc) devem ser representados em skets separados ou no documento de descrição de caso de uso…
[/quote]
é que seu sempre soou como regra e que em alguns casos não tem porque lançar exceções.

Mas em relação a expressar as exceções lançadas no Sequence Diagram, acho que não faz muito sentido, só polui mais, como você falou e concordo devem ficar em documentos separados, caso de uso não sei se é o melhor artefato pra isso, pois ela expressa somente a iteração do sistema com o usuário, um documento de classes detalhado pode ser melhor.

Vamos la. Diagrama de sequência serve para modelar interações entre elementos. Um dos maiores usos é realizar caso de uso. Geralmente modelamos a estrutura estática das Classes (atributos e associações) no diagrama de classes, e depois, encontramos as operações de negócio modelando a interação (diag. de sequência).

Como os gets e sets são ligados à estrutura estática (atributos), não é obrigatório que conste no diagrama de sequência, a não ser que você queira destacar alguma atribuição na interação.

Não costumo deixar o modelo tão dependente da arquitetura. Eu costumo modelar num nível de abstração em concordância com a arquitetura. Arquiteturas fortes permitem um modelo mais abstrato. Dando um exemplo mais claro, modelar um cadastro de cliente seria mais ou menos isso:


E aí galera, brigado aí pela ajuda de vocês. Olha só, eu vou mostra como eu estou fazendo em código esse cadastro de produto, aí depois se der pra vocês me explicar como vai ficar esse diagrama de seqüência eu ficarei muito agradecido. È só lembrando eu estou começando com o java agora.

1º Na classe de interface para o usuário eu tenho esse método:

private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    	try{
    			ProdutoBO pbo = new ProdutoBO();
    			Produto p = new Produto();
    			
                       p.setNome(textNome.getText());
    			p.setDescricao(textDescricao.getText());

    			pbo.cadastrarProduto(p);

    			this.limpaCampos();
    			
    	}catch(ProdutoException e){
    		JOptionPane.showMessageDialog(null,e.getMessage(),
    		"Informação",JOptionPane.ERROR_MESSAGE);
    	}
    	catch(Exception e){
    		JOptionPane.showMessageDialog(null,e.getMessage(),
    		"Informação",JOptionPane.ERROR_MESSAGE);
    	}
    }

2º Na classe ProdutoBO eu tenho o método cadastrarProduto:

public void cadastrarProduto(Produto p) throws ProdutoException,SQLException{
		
		if((p.getNome().length()==0) && (p.getDescricao().length()>0)){
			throw new ProdutoException("Digite o nome do produto");
		}
		
		else if((p.getNome().length()>0) && (p.getDescricao().length()==0)){
			throw new ProdutoException("Digite a descrição do produto");
		}
		
		else if((p.getNome().length()==0) && (p.getDescricao().length()==0)){
			throw new ProdutoException("Digite o nome é a descrição do produto");
		}
		else{
			ProdutoDAO dao = new ProdutoDAO();
			
                          dao.adicionaProduto(p);
		}
		
		
		
	}

3º Na classe ProdutoDAO eu tenho o método adicionaProduto:

public void adicionaProduto(Produto produto)throws SQLException{
			
	
	 		//prepared statement para inserção
		        PreparedStatement stmt = this.connection.prepareStatement("INSERT INTO Produto (nome,descricao) values (?,?)");

 	 		// seta os valores
 	 		stmt.setString(1,produto.getNome());
 	 		stmt.setString(2,produto.getDescricao());
 	 		
 	 		// executa
 	 		stmt.execute();
 	 		
 	 		JOptionPane.showMessageDialog(null,"Dados inseridos com sucesso!\n " +
 	        "O produto foi inserido com o código: " + this.verificarCodigoDoCampo(),
 	    	"Informação",JOptionPane.INFORMATION_MESSAGE);
 	 		
 	 		stmt.close();	
	 				
 	}

Se entendi direito, o ponto que ficou faltando foi “como usar a classe Produto no diagrama”.
Segue o modelo alterado de acordo com isso…


Fala ai galera, sou novo no fórum e no Java. Mas tenho uma dúvida sobre diagramas de sequências. a questão é a seguinte:

Estou desenvolvendo um sistema com a seguinte estrutura:
O sistema tem os Beans as classes com gets e sets;
Tem os interfaces Manager e sua implementação
tem os DAOs que contem as regras de negócio
e tem a Action que é a classe de interação com o usuário;

Todos casos de uso tem esta estrutura. A minha questão é fazer um diagrama de sequencia, como eu faço?

Obrigado Óscar