Nesta aula vimos a aplicação prática do padrão especialista, a implementação
Partiremos do princípio de todo esquema para uma venda, saber o total dela, portanto, qual a classe responsável por conhecer o total de uma venda? A classe responsável terá que conhecer todas as instâncias ItemVenda da Venda e o subtotal de cada uma delas, portanto a classe Venda é uma forte candidata pois uma Venda contém ItemVenda. Definida a classe que calcula o total de uma venda, vamos definir a classe responsável por conhecer o subtotal de uma venda, para isso é necessário saber a quantidade de cada produto, quem detém estas informações é a classe ItemVenda, portanto esta é a classe responsável por implementar o método de calcular subtotal. Mas para implementar este método a classe ItemVenda precisa conhecer o preço unitário de cada produto, e é aí que entra a responsabilidade da classe produto, que é obter especificação do produto para mandar como resposta para a classe ItemVenda quando esta enviar uma mensagem para obter o preço de cada produto.
No final, com todos os métodos em suas respectivas classes, o diagrama ficou assim:
Implementando em código:
public class Produto
{
private integer idProduto;
private string descricao;
private double valorUnitário;
public string getdescricao(){
return descricao;
}
public void setDescricao(string valor){
valor=descricao;
}
}
public class ItemVenda{
private double qtde;
private Produto p;
public void setP (Produto p) {
this.p = p;
}
public class
private Set
private Date dataVenda;
private integer idvenda;
public criarItemvenda (Produto P, double qtde)
{
Itemvenda i =new ItemVenda();
i .setP(p);
i.setQtde(qtde);
itemVendaList.add(i);
}
observação: nos diagramas as classes "LinhaDeVenda" e "EspecificaçãoProduto" são as mesmas classes "ItemVenda" e "Produto" do trecho de código
Nenhum comentário:
Postar um comentário