Professional Documents
Culture Documents
public Pedido () {
this.produtos = new LinkedList<Produto>();
this.estadoAtual = this.orcamento;
}
public void addProduto(Produto produto) {
if (this.estadoAtual.equals(orcamento)) {
this.produtos.add(produto);
}
}
public void remodeProduto(Produto produto) {
if (this.estadoAtual.equals(orcamento)) {
this.produtos.remove(produto);
}
}
public void fatura () {
if (this.estadoAtual.equals(orcamento)) {
this.estadoAtual = this.faturado;
System.out.println("Imprime total e nota fiscal");
}
}
}
Implementao 2
public class Pedido {
private String orcamento = "orcamento";
private String reserva= "reserva";
private String faturado = "faturado";
private String estadoAtual;
private int pedidoStatus;
private List<Produto> produtos;
public Pedido () {
this.produtos = new LinkedList<Produto>();
this.estadoAtual = this.orcamento;
}
public void setReservado() {
this.estadoAtual = this.reservado;
for(Produto produto : produtos ) {
produto.isReservado(true);
}
}
public void addProduto(Produto produto) {
if (this.estadoAtual.equals(orcamento)) {
this.produtos.add(produto);
}
if (this.estadoAtual.equals(reserva)) {
produto.isReservado(true);
this.produtos.add(produto);
}
}
public void remodeProduto(Produto produto) {
if (this.estadoAtual.equals(orcamento)) {
this.produtos.remove(produto);
}
if (this.estadoAtual.equals(reserva)) {
produto.isReservado(false);
this.produtos.remove(produto);
}
}
public void fatura () {
if (this.estadoAtual.equals(orcamento) | | this.estadoAtual.equals(reserva)) {
this.estadoAtual = this.faturado;
System.out.println("Imprime total e nota fiscal");
}
}
}
Implementao 3
public interface PedidoComportamento {
public void addProduto(Produto produto);
public void removeProduto(Produto produto);
public void fatura();
}
public abstract class PedidoEstado implements PedidoComportamento {
private Pedido pedido;
public PedidoEstado(Pedido pedido) {
this.pedido = pedido;
}
public Pedido getPedido() {
return this.pedido;
}
@Override
public abstract void addProduto(Produto produto);
@Override
public abstract void removeProduto(Produto produto);
@Override
public abstract void fatura();
}
public Pedido () {
this.produtos = new LinkedList<Produto>();
this.estadoAtual = new Orcamento(this);
}
public List <Produto> getProdutos() {
return this.produtos;
}