Exercícios Sobre Orientação a Objetos

download Exercícios Sobre Orientação a Objetos

of 5

Transcript of Exercícios Sobre Orientação a Objetos

Exerccios sobre orientao a objetosEstes exerccios podem ser desenvolvidos no BlueJ:

1) Da Wikipedia, temos: O tamagotchi um brinquedo em que se cria um animal de estimao virtual. O tamagotchi foi lanado pela Bandai em 1996 no Japo. A motivao do brinquedo consiste em cuidar do animalzinho virtual como se fosse real, dando-lhe carinho virtual, comida virtual, banho virtual, cuidados virtuais etc.Ns queremos programar uma verso simplificada do mascote digital, como o Tamagotchi, que fez muito sucesso entre as crianas.Ele ter duas caractersticas marcantes:

Vidas (0 a 7) Energia (0 a 100)

a) Construa uma classe Mascote, com as duas caractersticas como atributo.b) Faa um mtodo construtor, que atribua 7 vidas e 100 unidades de energia para o mascote.c) Construa mtodos de acesso adequados.d) Construa um mtodo que imprima o estado do objeto.e) Implemente um mtodo que aumente ou reduza a energia do Mascote, de um valor passado por parmetro (que pode ser positivo ou negativo). No permitida energia acima do limite mximo especificado acima. Caso tenha atingido 0 ou menos de energia, uma vida ser perdida; este mtodo deve anunciar a morte do bichinho caso a ltima vida seja perdida, ou ento, ele deve anunciar quantas vidas ainda tem e deve voltar a ter energia mxima.

Soluo:

/*** A classe Tamagotchi modela um mascote virtual.** @author Carlos Menezes* @version 0.1*/public class Tamagotchi{ // Vidas e Energia so as duas caractersticas marcantes private int vidas, energia; /** * Construtor da classe Tamagotchi, que faz as inicializaes */ public Tamagotchi() { vidas = 7; energia = 100; } /** * Mtodo de acesso para vidas * * @return retorna o nmero de vidas do mascote virtual */ public int acesseVidas() { return vidas; } /** * Mtodo de acesso para energia * * @return retorna a energia do mascote virtual */ public int acesseEnergia() { return energia; } /** * Mtodo para imprimir o estado do mascote * */ public void imprimeEstado() { System.out.println("Nmero de vidas = " + vidas); System.out.println("Energia atual = " + energia); } /** * Mtodo modificador que atualiza energia e vidas * * @param x valor a aumentar ou diminuir na energia */ public void atualizeEnergia(int x) { energia = energia + x; if(energia > 100) { energia = 100; } if(energia 0) { energia = 100; imprimeEstado(); } else { imprimeEstado(); System.out.println("Seu mascote infelizmente morreu..."); } } }}

2) War um jogo de tabuleiro, lanado no Brasil pela Grow. O jogo disputado com um mapa do mundo dividido em 6 regies (Europa, sia, frica, Amrica do Norte, Amrica do Sul e Oceania). Cada jogador recebe uma carta com um determinado objetivo e quem completar primeiro o seu e declar-lo cumprido o vencedor, diz a Wikipdia.

Queremos fazer um jogo deste tipo. Para isso contamos com a sua ajuda!Os territrios so atores das batalhas que se desenrolam e eles tm as seguintes caractersticas marcantes: nome e poder (0 a 10).Os territrios s podem fazer duas coisas:receber reforoelutarcom outro territrio.Construa umaclasse em Javachamada Territrio que siga as especificaes:

a) os atributos so privativos.b) no construtor, tanto o nome como o poder so carregados por parmetros.c) h um mtodo de acesso para o poder.d) h um mtodo chamado incremento, que aumenta o poder em 1 ponto, mas este no pode passar do mximo (10).e) h um mtodo chamado decremento que reduz em 1 ponto o poder do territrio. Caso este chegue a zero, uma mensagem ser emitida dizendo que o mesmo foi conquistado.f) o mtodoreceberReforodeve aumentar o poder em 1 ponto (use o mtodo incremento do item d).g) o mtodolutarsimula uma batalha entre 2 territrios (h interao entre objetos!) da seguinte maneira: o mtodo recebe 2 parmetros inteiros que representam 2 jogadas de dados, uma do prprio territrio e a outra do oponente; quem conseguir valor maior vence, sendo que o perdedor sofre uma reduo de poder em 1 ponto (use o mtodo decremento do item e). Repare que necessrio um terceiro parmetro, a referncia ao objeto oponente (caso contrrio no poderia reduzir o poder deste objeto).

Nos exerccios abaixo, onde aparecer "Java", voc poder tambm usar C++/STL.1. Defina o que feito na etapa deAnlisee o que feito na etapa deProjetoao desenvolver software.2. Enumere as vantagens da abordagem Orientada a Objetos para o desenvolvimento de software.3. Qual o motivo de levantar Requisitos Funcionais para desenvolver software e o que faz parte de uma descrio de Requisitos Funcionais?4. Mostre como instanciar um objeto da classe ContaBancria em Java fornecendo o CPF (um string) do titular como argumento. Com o objeto resultante, faa um depsito de R$100,00 e imprima o saldo. Voc pode escolher nomes apropriados para os mtodos.5. Explique o que um Iterator em Java. Qual sua principal vantagem?6. Mostre a implementao de uma classe ContaBancria. Invente atributos e mtodos.7. Explique a diferena de funcionamento entre um "return" e um "throw". Seja especfico.8. Mostre, usando Java, como especializar uma classe ContaBancria para criar uma ContaCorrente e uma ContaPoupana.9. Explique as vantagens e desvantagens do polimorfismo. D exemplos.10. Explique a afirmao: "Em Java, o conceito de interfaces permite obter mais polimorfismo do que seria possvel com classes abstratas".11. Qual a diferena entre "herana de tipo" e "herana de implementao"?12. Quais so as vantagens e desvantagens de acoplamento forte entre objetos?13. Ao falar de boa programao, fala-se: "A decomposio deve esconder algo." O que poderia ser escondido, por exemplo?14. O que uma "responsabilidade de uma classe"? Por que queremos minimizar o nmero de responsabilidades? "Mais" no seria melhor?15. Por que modelar papeis (roles) atravs de herana inferior a model-los atravs de composio?