Você está na página 1de 7

1a Lista de Exerccios de Orientao a Objetos - Modelagem

1. Crie um modelo para o restaurante caseiro das transparncias. Imagine que o Restaurante Caseiro
Hipottico facilite aos seus clientes a diviso dos valores da conta pelo nmero de clientes. Que
dados adicionais deveriam ser representados pelo modelo? Quais operaes deveriam ser criadas
e/ou modificadas?
2. Escreva um modelo para representar uma lmpada que est venda em um supermercado. Que
dados devem ser representados por este modelo?
3. Imagine uma lmpada que possa ter trs estados: apagada, acesa e meia-luz. Usando o modelo
Lmpada como base, escreva o modelo LampadaTresEstados.
4. Inclua, no modelo Lmpada, uma operao estLigada que retorne verdadeiro se a lmpada
estiver ligada e falso, caso contrrio.
5. Crie um modelo Livro que represente os dados bsicos de um livro, sem se preocupar com a sua
finalidade.
6. Usando o resultado do exerccio anterior como base, crie um modelo LivroDeLivraria que
represente os dados bsicos de um livro que est venda em uma livraria.
7. Usando o resultado do modelo Livro como base, crie um modelo LivroDeBiblioteca que
represente os dados bsicos de um livro de uma biblioteca, que pode ser emprestado a leitores.

2a Lista de Exerccios de Orientao a Objetos Classes em Java


1. Escreva uma classe Livro que represente o modelo desenvolvido na lista 1.
2. Escreva uma classe LivroLivraria que represente o modelo desenvolvido na lista 1.
3. Escreva uma classe LivroBiblioteca que represente o modelo desenvolvido na lista 1.
4. Escreva uma aplicao em Java que demonstre o uso de instncias das classes Livro,
LivroLivraria e LivroBiblioteca .

3a Lista de Exerccios de Orientao a Objetos Construtores e Sobrecarga


1. Escreva um construtor para a classe Livro (use a classe desenvolvida em exerccios anteriores).
2. Escreva dois construtores usando o conceito de sobrecarga e referncia this para a classe
LivroLivraria (use a classe desenvolvida em exerccios anteriores).
3. Defina uma classe Professor com os dados: nome do professor, nome do departamento, data de
admisso, nmero de registro. Inclua na classe um construtor para setar os dados e um mtodo
para imprimir o contedo.
4. Defina uma classe Data com os dados: dia, ms e ano.
5. Reescreva a classe Professor de forma que a data de admisso seja um objeto da classe Data.

Artur Henrique Kronbauer

6. Modifique a classe Data criada anteriormente para conter um construtor capaz de setar o dia, ms
e ano e um mtodo capaz de imprimir a data.
7. Crie uma classe com um mtodo principal capaz de ler informaes do teclado para instnciar trs
objetos da classe professor e utilizar o mtodo imprime_dados.

4a Lista de Exerccios de Orientao a Objetos Estruturas de Deciso e Repetio


1. Escreva uma classe chamada classe Comparavel que tem como atributo um valor inteiro, um
construtor para inicializar o atributo e os mtodos MaiorOuIgual, MenorOuIgual e
DiferenteDe que recebem um valor do tipo int como parmetro e retornam true se o valor
encapsulado for, respectivamente, maior ou igual, menor ou igual ou diferente do passado como
parmetro.
2. Escreva uma classe em Java que simule uma calculadora bem simples. Essa classe deve ter como
atributos duas variveis double e um char. Deve possuir um construtor que recebe como parmetro
dois nmeros e um caracter, correspondente a uma das operaes bsicas (+, -, *, /). Deve ter um
mtodo para calcular a operao desejada e um para imprimir o resultado. O programa deve
considerar divises por zero como sendo erros, e imprimir uma mensagem adequada.
3. Escreva para a classe Livro o mtodo Igual que aceite o titulo do livro como parmetro e
retorne true se o valor encapsulado for igual ao valor passado como parmetro.
4. Escreva uma classe EntradaDeCinema com a seguinte estrutura (dados):
Data dataDoFilme
float horrio
int sala
float valor
E com as seguintes aes (mtodos):
Construtor: com a finalidade de inicializar todos os atributos.
CalculaDesconto: que deve receber como parmetro a data de nascimento do cliente (do tipo
Data) e caso seja menor de 12 anos, deve ser dado um desconto de 50% no valor normal.
CalculaDesconto: que deve receber como parmetro a data de nascimento do cliente (do tipo
Data) e o nmero de sua carteira de estudante (do tipo int). Se o estudante tiver idade entre 12
e 15 anos, deve ser dado um desconto de 40%, de 16 a 20 um desconto de 30% e mais que 20
anos um desconto de 20% no valor normal.
CalculaDescontoHorrio: esse mtodo deve dar um desconto de 10% sobre o valor aferido
aps todas as outras opes de desconto, caso o horrio do filme seja antes das 16 horas.
toString(): que deve imprimir todos os dados do ingresso.
5. Desenvolva uma aplicao que leia os dados necessrios para instanciar e imprimir o ingresso
para clientes normais, menores de 12 anos e estudantes.
6. Acrescente a classe Data (ver exerccios anteriores) para que essa possua um mtodo chamado
retornaMes, que ao ser passado uma determinada data (do tipo Data) retorne uma String
indicando o ms do ano da data passada como parmetro. Use o comando switch para resolver o
exerccio.

