Anda di halaman 1dari 9

Universidade de So Paulo (USP)

Instituto de Cincias Matemticas e de Computao (ICMC)


Programao Orientada a Objetos (SCC0204)
1 Lista de Exerccios
1 - Em suas palavras, defina os seguintes termos:
a. Classe
b. Objeto
c. Instanciao
d. Atributo de objeto
e. Mtodo de objeto
f. Atributo de classe ou atributos estticas
g. Construtor
h. Mtodo de classe ou mtodos estticos
2 - Sua tarefa criar uma classe que contenha um Registro de Agenda. A tabela 1
descreve as informaes que um Registro de Agenda deve conter:

Tabela 1 Informaes do registro


Crie os seguintes mtodos:
1. Fornea todos os mtodos assessores e modificadores necessrios para todos os atributos.
2. Construtores.
3 - Crie uma classe Agenda que possa conter entradas de objetos tipo Registro de
Agenda (utilize a classe criada no exerccio 2). Devem ser oferecidos os seguintes
mtodos para a agenda:
1. Adicionar registro
2. Excluir registro
3. Visualizar registros
4. Modificar um registro
4 - Qual das seguintes afirmativas est correta?
A. "X estende Y" correto Se, e Somente se, X for uma classe e Y for uma interface.
B. X estende Y" correto se, e somente se, X for uma interface e Y for uma classe.
C. "X estende Y" correto se X e Y forem ambos classes ou ambos interfaces.

D. "X estende Y" correto para todas as combinaes de X e Y sendo classes e/


ou interfaces.
5 Quais das seguintes opes de declarao so vlidas? (Marque todas as corretas).

6 - Dado dois arquivos em pacotes diferentes A e B. Explique o resultado do seguinte


trecho de cdigo abaixo:

8 - Dado:

Qual opo, inserida na linha 9, ir compilar? (Marque todas as corretas)


A. Beagle b2 = (Beagle) dogl;
B. Beagle b3 = (Beagle) dog2;
C. Beagle b4 = dog2;
D. Nenhuma das instrues acima ir compilar.
9 - Dado:

Quais opes so verdadeiras? (Marque todas as corretas)


A. Woop -um Hmpf e tem-um Zing.
B. zing -um Woop e tem-um Hmpf.
C. Hmpf tem-um Woop e Woop -um Zing.
D. Woop tem-um Hmpf e Woop -um Zing.
10 - Quais afirmativas so verdadeiras? (Marque todas as corretas)
A. Os relacionamentos Tem-Um sempre dependem da herana.
B. Os relacionamento Tem-Um sempre dependem das variveis de instncias.
C. Os relacionamento Tem-Um sempre precisam de pelo menos dois tipos de classes.
D. Os relacionamento Tem-Um sempre dependem do polimorfismo.
E. Os relacionamento Tem-Um sempre t6m acoplamento forte.
11 - Imagine que tenha uma classe FabricaDeCarro e quero garantir que s existe um objeto
desse tipo em toda a memria. No existe uma palavra chave especial para isto em java,
ento teremos de fazer nossa classe de tal maneira que ela respeite essa nossa necessidade.
Como fazer isso?
12 - Modele um funcionrio. Ele deve ter o nome do funcionrio, o departamento onde
trabalha, seu salrio (double), a data de entrada no banco (String), seu RG (String) e um
valor booleano que indique se o funcionrio ainda est ativa na empresa no momento ou se
j foi mandado embora. Voc deve criar alguns mtodos de acordo com sua necessidade.
Alm deles, crie um mtodo bonifica que aumenta o salrio do funcionrio de acordo com o
parmetro passado como argumento. Crie, tambm, um mtodo demite, que no recebe
parmetro algum, s modifica o valor booleano indicando que o funcionrio no trabalha
mais aqui. A idia aqui apenas modelar, isto , s identifique que informaes so
importantes e o que um funcionrio faz. Desenhe no papel tudo o que um Funcionrio tem
e tudo que ele faz.
13 - Transforme o modelo acima em uma classe Java. Teste-a, usando uma outra classe que
tenha o main. Voc deve criar a classe do funcionrio chamada Funcionrio, e a classe de
teste voc pode nomear como quiser. A de teste deve possuir o mtodo main.

