Anda di halaman 1dari 4

Segundo trabalho de POO

Data de Entrega: 19 de Dezembro de 2011


Objectivos: Usar streams associados a ficheiros de texto e o mecanismo de tratamento de excepes. Completar e desenvolver aplicaes simples usando o paradigma da Programao Orientada por Objectos. Compreender e utilizar as estruturas de dados dinmicas disponibilizadas pela framework de coleces Java. NOTA: Apresente os programas de teste que lhe permitiram testar a correco dos mtodos e classes realizadas.

Grupo 1
1. Elabore um programa que escreva no console output o ndice (1, 2, 3, ) do primeiro pargrafo com maior nmero de caracteres, existente num ficheiro de texto. Considere pargrafo uma sequncia de linhas com pelo menos um carcter diferente de espao em branco. a. Altere o programa anterior para que tambm escreva o pargrafo noutro ficheiro de texto. 2. Elabore o mtodo: public static void formatText( String pathnameInput, String pathnameOutput, int maxCharsPerLine). Este mtodo deve produzir um ficheiro de texto no qual todos os pargrafos tenham no mximo maxCharsPerLine caracteres por linha sem hifenizao (diviso em slabas) das palavras. No ficheiro de entrada, os pargrafos esto separados por uma linha em branco e as palavras so separadas por um espao. Ficheiro de entrada Ficheiro produzido com 25 caracteres por linha no mximo
Era uma vez uma menina to bonita como no havia outra; a me gostava muito dela, e a av mais ainda. Tinham-lhe mandado fazer uma capinha vermelha com um capuchinho, que lhe ficava to bem que toda a gente lhe chamava Capuchinho Vermelho

Era uma vez uma menina to bonita como no havia outra; a me gostava muito dela, e a av mais ainda. Tinham-lhe mandado fazer uma capinha vermelha com um capuchinho, que lhe ficava to bem que toda a gente lhe chamava Capuchinho Vermelho

Grupo 2
1. Elabore um mtodo que produza e devolva uma coleco com os valores inteiros presentes num stream de texto que sejam superiores mdia de todos os valores inteiros do stream. Assuma que o stream s contm valores inteiros. Recebe por parmetro um objecto do tipo Reader. 2. Elabore uma aplicao para produzir um ficheiro de texto com a tabela classificativa das equipas a partir da informao dos jogos do campeonato. A informao dos jogos do campeonato tambm est contida num ficheiro de texto. A primeira linha do ficheiro de jogos contm a lista de nomes das equipas, separados pelo carcter virgula; cada uma das outras linhas contm o resultado de um jogo. Na tabela classificativa deve constar a posio, o nome da equipa, o nmero de jogos, o nmero de vitrias, o nmero de empates, o nmero de derrotas, os golos marcados, os golos sofridos, a diferena entre golos marcados e sofridos e o nmero de pontos de cada equipa, por esta ordem. O nmero de pontos obtido sabendo que a vitria num jogo vale 3 pontos e o empate 1. As equipas so ordenadas de acordo com as seguintes regras: a. Maior nmero de pontos b. Menor nmero de jogos c. Maior diferena entre golos marcados e sofridos d. Maior nmero de golos marcados e. Ordem alfabtica do nome das equipas Utilize o mtodo esttico sort(List<T> list, Comparator<T> c) da classe java.util.Collections para o processo de ordenao. Nota: Se alguma das equipas do resultado de um jogo no constar na lista de equipas da primeira linha, dever ser lanada uma excepo, do tipo EquipaInvalidaException, com a indicao do nome da equipa e da linha onde est a descrio do jogo em causa. Ficheiro de jogos Porto, Benfica, Sporting, Braga, V. Guimaraes Porto 2 | 2 Benfica V. Guimaraes 0 | 1 Sporting Braga 1 | 1 V. Guimaraes Benfica 2 | 1 V. Guimaraes

Ficheiro da tabela classificativa Pos Equipa J V E 1 Benfica 2 1 1 2 Sporting 1 1 0 3 Porto 1 0 1 4 Braga 1 0 1 5 V.Guimaraes 3 0 1

D 0 0 0 0 2

GM 4 1 2 1 2

GS 3 0 2 1 4

DG 1 1 0 0 -2

Pts 4 3 1 1 1

Grupo 3
Considere a modificao operada na hierarquia de classes do grupo 2 do 1 trabalho e a implementao parcial que consta em anexo. Nota: foi adicionado o mtodo String getName() classe Item.
1 - itemBase *

Item

- items

Promotion

Product

AbstractGroup
# totalPrice: int # AbstractGroup(n: String) + getPrice() : int

Pack

+ addItem(i: Item) : boolean + putPromo(n: String, p: int) + createPacks(p: Product, unit: int)

Group

GroupCollection

+ GroupCollection(n: String) + addItem(i: Item) : boolean + putPromo(n: String, p: int) + createPacks(p: Product, unit: int) + print(prefix: String)

1. Implemente a classe GroupCollection, onde os zero ou mais itens so suportados por uma Collection<Item>. O mtodo addItem lana a excepo LockedException caso o grupo esteja no estado locked. O mtodo createPacks substitui repeties de unit unidades de produtos p por objectos do tipo Pack correspondentes. Este mtodo no tem de manter a ordem original pela qual os itens foram introduzidos no grupo. 2. Torne a hierarquia de Item itervel (implements Iterable<Item>) tendo em ateno que: Com o iterador da classe Product apenas se acede ao prprio Product. Com o iterador da classe Pack acede-se a unit instncias do correspondente Product. Com o iterador da classe Promotion acede-se aos mesmos itens que se acede com o iterador do itemBase. O iterador de uma classe derivada de AbstractGroup itera sobre todos os itens do grupo, incluindo os que esto dentro de pacotes ou outros grupos. O mtodo remove de todas as implementaes lana a excepo UnsupportedOperationException.

3. Descreva uma soluo que permita seleccionar itens de uma coleco que satisfaam uma dada propriedade ou conjunto de propriedades, por exemplo: ser uma promoo, ter o nome x, ser um pacote e custar menos de y. Implemente a sua soluo, na forma de um mtodo esttico que dada a coleco de itens e as propriedades mova para uma nova coleco (retire de uma e adicione outra) os produtos que satisfazem as propriedades. Teste o mtodo para os exemplos sugeridos.

Grupo 4
Implemente a classe GroupLinkedList, onde os zero ou mais itens so suportados numa lista simplesmente ligada com sentinela em anel em que o mtodo de adio adiciona no fim.
interface

Iterable<Item>

Item

0..1 item

AbstractGroup

next 1 1

GroupList

- tail

ItemNode

Bom Trabalho

Anda mungkin juga menyukai