Sei sulla pagina 1di 3

LISTA 2 - Programao Orientada a Objeto

Professor: Eduardo Carvalho


1. Crie uma classe que modele uma bola e permita trocar e consultar a cor da bola.
2. Crie uma classe que modele um quadrado e permita definir, alterar e consultar o tamanho dos
dados e obter a rea.
3. Crie uma classe que modele um retngulo e permita definir, alterar e consultar os valores dos
lados, obter a rea e obter o permetro.
4. Crie uma classe que modele uma pessoa e permita definir e obter a idade, peso e altura da pessoa
e que permita fazer a pessoa envelhecer, engordar e emagrecer. A cada ano que a pessoa envelhece,
sendo a idade dela menor que 21 anos, ela deve crescer 1,5 cm.
5. Crie uma classe que modele uma televiso e que permita ligar e desligar a TV, e alterar e consultar
o nmero do canal e o volume. O nmero do canal e o volume somente podem ser alterados dentro
de uma faixa vlida.
6. Crie uma classe que modele uma conta corrente e que permita definir e consultar o numero da
conta e o nome correntista, consultar o saldo e fazer depsitos e saques.
7. Crie uma classe que modele uma bomba de combustvel e permita definir a capacidade da bomba,
o preo do combustvel por litro e permita encher a bomba (sempre encher completamente) e
consultar sua quantidade de combustvel. necessrio tambm que seja permitido abastecer por
valor (retornando a quantidade de combustvel abastecida), abastecer por quantidade de litros
(retornando o valor a ser pago). Deve ser permitido tambm alterar o valor do preo por litro. Deve
ser tratada a situao de no haver combustvel suficiente na bomba para um determinado
abastecimento.
8. Crie uma classe que modele um retngulo e permita definir a altura e a largura. A classe tambm
deve permitir definir e alterar o ponto que representa o centro do retngulo e permitir que sejam
consultados os pontos dos quatro vrtices. Um ponto deve ser modelado por outra classe, e deve
permitir definir e consultar valores x e y do ponto. O objeto tambm deve informar sua rea, seu
permetro e se um quadrado.
9. Crie uma classe chamada Carnvoro que permita que objetos desta classe se alimentem de
qualquer coisa (nmeros, booleanos, caracteres, strings ou qualquer outro objeto). O contedo do
estmago do carnvoro deve poder ser consultado e tambm deve ser possvel digerir os alimentos. A
cada digesto o alimento mais antigo deve ser eliminado.
10. Crie a classe Carta, que possui um nome e um naipe. Crie os mtodos GET e SET para os
atributos. Crie agora uma classe Baralho, que possui 52 cartas. No construtor de Baralho, inicialize
as 52 cartas (juntamente com os 4 coringas, que devem se chamar coringa e o naipe coringa).
Escreva os seguintes mtodos:
a) embaralha( ) usando o mtodo Math.random d para trocar as cartas dentro do baralho,
misturando-as (sorteie duas posies e troque-as. Repita este processo diversas vezes).
b) daCarta( ) devolve uma carta, retirada do topo do baralho, se no estiver vazio, ou null.
c) temCarta( ) verifica se tem carta no baralho, devolvendo true ou false. A classe Baralho, assim
construda, ser til para programar diversos jogos de cartas, atravs de novas classes que os
implementem.
d) imprimeBaralho( ) imprime as cartas para verificar como esto dispostas (se esto embaralhadas
por exemplo).

11. Escreva uma classe que represente um pas. Um pas tem como atributos o seu nome, o nome da
capital, sua dimenso em Km2 e uma lista de pases com os quais ele faz fronteira. Represente a
classe e fornea os seguintes construtores e mtodo:
a) Construtor que inicialize o nome, capital e a dimenso do pas;
b) Mtodos de acesso (obter/get) para as propriedades indicadas no item (a);
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:
d) Um mtodo que define quais outros pases fazem fronteira (note que um pas no pode fazer
fronteira com ele mesmo);
e) Um mtodo que retorne a lista de pases que fazem fronteira;
f) Um mtodo que receba um outro pas como parmetro e retorne uma lista de vizinhos comuns aos
dois pases.
12. De forma incremental, traduza o seguinte conjunto de classes em um programa Python.
a) Classe: Porta
Atributos: aberta, cor, dimensaoX, dimensaoY, dimensaoZ
Mtodos: abre(), fecha(), pinta(), estaAberta()
b) Classe: Casa
Atributos: cor, porta1, porta2, porta3
Mtodo: void pinta(), totalDePortas(), quantasPortasEstaoAbertas()
c) Classe: Edificio
Atributos: cor, totalDePortas, totalDeAndares, portas[]
Mtodos: pinta(), quantasPortasEstaoAbertas(), adicionaPorta(), totalDePortas(), adicionarAndar(),
totalDeAndares()
d) As classes Casa e edifcio ficaram muito parecidas. Crie a classe Imovel e coloque nela tudo o
Casa e Edificio tem em comum. Faa Imovel superclasse de Casa e Edificio. Note que alguns
mtodos em comum no podero ser implementados por Imovel (e.g., quantasPortasEstaoAbertas e
totalDePortas).
Logo, esses devero ser declarados como mtodos abstratos.
13. Identifique as classes, atributos e mtodos necessrios para modelar e implementar:
a) Uma conta corrente que possui um nmero, um saldo, um status que informa se ela especial ou
no, um limite e um conjunto de movimentaes.
b) Uma movimentao que possui uma descrio, um valor e uma informao se ela uma
movimentao de crdito ou dbito.
c) Um 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 saquelimite + saldo negativo), depsitos, emisso de saldo e extrato e
transferncia entre contas.
Uma vez feita a modelagem, implemente em Python.
14. Crie um objeto nmero que seja capaz de informar:
a) os seus fatores primos;
b) seu fatorial;

15. Crie uma classe que modele um nmero complexo para realizar aritmtica com nmeros
complexos.
Os nmeros complexos tm a forma:
parteReal + parteImaginaria * i, onde i a raiz quadrada de -1.
Utilize variveis reais para representar as partes real e imaginria do nmero. A presena das partes
real e imaginria condio necessria para a criao do objeto. Um nmero complexo deve ser
capaz de realizar:
a) adio com outro nmero complexo: as partes reais so somadas de um lado e as partes
imaginrias so somadas de outro;
b) subtrao com outro nmero complexo: a parte real do operando direito subtrada da parte real
do operando esquerdo e a parte imaginria do operando direito subtrada da parte imaginria do
operando esquerdo;
c) multiplicao com outro nmero complexo;
d) diviso com outro nmero complexo;
e) fornecer uma representao em String do nmero na forma a + bi, onde a a parte real e b a
parte imaginria.
As frmulas podem ser encontradas em http://en.wikipedia.org/wiki/Complex_number