Artur Henrique Kronbauer

8. O valor de xy pode ser calculado como sendo x multiplicado por si mesmo y vezes (se y for
inteiro). Escreva uma classe chamada SeriesMatemticas que contenha um construtor para
inicializar x e y, um mtodo chamado elevadoA que calcule e retorne o resultado de xy , e um
mtodo chamado imprimeResultado que mostre o resultado obtido. Obs: Use o comando while.
9. Acrescente a classe SeriesMatematicas o mtodo piQuadradoSobre8 que calcule a srie (1/1 2)
+ (1/32) + (1/52) + (1/72) + (1/92) + ... Evidentemente a srie no poder ser calculada
infinitamente, devendo parar depois de N termos, sendo que o valor de N deve ser fornecido como
parmetro ao mtodo. Obs: Use o comando do-while.
10. Acrescente a classe SeriesMatematicas o mtodo calculaPi que calcule a srie 2 x (2/1) x
(2/3) x (4/3) x (4/5) x (6/5) x (6/7)... Evidentemente a srie no poder ser calculada
infinitamente, devendo parar depois de N termos, sendo que o valor de N deve ser fornecido como
parmetro ao mtodo. O resultado da srie deve retornar um valor aproximado a PI.
11. Escreva uma classe chamada Fibonacci que tenha um mtodo que receba como parmetro um
nmero inteiro para indicar a quantidade de termos que se quer calcular e imprimir da srie.
Srie: 1 + 1 + 2 + 3 + 5 + 8 + 13 + ...
12. Acrescente a classe Fibonacci um mtodo que receba como parmetro um nmero inteiro e
retorne verdadeiro se o nmero pertence a srie e falso em caso contrrio.
13. Escreva uma classe chamada Primos que tenha um mtodo para identificar se um determinado
nmero primo.
14. Acrescente a classe Primo um mtodo que receba dois nmeros como parmetros e possa
mostrar todos os primos no intervalo indicado pelos dois nmeros. Envie uma mensagem de
intervalo errado caso o primeiro nmero seja menor que o segundo.

6a Lista de Exerccios de Orientao a Objetos Vetores e Matrizes


1. Escreva uma classe chamada MatrizDeInteiros que tenha como atributo uma matriz de inteiros e
um construtor que receba como parmetro a ordem da matriz, a instancie e inicialize com zeros.
Acrescente a classe os seguintes mtodos:
a. um mtodo que receba como parmetro trs nmeros inteiros indicando respectivamente
linha, coluna e o valor que deve ser armazenado na linha e coluna indicada.
Obs: Caso a linha ou a coluna passadas como parmetro estejam fora da ordem da matriz
indique com uma mensagem o erro.
b. um mtodo Quadrada, que retorna true se a matriz for quadrada (isto , tem o mesmo
nmero de linhas e colunas).
c. um mtodo total que some todos os valores da matriz retornando o resultado.
d. um mtodo que receba como parmetro um determinado valor e retorne a linha onde o
elemento foi encontrado na matriz ou 1 caso contrrio.
2.

Escreva uma classe chamada VetorDeChar que tenha como atributo um vetor de char e um
construtor que receba como parmetro uma frase. No construtor deve ser passada a frase para o
vetor de char.
Dica: Use o mtodo toCharArray da classe String para colocar os elementos da frase no vetor.
Exemplo: char vetor[] = frase.toCharArray();
Acrescente os seguintes mtodos a classe:
a. um mtodo que retorne o nmero de vogais existentes na frase.
b. um mtodo que retorne o nmero palavras iguais na frase.

Artur Henrique Kronbauer

