Difference between revisions of "Introdução à Modelação com UML/Transportadora de animais"

From Wiki**3

< Introdução à Modelação com UML
(Created page with "Este execício saiu no teste de 2012/01/30. == Problema == Considere o seguinte domínio: Uma transportadora tem vários camiões e comboios capazes de transportar vários tip...")
 
Line 4: Line 4:
 
Considere o seguinte domínio:  
 
Considere o seguinte domínio:  
  
Uma transportadora tem vários camiões e comboios capazes de transportar vários tipos de equipamento industrial (inicialmente, tractores, escavadoras e perfuradoras, embora seja de prever que venham a ser considerados outros). Os camiões e comboios têm identificadores únicos e uma dada capacidade de transporte, determinada pelo peso e comprimento máximos que podem transportar. Desta forma, é possível acrescentar uma peça de equipamento a transportar a um dado camião ou comboio se a capacidade de transporte não tiver sido ultrapassada. Dado um meio de transporte, é possível saber a capacidade de transporte ainda disponível.
+
Uma transportadora tem vários camiões e comboios capazes de transportar vários tipos de animais (inicialmente, ovelhas, vacas e cavalos, embora seja de prever que venham a ser considerados outros). Os camiões e comboios têm identificadores únicos e uma dada capacidade de transporte, determinada pelo peso máximo que pode transportar. Desta forma, é possível acrescentar um animal a transportar a um dado camião ou comboio se a capacidade de transporte não tiver sido ultrapassada. Dado um meio de transporte, é possível saber a capacidade de transporte ainda disponível.  
  
Os equipamentos têm um identificador único, registo do peso e capacidade de combustível, e têm o registo de quem é o seu proprietário. Cada tipo de equipamento tem funcionalidades adicionais distintas: os tractores puxam, as escavadoras escavam e as perfuradoras perfuram. Os proprietários são identificados pelo nome. Por vezes, os proprietários transportam lotes de vários equipamentos (i.e., um lote no mesmo meio de transporte). Os lotes têm um identificador único e apresentam as mesmas funcionalidades que os equipamentos individuais.
+
Os animais têm um identificador único, registo do peso, sabem andar e comer, e têm o registo de quem é o seu dono. Cada tipo de animal tem capacidades adicionais distintas: os cavalos sabem correr, as ovelhas pastar e as vacas mugir. Os donos são identificados pelo nome. Por vezes, os donos transportam lotes de animais, todos no mesmo meio de transporte. Os lotes têm um identificador único e apresentam as mesmas capacidades que os animais individuais.  
  
Um comboio é constituído por carruagens e cada carruagem tem uma capacidade máxima de transporte. A capacidade máxima de transporte de um comboio é igual à soma das capacidades das suas carruagens. É possível adicionar carruagens a um comboio. Quando se adiciona uma dada carga a transportar a um comboio, o comboio utiliza a primeira carruagem com capacidade disponível para transportar essa carga.
+
Um comboio é constituído por carruagens e cada carruagem tem uma capacidade máxima de transporte. A capacidade máxima de transporte de um comboio é igual à soma das capacidades das suas carruagens. É possível adicionar carruagens a um comboio. Quando se adiciona uma dada carga a transportar a um comboio, o comboio utiliza a primeira carruagem com capacidade disponível para transportar essa carga.  
  
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.
+
Considere que os comboios podem transportar qualquer tipo de animal. No entanto, e por enquanto, os camiões apenas podem transportar vacas ou cavalos, podendo no futuro aceitar novos tipos de animais. Apresente uma solução que garanta a flexibilidade sem impacto no código existente.  
  
 
== Solução ==
 
== Solução ==
Line 16: Line 16:
 
Esboço do diagrama de classes para o problema apresentado.  
 
Esboço do diagrama de classes para o problema apresentado.  
  
[[Image:PO-20130204t1-class.png|PO-20130204t1-class.png|850px]]  
+
[[Image:PO-20130204t1-class.png|PO-20120130-class.png|850px]]  
 +
 
 +
== Implementação ==
  
 
[[category:Ensino]]
 
[[category:Ensino]]
 
[[category:PO]]
 
[[category:PO]]
 
[[category:UML]]
 
[[category:UML]]

Revision as of 11:53, 18 November 2013

Este execício saiu no teste de 2012/01/30.

Problema

Considere o seguinte domínio:

Uma transportadora tem vários camiões e comboios capazes de transportar vários tipos de animais (inicialmente, ovelhas, vacas e cavalos, embora seja de prever que venham a ser considerados outros). Os camiões e comboios têm identificadores únicos e uma dada capacidade de transporte, determinada pelo peso máximo que pode transportar. Desta forma, é possível acrescentar um animal a transportar a um dado camião ou comboio se a capacidade de transporte não tiver sido ultrapassada. Dado um meio de transporte, é possível saber a capacidade de transporte ainda disponível.

Os animais têm um identificador único, registo do peso, sabem andar e comer, e têm o registo de quem é o seu dono. Cada tipo de animal tem capacidades adicionais distintas: os cavalos sabem correr, as ovelhas pastar e as vacas mugir. Os donos são identificados pelo nome. Por vezes, os donos transportam lotes de animais, todos no mesmo meio de transporte. Os lotes têm um identificador único e apresentam as mesmas capacidades que os animais individuais.

Um comboio é constituído por carruagens e cada carruagem tem uma capacidade máxima de transporte. A capacidade máxima de transporte de um comboio é igual à soma das capacidades das suas carruagens. É possível adicionar carruagens a um comboio. Quando se adiciona uma dada carga a transportar a um comboio, o comboio utiliza a primeira carruagem com capacidade disponível para transportar essa carga.

Considere que os comboios podem transportar qualquer tipo de animal. No entanto, e por enquanto, os camiões apenas podem transportar vacas ou cavalos, podendo no futuro aceitar novos tipos de animais. Apresente uma solução que garanta a flexibilidade sem impacto no código existente.

Solução

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

PO-20120130-class.png

Implementação