exemploUMLI EncomendaDePlacas
exemploUMLI EncomendaDePlacas
exemploUMLI EncomendaDePlacas
Exemplo I -
Encomenda de
Placas
João Confecciona placas por encomenda. Como o volume dos pedidos tem
aumentado, ele pediu ao seu filho que fizesse uma pequena aplicação que
controle:
Quando ele recebeu uma encomenda, João anota num caderninho o nome do
cliente e seu telefone.
João deseja que o sistema controle os pedidos, calcule o preço final das peças
e o prazo de entrega. Para cada encomenda cadastrada, deve ser emitido
um recibo em duas vias (cliente e empresa), contendo todos os dados da
encomenda e do pagamento.
Fluxo Alternativo
- Valores Inexistentes no cadastro
Se não existir valor cadastrado para “ valor fixo do material” e/ou “ valor fixo da letra”, o
sistema apresenta os campos em branco.
- Valores Inconsistentes
Não pode ser cadastrado valor negativo para “ valor fixo do material” e “ valor fixo da letra”.
Fluxo Alternativo
- Cliente não cadastrado
Se for um novo cliente, o usuário seleciona a opção de “cadastrar novo cliente”. [Include Manter Cliente].
- Valor do sinal insuficiente
O sistema não deve aceitar um valor de sinal inferior a 50% do valor de venda da peça. No caso do sinal ser inferior, o sistema deve exibir uma
mensagem de erro, incluindo na mensagem o valor mínimo permitido.
Diagrama de Casos de Uso - Encomenda de Placas
Documento de Especifica ção – Caso de uso Calcular preço de venda da Encomenda
Calcular preço de venda da Encomenda
Descrição: Responsável por calcular o preço de venda de uma placa, baseado nas informa ções
recebidas para o cálculo.
Ator: Funcionário
P ré-condi ção
Receber as seguintes informa ções: altura da placa, largura da placa, frase para impressão.
Fluxo de Eventos
Fluxo Principal
1. O sistema busca os valores cadastrados para “ valor fixo do material” e “ valor fixo da letra”.
2. O sistema calcula o preço de venda da encomenda, considerando as seguintes fórmulas:
a. Área= “ altura da placa” x “ largura da placa”
b. Custo do material = área x “ valor fixo do material”
c. Número de letras = quantidade de letras da “ frase para impressão”
d. Custo do desenho = n úmero de letras x “ valor fixo da letra”
e. Valor da placa = custo do material + custo do desenho
3. O sistema retorna o “ valor da placa”
Fluxo Alternativo
- Valores nulos
Se qualquer um dos valores de pré-condi ção estiver nulo, o sistema não efetuará o cálculo. Será
exibida uma mensagem de erro e o valor de retorno será zero.
- Valores fixos inexistentes
Se não houver valor v álido para “ valor fixo do material” e/ou para “ valor fixo da letra”, o sistema
deve exibir uma mensagem de erro, informando que faltam dados de referência para cálculo da
encomenda.
Ator: Funcionário
Fluxo de Eventos
Fluxo Principal
1. O usuário informa o número da encomenda.
2. O sistema busca a encomenda e exibe:
a. O nome do cliente
b. O telefone
c. A data da encomenda
d. A data da entrega
e. O valor do pedido
f. O valor do sinal
g. O status atual da encomenda
3. O usuário modifica o status da encomenda para um dos seguintes valores: “pronto”, “cancelado” ou “fechado”.
4. O usuário confirma a alteração do status.
5. O sistema atualiza o cadastro com o novo status.
Fluxo Alternativo
- Encomenda Inexistente
Se o número da encomenda não existir, exibir ao usuário uma mensagem de erro, e abrir uma lista de encomendas
com status diferente de “fechado” e “cancelado” para sele ção.
- Alteração não permitida
Não é possível alterar o status de encomendas que estejam com o status “cancelado” ou “fechado”.
- Validação do Status
O status = “aberto” só pode ser alterado para “pronto” ou “cancelado”.
O status = “pronto” só pode ser alterado para “cancelado” ou “fechado”.
import java.util.Enumeration ;
public class Cliente {
import java.util.Date;
private int codigo;
private String nome ; public class Encomenda {
private String telefone ; private int numero;
private Encomenda[] encomenda; private float alturaPlaca;
} private float larguraPlaca;
private String frase;
private Enumeration corFrase ;
Arquivo: Cliente.java
private Enumeration corLetra ;
private Date dataEncomenda;
private Date dataEntrega;
private float valor;
private float valorSinal;
private Enumeration status;
private float valorFixo = 147.30;
private float valorFixoLetra = 0.32;
private Cliente cliente;
}
Arquivo: Encomenda.java
Referência:
Melo, A. C. Exercitando modelagem em UML, Ed. Brasport, Rio de Janeiro, 2006.