14 - Crie um mtodo mostra(), que no recebe nem devolve parmetro algum e


simplesmente imprime todos os atributos do nosso funcionrio. Dessa maneira, voc no
precisa ficar copiando e colando um monte de System.out.println() para cada mudana e
teste que fizer com cada um de seus funcionrios,
15 - Construa dois funcionrios com o new e compare-os com o = =. E se eles tiverem os
mesmos atributos? Para isso voc vai precisar criar outra referncia.
16 - Construa dois funcionrios com o new e compare-os com o ==. E se eles tiverem os
mesmos atributos? Para isso voc vai precisar criar outra referncia
17 - Em vez de utilizar uma String para representar a data, crie uma outra classe, chamada
Data. Ela possui 3 campos int, para dia, ms e ano. Faa com que seu funcionrio passe a
us-la.
18 - Qual o propsito da palavra-chave new? Explique o que acontece quando essa
palavra-chave utilizada em um aplicativo.
19 - Explique por que uma classe pode fornecer um mtodo set e um mtodo get para uma
varivel de instncia.
20 - Crie uma classe chamada Employee que inclui trs partes de informaes como
variveis de instncia um primeiro nome (tipo String). um sobrenome (tipo String) e um
salrio mensal (double). Sua classe deve ter um construtor que inicializa as trs variveis de
instncia. Fornea um mtodo set e um get para cada varivel de instncia. Se o salrio
mensal no for positivo. configure-o como 0.0. Escreva um aplicativo de teste chamado
EmployeeTest que demonstra as capacidades da classe Employee. Crie dois objetos
Employee e exiba o salrio anual de cada objeto. Ento a cada Employee um aumento de
10% e exiba novamente o sa1rio anual de cada Employee.
21 - Crie uma c1asse chamada Date que inclui trs informaes como variveis de instncia
um ms (tipo int), um dia (tipo int) e um ano (tipo int). Sua classe deve ter um construtor
que inicializa as trs variveis de instncia e assumir que os valores fornecidos so corretos.
Fornea um mtodo set e um get para cada varivel de instncia. Fornea um mtodo
displayDate que exibe o ms, o dia e o ano separados por barras normais(/). Escreva um
ap1icativo de teste chamado DateTest que demonstra as capacidades da classe Date
22 - Uma empresa quer transmitir dados por telefone, mas esta preocupada com a
possibi1idade de seus telefones estarem grampeados. Ela pediu para voc escrever um
programa que criptografe os dados de modo que estes possam ser transmitidos mais
seguramente. Todos os dados so transmitidos como inteiros de quatro digitos. Seu
aplicativo deve ler um inteiro de quatro digitos inserido pelo usurio e criptograf-lo desta
maneira: Substitua cada digito pelo resultado da adio de 7 ao dgito e obtendo o resto
depois da diviso do novo valor por 10. Troque ento o primeiro dgito pelo terceiro e o
segundo digito pelo quarto. Ento imprima o inteiro criptografado. Escreva um aplicativo

separado que receba entrada de um inteiro de quatro digitos criptografado e o


