mac 5715 - designfest 2003 the vending machine adão m. alexandre vidal carlos alexandre gustavo...

Post on 07-Apr-2016

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MAC 5715 - DesignFest 2003The Vending Machine

Adão M.Alexandre VidalCarlos AlexandreGustavo Maia

José Ribamar BragaRaphael CamargoRenato S.

Resumo

Descrição do Problema Descrição dos Módulos do Sistema Diagramas de Seqüência Conclusões

Problema: The Vending Machine Objetivo: Criar o software para uma máquina de

venda de café. A parte mecânica será tratado por um grupo de projetistas mecânicos.

Será vendido café com ou sem creme e açúcar. Haverá um botão para cada uma das opções, além de um botão de troco.

O pagamento será feito em moedas e a máquina retornará troco.

Solução: Módulos do Sistema

O sistema está dividido em seis módulos: Dispositivos Financeiro Interface com Usuário Produto Transação de Compra Exceções

Módulo Dispositivos É composto por quatro classes principais:

Misturador: Interface para o sistema que compõe e entrega os produtos

Coletor de Pagamento: Controla o crédito que foi inserido na máquina. Na parte 1, ela é instanciada por uma classe que controla a quantidade e tipo de moedas inseridas na máquina

Cofre: É onde o dinheiro é armazenado. Na parte 1 é instanciado como um cofre de dinheiro.

As instâncias destas e outras classes do sistema são criadas utilizando uma fábrica (padrão factory)

Módulo: Dispositivos

Módulo: Financeiro

Caixa: É responsável por controlar a parte financeira, como o crédito e a quantidade de troco disponível. Interage com classes do módulo

dispositivos, como cofre e coletor de pagamento.

Para garantir que sempre existe apenas uma instância de caixa no sistema, é utilizado o padrão Singleton.

Módulo: Interface com Usuário É composto por duas classes principais:

Botão: Interface que pode ser instanciada como botões de seleção de produto e de troco.

Painel: Controla os botões para seleção dos produtos e de troco. Na parte 1 ela é instanciada como uma painel padrão.

Módulo: Produto Possui uma classe Produto que é composta por uma

ou mais instâncias de Item.

Módulo: Transação de Compra Para cada transação realizada é instanciado um novo

objeto do tipo Compra. Ele recebe informações provindas do painel, caixa e produto, e solicita a preparação do produto solicitado e o débito de seu valor.

Módulo: Exceções

As exceções são derivadas de uma superclasse Excecoes e correspondem aos diferentes tipos de erros que podem ocorrer no sistema. Em Java, a classe Excecoes corresponderia à classe Exception.

Diagrama de Sequência:Compra bem Sucedida

Produto Inexistente

Saldo Insuficiente

Falha no Dispositivo

Troco Indisponível

Extensões: Partes II e III

Parte II: Adicionar sopa a $0.25 como sendo mais uma opção de produto. Solução: Basta criar um novo tipo de produto de tipo sopa

e um item póSopa. Como o preço fica dentro da classe sopa o novo preço não causa dificuldades.

Parte III: Adicionar um leitor de cartão que cobra o valor do produto diretamente da conta do cliente. Solução: Criar um novo tipo de subclasse para

ColetorPagamento que lê o código do cartão e se comunica com um módulo de rede para obter crédito e subtrair os valores da conta do usuário.

Extensões: Parte IV

Parte IV: Adicionar pó de café expresso e milk steamer. Também estará disponível um produto da semana, como café expresso por $0.75. O painel será substituído por um display LCD.

Solução: A adição de novos produtos e itens é similar à parte II. Para substituir o painel tradicional pelo LCD, basta criar uma nova subclasse de painel denominada painelLCD com a funcionalidade deste painel.

Conclusões

Foram utilizados dois padrões de projeto, o Singleton e Factory.

A adição de novos tipos de produtos e outras formas de pagamento foi bastante simples em nosso sistema em função do design OO flexível.

top related