3. Escreva uma classe Funcionrio com os atributos matricula (int), nome (String), departamento
(int), salrio (float) e funo (String). Adicione na classe um construtor que receba todos os
parmetros para inicializar os dados de um funcionrio.
4. Escreva uma classe SetorPessoal que tenha como atributo um vetor da classe Funcionrio e
uma varivel inteira para ser usada como ndice do vetor. Crie um construtor que receba como
parmetro o nmero de funcionrios de uma empresa para instanciar o vetor e inicialize o ndice
do vetor com zero. Acrescente os seguintes mtodos a classe:
a. um mtodo para adicionar funcionrios no vetor definido na classe;
b. um mtodo que possa imprimir a folha de pagamento informando o nome dos
funcionrios e o seus respectivos salrios.
c. um mtodo que possa retornar o valor total da folha de pagamento.
d. um mtodo que possa retornar o nome do funcionrio que recebe o maior salrio.
e. um mtodo que possa receber como parmetro o nmero de um determinado

departamento e mostrar o nome e o cargo de todos os funcionrios daquele


departamento.
f. um mtodo que possa receber como parmetro o nome de uma determinada
funo e posteriormente imprimir o nome de todas as pessoas que exercem essa
funo.
g. um mtodo que possa imprimir a folha de pagamento informando o nome dos
funcionrios e o seus respectivos salrios em ordem crescente de salrio.
Dica: necessrio criar um outro vetor que conter o vetor original e posteriormente
ordena-lo.

7a Lista de Exerccios de Orientao a Objetos Reutilizao de Classes


1. Escreva as classes LivroLivraria e LivroBiblioteca que herdam da classe Livro.
Dica: Os campos em comum devem ser preferencialmente representados pela classe ancestral.
2. Observe o cenrio seguir. Identifique os objetos, seus atributos, mtodos e implemente as classes
necessrias: Uma conta corrente possui um nmero, um saldo, um status que informa se ela
especial ou no, um limite e um conjunto de movimentaes. Uma movimentao possui uma
descrio, um valor e uma informao se ela uma movimentao de crdito ou dbito. Crie uma
classe banco que armazene um conjunto de contas e fornea mtodos que permitam que sejam
feitos criaes de conta, excluso de contas, saques (uma conta corrente s pode fazer saques
desde que o valor no exceda o limite de saque -limite + saldo-), depsitos, emisso de saldo e
extrato e transferncia entre contas.
3. Escreva uma classe que represente um pais. Um pais tem como atributos o seu nome e a sua
dimenso em Km2 e uma lista de pases com os quais ele faz fronteira. Represente a classe e
fornea os seus membros a seguir:
a) Construtor que inicialize o nome e a dimenso do pas;
b) Mtodos de acesso (get) para a propriedade dimenso do pas;
c) Um mtodo que permita verificar se dois pases so iguais. Dois pases so iguais se tiverem o
mesmo nome e a mesma capital. A assinatura deste mtodo deve ser:
public boolean equals(Pais outro);
d) Um mtodo que informe se um outro pas seu limtrofe (faz fronteira);
e) Um mtodo que receba um outro pas como parmetro e retorne uma lista de vizinhos comuns
aos dois pases.
Obs: Considere que um pas tem no mximo 40 outros pases com os quais faz fronteira.

Artur Henrique Kronbauer

4. Escreva uma classe continente. Um continente possui um nome e um conjunto de pases, que dele
fazem parte. Desenvolva um mtodo que fornea a dimenso total do continente.
5. Um avio representado pelo seu prefixo, pelo nome do seu modelo, pelo nome do seu fabricante,
pela quantidade de assentos e pela quantidade de assentos ocupados.
Escreva uma classe que represente um avio e desenvolva um mtodo que informe qual o prefixo
da aeronave.
Um aeroporto representado pelo seu cdigo e seu nome (ex.: SSA: Salvador, BSB: Braslia. etc),
por um status que informa se ele um aeroporto internacional ou no, uma lista de outros
aeroportos para os quais partam vos diretos partir dele e uma lista de outros aeroportos de onde
venham vos para ele. Alm disto possui uma lista de avies que esto atualmente no ptio.
Escreva uma classe que contemple os atributos apresentados e mais os seguintes membros:
a) Um construtor que inicialize o cdigo do aeroporto e seu nome.
b) Mtodos que verifiquem e alterem a situao relativa ao fato do aeroporto ser internacional ou
no.
c) Um mtodo que verifique e informe se um aeroporto igual a ele:
- public boolean equals (Aeroporto aeroposto)
- Dois aeroportos so iguais se o seu cdigo for coincidente.
d) Um mtodo que receba um prefixo de avio como parmetro e informe se a aeronave est
pousada nele.
e) Um mtodo que receba um outro aeroporto como parmetro e verifique se existe alguma forma
de se chegar nele. Para isto, o aeroporto deve verificar se ele possui vo partindo para o aeroporto
desejado, e caso no saia, se existe alguma forma de chegar nele partir dos aeroportos de onde
sai
- public boolean possuiRota(Aeroporto aeroporto)
Obs: A quantidade mxima de aeronaves que um aeroporto pode ter em terra igual a 100 e a