descriptografe para formar o nmero original.
23 - O mximo divisor comum (MDC) de dois inteiros o maior inteiro que divisvel por
cada um dos dois nmeros. Escreva um mtodo mdc que retorna o mximo divisor comum
de dois inteiros. Incorpore o mtodo a um aplicativo que l dois valores do usurio e exibe
o resultado.
24 - (Triplas de Pitgoras) Um tringulo retngulo pode ter lados cujos comprimentos so
todos inteiros. O conjunto de trs valores inteiros para os comprimentos dos lados de um
tringulo retngulo chamado de tripla de Pitgoras. Os comprimentos dos trs lados
devem satisfazer a relao de que a soma dos quadrados de dois dos lados igual ao
quadrado da hipotenusa. Escreva um aplicativo para localizar todos os triplos de Pitgoras
para sidel, side2 e a hypotenuse, todos no maiores que 500. Utilize um loop for
triplamente aninhado que tenta todas as possibilidades. Esse um mtodo de computao
de fora bruta.
25 - (Pesquisa de rvore binria) Escreva o mtodo binaryTreeSearch, que tenta localizar
um valor especificado em um objeto rvore de pesquisa binria. O mtodo deve aceitar
como um argumento uma chave de pesquisa a ser localizada. Se o n contendo a chave de
pesquisa for localizado, o mtodo deve retornar uma referncia a esse no; caso contrrio,
ele deve retornar uma referncia nula.
26 - Como o polimorfismo promove extensibilidade?
27 - Discuta quatro maneiras de atribuir referncias de superc1asse e de subclasse a
variveis de superclasse e a tipos de subclasse.
28 - Escreva uma hierarquia de herana para as classes Quadriltero, Trapzio,
Paralelogramo, Retngulo e Quadrado. Utilize Quadrilateral como a superclasse da
hierarquia. Faa a hierarquia o mais profunda (isto , com muitos nveis) possvel.
Especifique as variveis de instncia e os mtodos para cada classe. As variveis de
instncia private de Quadrilateral devem ser os pares de coordenadas x-y para os quatro
pontos que delimitam o Quadriltero. Escreva um programa que instancia objetos de suas
classes e gera sada da rea de cada objeto (exceto Quadriltero).
29 - Desenhe uma hierarquia de herana para alunos universitrios semelhante a hierarquia
ilustrada no cdigo abaixo. Utilize Aluno como a superclasse da hierarquia, ento herde Al
uno com as classes AlunoDeGraduacao e AlunoGraduado. Continue a estender a hierarquia
o mais profundo (isto , com muitos nveis) possvel. Por exemplo. Primeiranista,
Segundanista, Terceiranista e Quartanista poderiam estender AlunoDeGraduaao; e
AlunoDeDoutorado e AlunoDeMestrado poderiam ser subclasses de AlunoGraduado.
Depois de desenhar a hierarquia, discuta os relacionamentos entre as classes.
30 - Modifique o programa de jogo de dados no trecho de cdigo abaixo para permitir
apostas. Inicialize a varivel bankBalance como $1.000. Pea ao jogador para inserir um
wager (urna aposta). Verifique se wager menor que ou igual a bankBalance e, se no o

for, faa o usurio reinserir o wager ate um wager vlido ser inserido. Depois que um wager
correto foi inserido, execute um jogo de dados. Se o jogador ganhar, aumente bankBalance
por wager e exiba o novo bankBalance. Se o jogador perder, diminua bankBalance por
wager, exiba o novo bankBalance, verifique se bankBalance tornou-se zero e, se tiver
ocorrido, exiba a mensagem Sorry. You busted! [Desculpe, mas voc faliu.] . Enquanto
o jogo se desenvolve, exiba vrias mensagens para criar uma conversa, como Oh, you re
going for broke, huh? [Oh, parece que voc vai quebrar, hein?] ou Awcmon, take a
chance! [Ah, vamos l, d uma chance para sua sorte!] ouYou re up big. Nows the
time to cash in your chips! [Voc est montado na grana. Agora hora de trocar essas
fichas e embolsar o dinheiro!]. Implemente a conversa como um mtodo separado que
escolhe aleatoriamente a string a exibir.

