Introdução à Modelação com UML/Empresa de Mobiliário

From Wiki**3

< Introdução à Modelação com UML

Este exercício apareceu no teste de 2013/11/15.

Problema

Considere o seguinte domínio:

Uma empresa de mobiliário produz vários tipos de móvel: peças individuais, tais como mesas, cadeiras, etc.; e conjuntos de peças relacionadas, tais como as que fazem parte da mobília de uma sala de jantar. Cada conjunto pode ser composto por peças individuais e/ou por subconjuntos (e.g., um conjunto de sofás pode fazer parte do mobiliário de uma sala de estar, juntamente com uma mesa). Todos os tipos de peça têm uma referência única no catálogo da empresa (cadeia de caracteres). Uma vez que a empresa é multinacional, existe ainda um código numérico correspondente ao país de origem de cada peça, assim como um nome comercial, para efeitos de publicidade.

Para cada peça, a empresa mantém o número de existências em stock, assim como o preço de catálogo. As peças podem ainda ter um desconto associado. Estes factores condicionam, juntamente com o tipo de cliente, o preço final da peça.

Os clientes da empresa são identificados pelo nome (cadeia de caracteres) e possuem ainda um endereço de correio electrónico e um número de telefone. Para cada cliente, a empresa mantém um registo das vendas realizadas e o desconto a aplicar nas vendas a esse cliente. Os clientes inicialmente não usufruem de descontos, mas à medida que vão fazendo compras, o processo de fidelização vai introduzindo benefícios para clientes frequentes ou que gastem quantias significativas. Assim, para clientes que façam pelo menos cinco compras (independentemente do valor gasto), o desconto passa para 30%; para clientes que gastem pelo menos 10000 unidades monetárias (independentemente do número de compras), o desconto passa para 50%; se o cliente gastar mais de 100000 (independentemente de outros factores), o desconto passa para 70%. A empresa permite aos seus clientes fazer devoluções com restituição parcial do valor gasto: assim, para clientes que tenham desconto 0%, a devolução é de 10%; se o cliente tiver 30% ou 50% de desconto, o valor devolvido é de 20%; para clientes que tenham 70% de desconto, o valor devolvido é de 50%, mas essa parcela é abatida ao valor vendido que, se descer abaixo de 100000, faz com que o cliente passe a usufruir apenas de 50% de desconto.

A empresa permite obter a lista de vendas, a lista de clientes, a lista de 10 melhores clientes, e o total de vendas. É possível saber quantas unidades foram vendidas de cada peça, assim como o valor facturado. Para cada cliente, é possível saber o valor pago e as peças que comprou e que devolveu, assim como o nível de desconto a que tem direito.

Desenhe o diagrama de classes UML correspondente ao domínio apresentado. Represente as classes (seus nomes, métodos e atributos). Indique também as relações de herança, associação e agregação.

Solução

Esboço do diagrama de classes para o problema apresentado.

PO-20121119-class.png

Implementação

Além da definição das classes de base do domínio, a ideia, tal como expressa no diagrama UML, é utilizar os padrões Composite (para representar as peças) e State (para os descontos dos clientes).