Professional Documents
Culture Documents
a Objeto
Lista de Exerccios
Lugares onde tem exerccios interessantes
http://gee.cs.oswego.edu/dl/oosdw3/index.html
http://www.eli.sdsu.edu/courses/spring99/cs535/assignments/index.html
http://www.eli.sdsu.edu/courses/fall97/cs535/assignments/index.html
http://www.eli.sdsu.edu/courses/fall97/cs535/pastExams.html
http://www.eli.sdsu.edu/courses/fall96/cs535/assignments/index.html
9. O que deve fazer parte dos requisitos alm dos requisitos funcionais?
10. Escreva um pargrafo tpico que poderia fazer parte de um documento de
requisitos com respeito a cada um dos itens seguintes:
Qualidade
Desempenho
Segurana
Suporte
Preo da soluo
Documentao
Uso de padres
Aspectos legais
Packaging
11. Suponha que b tenha valor 5 e c tenha valor 8. Qual o valor de a, b e c aps
cada linha no seguinte fragmento de programa:
a
a
a
a
=
=
=
=
b++
b++
++b
++b
+
+
+
+
c++;
++c;
c++;
++c;
init;
while( test ) {
statements
update;
}
14. Quais so as possveis sadas do seguinte programa?
public class WhatIsX {
public static void f( int x ) { /* body unknown */
public static void main( String [] args ) {
int x = 0;
f( x );
System.out.println( x );
}
}
15. Escreva um comando while que seja equivalente ao seguinte fragmento for.
Por que isso seria til?
for( ; ; )
statement
16. Escreva um programa para gerar as tabuadas de adio e multiplicao para
nmeros de um nico dgito (as tabuadas que alunos do primeiro grau esto
acostumados a ver).
17. Escreva dois mtodos estticos. O prmeiro deve retornar o mximo entre trs
inteiros e o segundo deve retornar o mximo entre quatro inteiros.
18. Escreva um mtodo esttico que receba um ano como parmetro e retorne true
se o ano for bissexto e false caso contrrio.
19. Escreva um programa para determinar todos os pares de inteiros positivos, (a,
b), tais que a < b < 100 e (a^2 + b^2 + 1)/(ab) seja inteiro.
20. Escreva um mtodo que imprima a representao do seu parmetro inteiro como
nmero Romano. Assim, se o parmetro for 1998, a sada MCMLXLVIII.
21. Suponha que voc queira imprimir nmeros entre colchetes formatados como
segue: [1][2][3], e assim por diante. Escreva um mtodo que receba dois
marmetros: howMany e lineLength. O mtodo deve imprimir nmeros de
1 at howMany no formato j mencionado, mas no deve imprimir mais do que
lineLength caracteres numa mesma linha. Ele no deveria iniciar um [ se o
] correspondente no couber na linha.
22. No problema seguinte usando aritmtica decimal, cada uma das dez letras
diferentes recebe o valor de um dgito. Escreva um programa que descubra todas
as possveis solues (uma daas quais est mostrada).
MARK
9147
+ALLEN
+16653
-----
-----
WEISS
25800
Captulo 2: References
23 Liste as diferenas principais entre tipos de referncia e tipos primitivos.
24 Liste cinco operaes que podem ser aplicadas a um tipo de referncia.
25 Descreva como excees funcionam em Java.
faz sentido). Adicione mtodo de acesso para extrair a parte real e a parte
imaginria.
13. Implemente uma classe completa IntType que tenha um conjunto
razoavelmente completo de construtores, add, subtract, multiply,
divide, equals, compareTo e toString. Implemente IntType usando
um array suficientemente grande. Para esta classe, a operao difcil a diviso
seguida de perto da multiplicao.
Captulo 4: Inheritance
1. Quais membros de uma classe herdada podem ser usados na classe derivada?
Quais membros se tornam pblicos para os usurios da classe derivada?
2. O que composio?
3. Explique polimorfismo.
4. Explique binding (amarrao) dinmico.
5. O que um mtodo final?
6. Considere o programa abaixo para testar a visibilidade:
public class Base {
public int bPublic;
protected int bProtect;
private int bPrivate;
// Public methods omitted
}
public class Derived extends Base {
public int dPublic;
private int dPrivate;
// Public methods omitted
}
public class Tester {
public static void main( String [] args ) {
15. Modifique a classe Shape (do livro) para que passe a usar um algoritmo de
ordenao genrico.
16. Um SingleBuffer tem os mtodos get e put: o SingleBuffer
armazena um item nico e um membro de dados que indica se o
SingleBuffer est logicamente vazio. Um put pode ser aplicado apenas a
um buffer vazio, e ele insere um item no buffer. Um get pode ser aplicado
somente num buffer no vazio, e ele remove e retorna o contedo do buffer.
Escreva uma classe genrica para implementar SingleBuffer. Defina uma
exceo para sinalizar erros.
17. Reescreva a hierarquia Shape (do livro) de forma a armazenar a rea como
membro de dados e faa com que seja calculado pelo construtor de Shape. Os
construtores das classes derivadas devem calcular uma rea e passar o resultado
para o mtodo super. Faa com que area seja um mtodo final que apenas
retorne o valor deste membro de dados.
18. Adicione o conceito de uma posio hierarquia Shape (do livro) pela incluso
de coordenadas como membors de dados. Ento acrescente um mtodo
distance.
19. Escreva uma classe abstrata para Date e sua classe derivada
GregorianDate.
20. Implemente uma hierarquia de pagadores de impostos que consista de uma
interface TaxPayer e das classes SinglePayer e MarriedPayer que
implementem a interface.
Exerccios de Anlise
1. Introduza funcionalidade para informar um usurio com uma reserva pendente
quando um item do ttulo reservado retorna biblioteca. O usurio com a reserva
mais antiga deve ser avisado primeiro.
2. Introduza funcionalidade para informar uma pessoa sobre o vencimento de um
emprstimo.
3. Estenda o sistema de forma a remover reservas depois de um dado tempo.
4. Estenda o tratamento de ttulos para que eles possam ser colocados em diferentes
categorias e para adicionar a cada ttulo informao definida pelo usurio (ex.
um resenha sobre um livro).
5. Estenda o sistema para gerenciar a aquisio de novos itens.
6. Introduza regras no sistema de biblioteca para limitar emprstimos. Por
exemplo, permita apenas cinco reservas por pessoa ou dez emprstimos por
pessoa. Faa com que a definio das regras seja simples.
7. Insira uma classe genrica para imprimir listas e cartas; por exemplo, listas de
ttulos e itens para fins de inventrio e cartas para usurios sobre reservas e
emprstimos.
8. Estenda o modelo com uma conexo Internet de forma que usurios possam
pesquisar ttulos e itens num site da World Wide Web.
9. No modelo atual, a administrao de servios feita usando objetos da interface
do usurio que fazem aes nos objetos do domnio (business objects). Mude a
arquitetura para que classes de objetos de controle (classes que tratam um
servio especfico do incio at o fim) sejam usadas. Um exemplo de uma classe
de objeto de controle coletaria estatsticas sobre a situao atual da biblioteca - o
nmero de usurios, ttulos, itens e emprstimos atuais - e imprimiria os
resultados numa janela.
10. Refaa o modelo de biblioteca para dar suporte integrao de outras bibliotecas
que utilizem o mesmo sistema. Isto significa que uma biblioteca deveria ser
capaz de pesquisar um ttulo ou item numa outra biblioteca. Uma biblioteca deve
poder tomar um item emprestado atravs do envio de uma mensagem para a
biblioteca detentora de um item, a qual aciona os procedimentos de emprstimo
e devolve o item via correio para a biblioteca original. Mostre um diagrama de
implantao (deployment) para este novo sistema.
11. Adicione as classes "Book Title" e "Magazine Title" ao projeto e adicione alguns
novos atributos adequados a cada uma das classes. Faa com que a classe
existente "Title" seja abstrata e tenha certeza de que as novas classes possam ser
armazenadas de forma persistente.
12. Mude a janela "Browse All" para permitir que um usurio clique duas vezes num
ttulo ou num usurio nas list-boxes abrindo imediatamente assim a janela de
atualizao correta.
13. Mude o projeto da pesquisa de objetos para aceitar metacaracteres ("wild cards")
para pesquisar ttulos, autores ou usurios (ex. "UML*" localiza todos os ttulos
iniciando com "UML").
14. Mude o projeto da pesquisa de objetos para manusear resultados mltiplos de
pesquisa (correntemente, apenas o primeiro casamento retornado). O nmero
de "sucessos" deve ser informado e o usurio deve poder escolher entre os
registros resultantes.
15. Adicione na interface do usurio um toolbar contendo botes para escolher
funes especficas.
16. Melhore o desempenho do banco de dados atravs da reutilizao de registros
removidos de um arquivo e atravs do uso de um arquivo de ndices quando uma
pesquisa mais eficiente de um objeto especfico pode ser realizada (atualmente, a
pesquisa sequencial).
17. Mude o projeto do Database Package para utilizar um banco de dados relacional
em vez da soluo atual usando arquivos. Sero necessrias novas classes no
Database Package. Tente no mudar a interface para a classe Persistent, de forma
a no afetar o resto da aplicao.
18. Mude a interface do usurio para que a aplicao utilize uma nica janela; desta
forma, a janela principal muda de acordo com a funo sendo realizada.
19. Adicione uma nova classe utilitria para criar um log utilizvel por todas as
partes da aplicao para logar mensagens de depurao ou de rastreio de sua
operao. O tipo de informao mantida no log deve ser configurvel atravs da
interface do usurio.
20. Remova a necessidade de usar as operaes read() e write() numa classe
persistente. Alternativamente, use uma soluo pela qual uma classe mantm
meta-dados (dados sobre si mesma - i.e., uma descrio dos seus atributos), para
que uma classe de banco de dados possa perguntar a um objeto persistente
desconhecido sobre seus atributos e valores destes atributos e ento armazenlos num banco de dados. Uma nova classe Metadata deve ser definida e um
objeto de meta-dados deve ser agregado por todas as classes persistentes.
[Jacques: em vez da soluo proposta, sugiro fazer a mesma coisa usando o
conceito de JavaBeans].