31 - (Jogo da velha) Crie uma classe TicTacToe que permitir escrever um programa
completo para reproduzir o jogo da velha. A classe contm um array bidiniensional privado
3 por 3 de inteiros. O construtor deve inicializar a grade vazia com todos como zero.
Permita dois jogadores humanos. Para onde quer que o primeiro jogador se mova, coloque
um 1 no quadrado especificado; coloque um 2 no local para o qual o segundo jogador se
mover. Todo movimento deve ocorrer em um quadrado vazio. Depois de cada jogada,
determine se o jogo foi ganho e se aconteceu um empate. Se voc se sentir motivado.
modifique seu programa de modo que o computador faa o movimento para um dos
jogadores. Alm disso, permita que o jogador especifique se quer ser o primeiro ou o
segundo. Se voc se sentir excepcionalmente motivado. desenvolva um programa que jogue
o Tic-Tac-Toe tridimensional em uma grade 4 por 4 por 4. [Nota: Esse um projeto
desafiador que pode consumir muitas semanas de esforo!]

32 (Oito rainhas) Outro problema difcil para fs de xadrez o problema das oitos
rainhas, que pede o seguinte: possvel colocar oito rainhas em um tabuleiro de xadrez
vazio de modo que nenhuma rainha esteja atacando qualquer outra (isto , sem que duas
rainhas estejam na mesma linha. na mesma coluna ou na mesma diagonal)? (Dica:
possvel atribuir um valor para cada quadrado do tabuleiro de xadrez para indicar quantos
quadrados de um tabuleiro de xadrez vazio so eliminados se uma rainha for colocada
nesse quadrado). Uma vez que esses nmeros de eliminao so colocados em todos os
64 quadrados, uma heurstica apropriada poderia ser como segue: coloque a prxima rainha
no quadrado com o menor nmero de eliminao. Por que essa estratgia intuitivamente
atraente?
33 - (Crivo de Eratstenes) Um nmero primo qua1quer inteiro maior que um que
igualmente divisvel apenas si mesmo e 1. O crivo de Eratstenes um mtodo de localizar
nmeros primos. Ele opera como segue:
a) Crie um array boolean de tipo primitivo com todos os elementos inicializados como true.
Os elementos do array com ndices primos permanecero true. Todos os outros elementos
do array por fim so configurados como false.
b) Iniciando com o indice de array 2, determine se um dado elemento true. Se for, faa
um loop pelo restante do array e configure como false cada elemento cujo indice mltiplo
do ndice para o elemento com valor true. Ento continue o processo com o prximo
elemento com valor true. Para o indice de array 2, todos os elementos alm do elemento 2
no array que tiverem ndices mltiplos de 2 (ndices 4, 6, 8, 10 etc.) sero configurados
como false; para o ndice de array 3, todos os elementos alm do elemento 3 no array que
tiverem ndices mltiplos de 3 (ndices 6, 9, 12, 15 etc.) sero configurados como false; e
assim per diante.
Quando esse processo for concludo, os elementos de array que ainda forem true indicam
que o indice um nmero primo. Esses ndices podem sei exibidos. Escreva um aplicativo
que utiliza um array de 1000 elementos para determinar e exibir os nmeros primos entre 2
e 999. Ignore elementos de array 0 e 1.
43 - (Crculos Concntricos utilizando o mtodo drawArc) Escreva um aplicativo que
desenha uma srie de oito crculos concntricos. Os crculos devem ser separados por 10
pixels. Utilize o mtodo Graphics drawArc.
44 - (Tringulos aleatrios) Escreva um aplicativo que exibe tringulos gerados
aleatoriamente em cores diferentes. Cada tringulo deve ser preenchido com uma cor
diferente. Utilize a classe GeneralPath e o mtodo fill da classe Graphics2D para desenhar
os tringulos.
45 - (Grfico de torta) Escreva um programa que insere quatro nmeros e os dispem em
um grfico de torta. Utilize a classe Arc2D.Double e o mtodo fill da classe Graphics2D
para realizar o desenho. Desenhe cada pedao da torta em uma cor separada.

Anda mungkin juga menyukai