quantidade mxima de outros aeroportos com os quais o aeroporto pode ter linhas saindo
e chegando 100.
6. Fornea o esquema de classes em Java para um programa funcional para a seguinte situao:
Uma biblioteca possui um nome, um endereo e armazena um conjunto de publicaes.
Atualmente, as publicaes disponveis so os artigos e os livros. Todas as publicaes possuem
data de publicao, um ttulo, uma lista de outras publicaes a que elas fazem referncia e o
conjunto de autores da publicao. So atributos relevantes para um autor o seu nome e sua
titulao. So atributos relevantes para artigos o seu ttulo, a sua data de publicao, o seus
autores, as outras publicaes que ele faz referncia, a data de sua publicao e o seu resumo. Para
os livros relevante armazenar seu ttulo, sua data de publicao, as outras publicaes que ele
referencia, seus autores, o nmero da edio, o nome da editora e o seu ISBN. As publicaes so
forma genricas de se referir a uma grande categoria de classes, mas na biblioteca no existem
objetos publicaes; o que ela vai efetivamente armazenar so livros ou artigos. Futuramente a
biblioteca pretende operar com outros tipos de publicaes como manuais, teses e etc.
Assuma que:
Uma biblioteca possui no mximo 65535 publicaes;
Qualquer publicao (livros e artigos inclusos) possui no mximo 255 autores.
Qualquer publicao (livros e artigos inclusos) faz referncia a no mximo 255 outras
publicaes.
Obs: necessrio definir apenas os atributos das classes

7. Implemente uma classe chamada Arquivo que possua o controle de acesso RWX dos Sistemas
Unix:

Artur Henrique Kronbauer

O primeiro bit indica que o objeto um objeto de leitura apenas.


O segundo bit indica que o objeto um objeto de escrita apenas.
O terceiro bit indica que o objeto um objeto executvel apenas.
Read
Write
Execute
1
0
1
Indica um arquivo que permite Leitura e Execuo
Fornea os seguintes mtodos para os objetos instanciados nessa classe:
Construtor da classe:
public Arquivo(byte r, byte w, byte e)
Mtodos que verificam se o arquivo fornece permisso de leitura, escrita e execuo:
public boolean isReadable();
public boolean isWriteable();
public boolean isExecuteable();
Mtodos que concedem a troca do atributo de leitura, escrita e execuo, ou seja, se o arquivo
tinha permisso de leitura ao ser chamado o mtodo trocaRead ele passa a no ter mais a
permisso de leitura, e caso ele no tenha a permisso passa a ter.
public byte trocaRead();
public byte trocaWrite();
public byte trocaExecute();
Um mtodo que mostra as permisses do arquivo.

Public byte mostraEstado();


8. Desenvolver um sistema de cadastro de Pessoas, Alunos e Professores.

Classes envolvidas
Pessoa

Notas
Aluno
TPI

Professor
FRB

FIB

Classe pessoa:
Atributos: String nome, telefone, endereco, cpf;
int identidade, idade;
Mtodos: public pessoa(String n, String t, String e, String c, int id, int i)
public pessoa(String n, int i)
public String retnome()
public String rettelefone()
public String retendereco()
Artur Henrique Kronbauer

public String retcpf()


public int retidentidade()
public int retidade()
public int retidade(int ano_atual, int ano_futuro)
Classe Notas:
Atributos: float nota1, nota2, nota3, media;
Mtodos: public notas(float n1, float n2, float n3)
public notas()
public void cal_media()
Classe Aluno extends pessoa:
Atributos: int matricula;
notas notaAluno = new notas();
Mtodos: public aluno(String n, String t, String e, String c, int id, int i, int m, float n1, float n2,
float n3)
Abstract classe professor extends pessoa:
Atributos: float salario;
int horas;
Mtodos: public professor(String n, String t, String e, String c, int id, int i, int h)
abstract void calculo_salario();
public float mostra_salario()
Classe frb extends professor:
Atributos: int horas_pesquisa;
Mtodos: public frb(String n, String t, String e, String c, int id, int i, int h, int hp)
public void calculo_salario()
Classe fib extends professor:
Atributos: int horas_atendimento;
Mtodos: public fib(String n, String t, String e, String c, int id, int i, int h, int ha)
public void calculo_salario()
Classe TPI:
a) Responsvel em ler todas as informaes para o cadastramento de Pessoas, Alunos e Professores da
FIB e da Ruy Barbosa e colocar no vetor adequado.

b) Responsvel pela leitura de um nome e a pesquisa no vetor adequado.


c) Responsvel em mostrar as informaes existentes no objeto com o nome solicitado.

Artur Henrique Kronbauer