18.01.2014 Views

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)

SHOW MORE
SHOW LESS

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>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!