Atividade de Laboratório no. 3 (entrega 24/03/12)
Atividade de Laboratório no. 3 (entrega 24/03/12)
Atividade de Laboratório no. 3 (entrega 24/03/12)
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
MC 302EF - <strong>Ativida<strong>de</strong></strong> <strong>de</strong> Laboratório <strong>no</strong>. 3<br />
Objetivos<br />
<br />
Uso <strong>de</strong> coleções, interfaces e exceções em Java<br />
Descrição do Problema [criado em 16/<strong>03</strong>/<strong>12</strong>]<br />
Em continuação ao trabalho da ativida<strong>de</strong> <strong>no</strong>2, esta ativida<strong>de</strong> consiste em implementar as classes<br />
para <strong>de</strong>screver ‘partes compostas’ e ‘partes específicas’. Essas classes farão uso das coleções<br />
disponíveis nas bibliotecas <strong>de</strong> apoio à linguagem Java.<br />
As classes<br />
A figura abaixo ilustra as classes que serão usadas nesta ativida<strong>de</strong>. As classes Item, Parte,<br />
Motor e Parafuso foram criadas na ativida<strong>de</strong> anterior. Nesta ativida<strong>de</strong> serão criadas as classes<br />
ParteComposta, ParteEspecifica e Caracteristica, <strong>de</strong>scritas a seguir.<br />
ParteComposta<br />
Esta classe <strong>de</strong>rivada <strong>de</strong> Parte representa uma parte formada por outras partes (simples ou<br />
compostas). Além dos atributos herdados <strong>de</strong> Parte, os objetos <strong>de</strong>sta classe tem o seguinte<br />
atributo:<br />
Conjunto <strong>de</strong> objetos Item que compõem este objeto ParteComposta.<br />
Esta classe <strong>de</strong>ve também implementar os seguinte métodos públicos:<br />
public void agregaItem(Parte parte, int quantida<strong>de</strong>) throws Exception<br />
<br />
este método <strong>de</strong>ve agregar um item ao objeto ParteComposta e tem como parâmetros a<br />
referência a um objeto Parte e a quantida<strong>de</strong> que essa parte será usada na ParteComposta.<br />
Este método <strong>de</strong>ve gerar uma exceção se o objeto Parte referenciado pelo objeto Item já<br />
estiver presente ou for nula e também <strong>no</strong> caso <strong>de</strong> a quantida<strong>de</strong> ser nula.<br />
List listaDeItens()
este método <strong>de</strong>ve retornar uma lista contendo os objetos Item que constituem a<br />
ParteComposta.<br />
Sobre os <strong>de</strong>mais métodos:<br />
public float calculaValor()<br />
<br />
O valor retornado pelo método, herdado <strong>de</strong> Parte, <strong>de</strong>verá correspon<strong>de</strong>r ao atributo ‘valor’ da<br />
parte composta somado aos valores <strong>de</strong> cada uma das Partes que constituem a<br />
ParteComposta. O atributo ‘valor’ da parte composta po<strong>de</strong> ser entendido como o valor<br />
agregado em consequência da montagem da mesma.<br />
public String toString()<br />
<br />
este método <strong>de</strong>ve retornar a representação do objeto ParteComposta como um string.<br />
O construtor <strong>de</strong>sta classe tem a mesma assinatura que o construtor <strong>de</strong> Parte.<br />
ParteEspecifica<br />
Classe concreta <strong>de</strong>rivada <strong>de</strong> Parte, usada para representar outras partes da gama <strong>de</strong> produtos da<br />
empresa. Os objetos <strong>de</strong>sta classe, além dos atributos herdados <strong>de</strong> Parte, mantém um conjunto <strong>de</strong><br />
‘características específicas’ na forma <strong>de</strong> pares (<strong>no</strong>me,conteúdo).<br />
Além dos métodos previstos ou herdados <strong>de</strong> Parte, esta classe <strong>de</strong>ve oferecer os seguinte<br />
métodos:<br />
public void agregaCaracteristica(String <strong>no</strong>me, String conteudo) throws Exception<br />
<br />
este método associa uma ‘caracteristica específica’ ao objeto ParteEspecífica, na forma<br />
(valor,conteúdo). Caso um dos parâmetros seja igual a null ou caso o objeto já tenha uma<br />
característica do mesmo <strong>no</strong>me, este método <strong>de</strong>ve gerar uma exceção.<br />
public String caracteristica(String <strong>no</strong>me)<br />
<br />
este método retorna o ‘conteúdo’ associado a uma característica, <strong>de</strong>finida pelo seu <strong>no</strong>me.<br />
Caso o objeto não tenha a característica <strong>de</strong>sejada, o método <strong>de</strong>ve retornar null.<br />
O construtor <strong>de</strong>sta classe tem a mesma assinatura que o construtor <strong>de</strong> Parte.<br />
Parafuso<br />
Classe <strong>de</strong>rivada <strong>de</strong> Parte, que acrescenta os seguintes atributos:<br />
comprimento como float<br />
diâmetro como float<br />
O método toString() para a classe Parafuso <strong>de</strong>ve seguir o padrão mostrado <strong>no</strong> exemplo <strong>de</strong> uso<br />
abaixo. A lista <strong>de</strong> parâmetros do construtor <strong>de</strong>ve ser a mesma prevista para Parte, seguida dos<br />
valores para os atributos acima, nessa or<strong>de</strong>m.<br />
Exemplo <strong>de</strong> uso<br />
O arquivo ‘TesteLab3_1.java’, disponibilizado junto com este enunciado contém uma classe <strong>de</strong><br />
testes para as classes criadas na ativida<strong>de</strong>.
Saída esperada<br />
O arquivo ‘SaidaLab3_1.txt’, disponibilizado junto com este enunciado mostra a saída esperada ao<br />
se executar a classe <strong>de</strong> testes disponibilizada como exemplo <strong>de</strong> uso.<br />
Data <strong>de</strong> <strong>entrega</strong>: <strong>24</strong>/<strong>03</strong>/20<strong>12</strong>