Exercicios de python orientado a objetos

Lista de exercícios de POO em e Com solução Esta foi retirada do site: https://wiki.python.org.br/listadeexercicios e implementada em e 1. Classe Bola: Crie uma classe que modele uma bola: a. Atributos: Cor, circunferência, material b. Métodos: trocacor e mostracor 2. Classe Quadrado: Crie uma classe que modele um quadrado: a. Atributos: Tamanho do lado b. Métodos: Mudar valor do Lado, Retornar valor do Lado e calcular Área; 3. Classe Retangulo: Crie uma classe que modele um retangulo: a. Atributos: LadoA, LadoB (ou Comprimento e Largura, ou Base e Altura, a escolher) b. Métodos: Mudar valor dos lados, Retornar valor dos lados, calcular Área e calcular Perímetro; c. Crie um programa que utilize esta classe. Ele deve pedir ao usuário que informe as medidades de um local. Depois, deve criar um objeto com as medidas e calcular a quantidade de pisos e de rodapés necessárias para o local. 4. Classe Pessoa: Crie uma classe que modele uma pessoa: a. Atributos: nome, idade, peso e altura b. Métodos: Envelhercer, engordar, emagrecer, crescer. Obs: Por padrão, a cada ano que nossa pessoa envelhece, sendo a idade dela menor que 21 anos, ela deve crescer 0,5 cm. 5. Classe Conta Corrente: Crie uma classe para implementar uma conta corrente. A classe deve possuir os seguintes atributos: número da conta, nome do correntista e saldo. Os métodos são os seguintes: alterarnome, depósito e saque; No construtor, saldo é opcional, com valor default zero e os demais atributos são obrigatórios. 6. Classe TV: Faça um programa que simule um televisor criando-o como um objeto. O usuário deve ser capaz de informar o número do canal e aumentar ou diminuir o volume. Certifique-se de que o número do canal e o nível do volume permanecem dentro de faixas válidas. 7. Classe Bichinho Virtual:Crie uma classe que modele um Tamagushi (Bichinho Eletrônico): a. Atributos: Nome, Fome, Saúde e Idade b. Métodos: Alterar Nome, Fome, Saúde e Idade; Retornar Nome, Fome, Saúde e Idade Obs: Existe mais uma informação que devemos levar em consideração, o Humor do nosso tamagushi, este humor é uma combinação entre os atributos Fome e Saúde, ou seja, um campo calculado, então não devemos criar um atributo para armazenar esta informação por que ela pode ser calculada a qualquer momento. 8. Classe Macaco: Desenvolva uma classe Macaco,que possua os atributos nome e bucho (estomago) e pelo menos os métodos comer(), verbucho() e digerir(). Faça um programa ou teste interativamente, criando pelo menos dois macacos, alimentando-os com pelo menos 3 alimentos diferentes e verificando o conteúdo do estomago a cada refeição. Experimente fazer com que um macaco coma o outro. É possível criar um macaco canibal? 9. Classe Ponto e Retangulo: Faça um programa completo utilizando funções e classes que: a. Possua uma classe chamada Ponto, com os atributos x e y. b. Possua uma classe chamada Retangulo, com os atributos largura e altura. c. Possua uma função para imprimir os valores da classe Ponto d. Possua uma função para encontrar o centro de um Retângulo. e. Você deve criar alguns objetos da classe Retangulo. f. Cada objeto deve ter um vértice de partida, por exemplo, o vértice inferior esquerdo do retângulo, que deve ser um objeto da classe Ponto. g. A função para encontrar o centro do retângulo deve retornar o valor para um objeto do tipo ponto que indique os valores de x e y para o centro do objeto. h. O valor do centro do objeto deve ser mostrado na tela

i. Crie um menu para alterar os valores do retângulo e imprimir o centro deste retângulo. 10. Classe Bomba de Combustível: Faça um programa completo utilizando classes e métodos que: a. Possua uma classe chamada bombacombustível, com no mínimo esses atributos: i. tipocombustivel. ii. valorlitro iii. quantidadecombustivel b. Possua no mínimo esses métodos: i. abastecerporvalor( ) método onde é informado o valor a ser abastecido e mostra a quantidade de litros que foi colocada no veículo ii. abastecerporlitro( ) método onde é informado a quantidade em litros de combustível e mostra o valor a ser pago pelo cliente. iii. alterarvalor( ) altera o valor do litro do combustível. iv. alterarcombustivel( ) altera o tipo do combustível. v. alterarquantidadecombustivel( ) altera a quantidade de combustível restante na bomba. OBS: Sempre que acontecer um abastecimento é necessário atualizar a quantidade de combustível total na bomba. 11. Classe carro: Implemente uma classe chamada Carro com as seguintes propriedades: a. Um veículo tem um certo consumo de combustível (medidos em km / litro) e uma certa quantidade de combustível no tanque. b. O consumo é especificado no construtor e o nível de combustível inicial é 0. c. Forneça um método andar( ) que simule o ato de dirigir o veículo por uma certa distância, reduzindo o nível de combustível no tanque de gasolina. d. Forneça um método obtergasolina( ), que retorna o nível atual de combustível. e. Forneça um método adicionargasolina( ), para abastecer o tanque. Exemplo de uso: f. meufusca = Carro(15); # 15 quilômetros por litro de combustível. g. meufusca.adicionargasolina(20); # abastece com 20 litros de combustível. h. meufusca.andar(100); # anda 100 quilômetros. meufusca.obtergasolina() # Imprime o combustível que resta no tanque. 12. Classe Conta de Investimento: Faça uma classe containvestimento que seja semelhante a classe contabancaria, com a diferença de que se adicione um atributo taxajuros. Forneça um construtor que configure tanto o saldo inicial como a taxa de juros. Forneça um método adicionejuros (sem parâmetro explícito) que adicione juros à conta. Escreva um programa que construa uma poupança com um saldo inicial de R$1000,00 e uma taxa de juros de 10%. Depois aplique o método adicionejuros() cinco vezes e imprime o saldo resultante. 13. Classe Funcionário: Implemente a classe Funcionário. Um empregado tem um nome (um string) e um salário(um double). Escreva um construtor com dois parâmetros (nome e salário) e métodos para devolver nome e salário. Escreva um pequeno programa que teste sua classe. 14. Aprimore a classe do exercício anterior para adicionar o método aumentarsalario (porcentualdeaumento) que aumente o salário do funcionário em uma certa porcentagem. o Exemplo de uso: o harry=funcionário("harry",25000) harry.aumentarsalario(10) 15. Classe Bichinho Virtual++: Melhore o programa do bichinho virtual, permitindo que o usuário especifique quanto de comida ele fornece ao bichinho e por quanto tempo ele brinca com o bichinho. Faça com que estes valores afetem quão rapidamente os níveis de fome e tédio caem. 16. Crie uma "porta escondida" no programa do programa do bichinho virtual que mostre os valores exatos dos atributos do objeto. Consiga isto mostrando o objeto quando uma opção secreta, não listada no menu, for informada na escolha do usuário. Dica: acrescente um método especial str() à classe Bichinho. 17. Crie uma Fazenda de Bichinhos instanciando vários objetos bichinho e mantendo o controle deles através de uma lista. Imite o funcionamento do programa básico, mas ao invés de exigis que o usuário tome conta de um único bichinho, exija que ele tome conta da fazenda inteira. Cada opção do menu deveria permitir que o usuário executasse uma ação para todos os bichinhos (alimentar todos os bichinhos, brincar com todos os bichinhos, ou ouvir a todos os bichinhos). Para tornar o programa mais interessante, dê para cada bichinho um nivel inicial aleatório de fome e tédio.

Solução em e 1. Classe Bola: Crie uma classe que modele uma bola: a. Atributos: Cor, circunferência, material b. Métodos: trocacor e mostracor class Bola(): def init (self, cor, circunferencia, material): self.cor = cor self.circunferencia = circunferencia self.material = material def trocacor(self, cor): self.cor = cor def mostracor(self): return self.cor b = Bola("azul", 10, "couro") print(b.mostracor()) b.trocacor("vermelha") print(b.mostracor()) public class Bola private String cor; private int circunferencia; private String material; public Bola(String cor, int circunferencia, String material) super(); this.cor = cor; this.circunferencia = circunferencia; this.material = material; public void trocacor(string cor) this.cor = cor; public String mostracor() return this.cor; public static void main(string[] args) Bola b = new Bola("azul", 10, "couro"); System.out.println(b.mostraCor()); b.trocacor("vermelha"); System.out.println(b.mostraCor());

2. Classe Quadrado: Crie uma classe que modele um quadrado: a. Atributos: Tamanho do lado b. Métodos: Mudar valor do Lado, Retornar valor do Lado e calcular Área class Quadrado(): def init (self, lado): self.setlado(lado) public class Quadrado private float lado; def setlado(self, lado): self.lado = lado def getlado(self): return self.lado def area(self): return self.lado * self.lado q = Quadrado(5) print(q.area()) public Quadrado(float lado) setlado(lado); public void setlado(float lado) this.lado = lado; public float getlado() return lado; public float area() return this.lado * this.lado; public static void main(string[] args) Quadrado q = new Quadrado(5); System.out.println(q.area());

3. Classe Retangulo: Crie uma classe que modele um retangulo: a. Atributos: LadoA, LadoB (ou Comprimento e Largura, ou Base e Altura, a escolher) b. Métodos: Mudar valor dos lados, Retornar valor dos lados, calcular Área e calcular Perímetro; c. Crie um programa que utilize esta classe. Ele deve pedir ao usuário que informe as medidades de um local. Depois, deve criar um objeto com as medidas e calcular a quantidade de pisos e de rodapés necessárias para o local. class Retangulo(): def init (self, comprimento, largura): self.setcomprimento(comprimento) self.setlargura(largura) def setcomprimento(self, comprimento): self.comprimento = comprimento def setlargura(self, largura): self.largura = largura def getcomprimento(self): return self.comprimento def getlargura(self): return self.largura def area(self): return self.comprimento * self.largura def perimetro(self): return (2 * self.comprimento) + (2 * self.largura) comp = float(input('informe o valor do comprimento: ')) larg = float(input('informe o valor da largura: ')) r = Retangulo(comp,larg) print("a area é: ", r.area()) print("o perimetro é: ", r.perimetro()) import java.util.scanner; public class Retangulo private float comprimento; private float largura; public Retangulo(float comprimento, float largura) this.comprimento = comprimento; this.largura = largura; public void setcomprimento(float comprimento) this.comprimento = comprimento; public void setlargura(float largura) this.largura = largura; public float getcomprimento() return comprimento; public float getlargura() return largura; public float area() return getcomprimento() * getlargura(); public float perimetro() return (2 * getcomprimento()) + (2 * getlargura()); public static void main(string[] args) float comp, larg; Scanner teclado = new Scanner(System.in); System.out.println("Informe o valor do comprimento: "); comp = teclado.nextfloat(); System.out.println("Informe o valor da largura: "); larg = teclado.nextfloat(); Retangulo r = new Retangulo(comp,larg); System.out.println("A área é: " + r.area()); System.out.println("O perimetro é: " + r.perimetro());

4. Classe Pessoa: Crie uma classe que modele uma pessoa: a. Atributos: nome, idade, peso e altura b. Métodos: Envelhercer, engordar, emagrecer, crescer. Obs: Por padrão, a cada ano que nossa pessoa envelhece, sendo a idade dela menor que 21 anos, ela deve crescer 0,5 cm. class Pessoa(): def init (self, nome, idade, peso, altura): self.idade = idade self.peso = peso self.altura = altura def envelhecer(self, anos): self.idade += anos if (self.idade < 21): self.crescer(0.5) def engordar(self, peso): self.peso += peso def emagrecer(self, peso): self.peso -= peso def crescer(self, altura): self.altura += altura a = Pessoa("Amanda", 18, 75, 180) print(vars(a)) a.engordar(5) print(vars(a)) a.emagrecer(10) print(vars(a)) a.crescer(3) print(vars(a)) a.envelhecer(1) print(vars(a)) public class Pessoa private String nome; private int idade; private float peso; private float altura; public Pessoa(String nome, int idade, float peso, float altura) this.idade = idade; this.peso = peso; this.altura = altura; public void envelhecer(int anos) this.idade += anos; if (this.idade < 21) crescer(0.5f); public void engordar(float peso) this.peso += peso; public void emagrecer(float peso) this.peso -= peso; public void crescer(float altura) this.altura += altura; @Override public String tostring() return "Pessoa [nome=" + nome + ", idade=" + idade + ", peso=" + peso + ", altura=" + altura + "]"; public static void main(string[] args) Pessoa a = new Pessoa("Amanda", 18, 75, 180); System.out.println(a.toString()); a.engordar(5); System.out.println(a.toString()); a.emagrecer(10); System.out.println(a.toString()); a.crescer(3); System.out.println(a.toString()); a.envelhecer(1); System.out.println(a.toString());

5. Classe Conta Corrente: Crie uma classe para implementar uma conta corrente. A classe deve possuir os seguintes atributos: número da conta, nome do correntista e saldo. Os métodos são os seguintes: alterarnome, depósito e saque; No construtor, saldo é opcional, com valor default zero e os demais atributos são obrigatórios. class Conta(): def init (self, numero, nome, saldo=0): self.numero = numero self.saldo = saldo def setnome(self, nome): def deposito(self, valor): self.saldo += valor def saque(self, valor): if (self.saldo >= valor): self.saldo -= valor j = Conta(123, "José", 100.0) print(vars(j)) j.setnome("pedro") j.deposito(50) print(vars(j)) j.saque(110) print(vars(j)) public class Conta private int numero; private String nome; private float saldo; public Conta(int numero, String nome, float saldo) this.numero = numero; this.saldo = saldo; public Conta(int numero, String nome) this.numero = numero; this.saldo = 0.0f; public void setnome(string nome) public void deposito(float valor) this.saldo += valor; public void saque(float valor) if (this.saldo >= valor) this.saldo -= valor; @Override public String tostring() return "Conta [numero=" + numero + ", nome=" + nome + ", saldo=" + saldo + "]"; public static void main(string[] args) Conta j = new Conta(123, "José", 100.0f); System.out.println(j.toString()); j.setnome("pedro"); j.deposito(50); System.out.println(j.toString()); j.saque(110); System.out.println(j.toString());

6. Classe TV: Faça um programa que simule um televisor criando-o como um objeto. O usuário deve ser capaz de informar o número do canal e aumentar ou diminuir o volume. Certifique-se de que o número do canal e o nível do volume permanecem dentro de faixas válidas. class Tv(): def init (self): self.setcanal(0) self.volume = 0 def setcanal(self, canal): if (canal > 0) and (canal <= 100): self.canal = canal def aumentarvolume(self): if (self.volume < 100): self.volume += 1 def diminuirvolume(self): if (self.volume > 0): self.volume -= 1 tv = Tv() print(vars(tv)) tv.setcanal(56) print(vars(tv)) tv.aumentarvolume() print(vars(tv)) tv.diminuirvolume() print(vars(tv)) public class Tv private int volume; private int canal; public Tv() this.volume = 0; setcanal(56); @Override public String tostring() return "Tv [volume=" + volume + ", canal=" + canal + "]"; public void setcanal(int canal) if ((canal > 0 ) && (canal <= 100)) this.canal = canal; public void aumentarvolume() if (volume < 100) this.volume++; public void diminuirvolume() if (volume > 0) this.volume--; public static void main(string[] args) Tv tv = new Tv(); System.out.println(tv.toString()); tv.setcanal(56); System.out.println(tv.toString()); tv.aumentarvolume(); System.out.println(tv.toString()); tv.diminuirvolume(); System.out.println(tv.toString());

7. Classe Bichinho Virtual: Crie uma classe que modele um Tamagushi (Bichinho Eletrônico): a. Atributos: Nome, Fome, Saúde e Idade b. Métodos: Alterar Nome, Fome, Saúde e Idade; Retornar Nome, Fome, Saúde e Idade c. Obs: Existe mais uma informação que devemos levar em consideração, o Humor do nosso tamagushi, este humor é uma combinação entre os atributos Fome e Saúde, ou seja, um campo calculado, então não devemos criar um atributo para armazenar esta informação por que ela pode ser calculada a qualquer momento. class Bichinho(): def init (self, nome, fome, saude, idade): self.setnome(nome) self.setfome(fome) self.setsaude(saude) self.setidade(idade) def setnome(self, nome): def setfome(self, fome): self.fome = fome def setsaude(self, saude): self.saude = saude def setidade(self, idade): self.idade = idade def getnome(self): return self.nome def getfome(self): return self.fome def getsaude(self): return self.saude def getidade(self, idade): return self.idade def humor(self): return self.getfome() * self.getsaude() b = Bichinho("Tamagoshi", 5,5,5) print(b.humor()) public class Bichinho private String nome; private int fome; private int saude; private int idade; public Bichinho(String nome, int fome, int saude, int idade) this.fome = fome; this.saude = saude; this.idade = idade; public String getnome() return nome; public void setnome(string nome) public int getfome() return fome; public void setfome(int fome) this.fome = fome; public int getsaude() return saude; public void setsaude(int saude) this.saude = saude; public int getidade() return idade; public void setidade(int idade) this.idade = idade; public float humor() return getfome() * getsaude(); public static void main(string[] args) Bichinho b = new Bichinho("Tamagoshi", 5, 5, 5); System.out.println(b.humor());

8. Classe Macaco: Desenvolva uma classe Macaco, que possua os atributos nome e bucho (estomago) e pelo menos os métodos comer(), verbucho() e digerir(). Faça um programa ou teste interativamente, criando pelo menos dois macacos, alimentando-os com pelo menos 3 alimentos diferentes e verificando o conteúdo do estomago a cada refeição. Experimente fazer com que um macaco coma o outro. É possível criar um macaco canibal? class Macaco(): def init (self, nome): self.bucho = [] def comer(self, comida): self.bucho.append(comida) def verbucho(self): print ("Bucho: ", self.bucho) def digerir(self): if (len(self.bucho) > 0): self.bucho.pop(0) m1 = Macaco("Macaco 1") m2 = Macaco("Macaco 2") m1.comer("maçã") m1.verbucho() m1.comer("banana") m1.verbucho() m1.comer("abacaxi") m1.verbucho() m1.digerir() m1.verbucho() m2.comer("maca") m2.comer("banana") m2.comer(m1) m2.verbucho() import java.util.arraylist; public class Macaco private String nome; private ArrayList<Object> bucho = new ArrayList(); public Macaco(String nome) public void comer(object ob) bucho.add(ob); public void verbucho() for(object i : bucho) System.out.println("Bucho: " + i.tostring()); public void digerir() if (!bucho.isempty()) bucho.remove(bucho.size()-1); public static void main(string[] args) Macaco m1 = new Macaco("Macaco 1"); Macaco m2 = new Macaco("Macaco 1"); m1.comer("maçã"); m1.verbucho(); m1.comer("banana"); m1.verbucho(); m1.comer("abacaxi"); m1.verbucho(); m1.digerir(); m1.verbucho(); m2.comer("maça"); m2.comer("banana"); m2.comer(m1); m2.verbucho();

9. Classe Ponto e Retangulo: Faça um programa completo utilizando funções e classes que: a. Possua uma classe chamada Ponto, com os atributos x e y. b. Possua uma classe chamada Retangulo, com os atributos largura e altura. c. Possua uma função para imprimir os valores da classe Ponto d. Possua uma função para encontrar o centro de um Retângulo. e. Você deve criar alguns objetos da classe Retangulo. f. Cada objeto deve ter um vértice de partida, por exemplo, o vértice inferior esquerdo do retângulo, que deve ser um objeto da classe Ponto. g. A função para encontrar o centro do retângulo deve retornar o valor para um objeto do tipo ponto que indique os valores de x e y para o centro do objeto. h. O valor do centro do objeto deve ser mostrado na tela i. Crie um menu para alterar os valores do retângulo e imprimir o centro deste retângulo. class Ponto: def init (self, x, y): self.x = x self.y = y class Retangulo: def init (self, canto1, canto2): self.canto1 = canto1 self.canto2 = canto2 def centro(self): x_centro = (self.canto1.x + self.canto2.x) / 2.0 y_centro = (self.canto1.y + self.canto2.y) / 2.0 return "X=" + str(x_centro) + "Y=" + str(y_centro) x1 = float(input("entre a coordenada x do canto inferior esquerdo: ")) y1 = float(input("entre a coordenada y do canto inferior esquerdo: ")) canto1 = Ponto(x1, y1) x2 = float(input("entre a coordenada x do canto superior direito: ")) y2 = float(input("entre a coordenada y do canto superior direito: ")) canto2 = Ponto(x2, y2) ret = Retangulo(canto1, canto2) print ("Ponto central e %s" % ret.centro()) class Ponto private float x; private float y; public Ponto(float x, float y) this.x = x; this.y = y; public float getx() return x; public float gety() return y; public class Retangulo1 Ponto c1, c2; float x_centro, y_centro; public Retangulo1(Ponto canto1, Ponto canto2) c1 = canto1; c2 = canto2; public String centro() x_centro = (c1.getx() + c2.getx())/2; y_centro = (c1.gety() + c2.gety())/2; return "X = " + x_centro + "Y =" + y_centro; @Override public String tostring() return "Retangulo1 [c1=" + c1 + ", c2=" + c2 + ", x_centro=" + x_centro + ", y_centro=" + y_centro + "]"; public static void main(string[] args) Ponto p1 = new Ponto(10,20); Ponto p2 = new Ponto(20,50); Retangulo1 r = new Retangulo1(p1,p2); System.out.println(r.centro());

10. Classe Bomba de Combustível: Faça um programa completo utilizando classes e métodos que: a. Possua uma classe chamada bombacombustível, com no mínimo esses atributos: i. tipocombustivel. ii. valorlitro iii. quantidadecombustivel b. Possua no mínimo esses métodos: i. abastecerporvalor( ) método onde é informado o valor a ser abastecido e mostra a quantidade de litros que foi colocada no veículo ii. abastecerporlitro( ) método onde é informado a quantidade em litros de combustível e mostra o valor a ser pago pelo cliente. iii. alterarvalor( ) altera o valor do litro do combustível. iv. alterarcombustivel( ) altera o tipo do combustível. v. alterarquantidadecombustivel( ) altera a quantidade de combustível restante na bomba. OBS: Sempre que acontecer um abastecimento é necessário atualizar a quantidade de combustível total na bomba class BombaCombustivel: def init (self, tipocombustivel, valorlitro, quantidadecombustivel): self.tipocombustivel = tipocombustivel self.valorlitro = valorlitro self.quantidadecombustivel = quantidadecombustivel def alterarvalor(self, valorlitro): self.valorlitro = valorlitro def alterarcombustivel(self, tipocombustivel): self.tipocombustivel = tipocombustivel def alterarquantidadecombustivel(self, quantidadecombustivel): self.quantidadecombustivel = quantidadecombustivel def abastecerporvalor(self, valor): temp = valor/self.valorlitro self.alterarquantidadecombustivel(self.quantidadecombustivel - temp) return temp def abastecerporlitro(self, qtd): temp2 = qtd * self.valorlitro self.alterarquantidadecombustivel(self.quantidadecombustivel - qtd) return temp2 a1 = BombaCombustivel("Gasolina", 5, 500) print(a1.abastecerporvalor(150)) print(a1.quantidadecombustivel) print(a1.abastecerporlitro(30)) print(a1.quantidadecombustivel) public class BombaCombustivel private String tipocombustivel; private float valorlitro; private float quantidadecombustivel; public BombaCombustivel(String tipocombustivel, float valorlitro, float quantidadecombustivel) this.tipocombustivel = tipocombustivel; this.valorlitro = valorlitro; this.quantidadecombustivel = quantidadecombustivel; public void alterarvalor(float valorlitro) this.valorlitro = valorlitro; public void alterarcombustivel(string tipocombustivel) this.tipocombustivel = tipocombustivel; public void alterarquantidadecombustivel(float quantidadecombustivel) this.quantidadecombustivel = quantidadecombustivel; public float abastecerporvalor(float valor) float temp; temp = valor/valorlitro; alterarquantidadecombustivel(this.quantidadecombustivel - temp); return temp; public float abastecerporlitro(float qtd) float temp2; temp2 = qtd * valorlitro; alterarquantidadecombustivel(this.quantidadecombustivel - qtd); return temp2; public static void main(string[] args) BombaCombustivel a1 = new BombaCombustivel("Gasolina", 5, 500); System.out.println(a1.abastecerPorValor(150)); System.out.println(a1.quantidadeCombustivel); System.out.println(a1.abastecerPorLitro(30)); System.out.println(a1.quantidadeCombustivel);

11. Classe carro: Implemente uma classe chamada Carro com as seguintes propriedades: a. Um veículo tem um certo consumo de combustível (medidos em km / litro) e uma certa quantidade de combustível no tanque. b. O consumo é especificado no construtor e o nível de combustível inicial é 0. c. Forneça um método andar( ) que simule o ato de dirigir o veículo por uma certa distância, reduzindo o nível de combustível no tanque de gasolina. d. Forneça um método obtergasolina( ), que retorna o nível atual de combustível. e. Forneça um método adicionargasolina( ), para abastecer o tanque. Exemplo de uso: f. meufusca = Carro(15); # 15 quilômetros por litro de combustível. g. meufusca.adicionargasolina(20); # abastece com 20 litros de combustível. h. meufusca.andar(100); # anda 100 quilômetros. meufusca.obtergasolina() # Imprime o combustível que resta no tanque. class Carro: def init (self, consumo): self.consumo = consumo self.nivelcombustivel = 0 public class Carro private float consumo; private float nivelcombustivel; def andar(self, distancia): temp = distancia/self.consumo self.nivelcombustivel -= temp public Carro(float consumo) this.consumo = consumo; def obtergasolina(self): return self.nivelcombustivel def adicionargasolina(self, qtd): self.nivelcombustivel += qtd meufusca = Carro(8) meufusca.adicionargasolina(50) meufusca.andar(300) print(vars(meufusca)) print(meufusca.obtergasolina()) public void andar(float distancia) float temp; temp = distancia/this.consumo; this.nivelcombustivel -= temp; public float obtergasolina() return this.nivelcombustivel; public void adicionargasolina(float qtd) this.nivelcombustivel += qtd; @Override public String tostring() return "Carro [consumo=" + consumo + ", nivelcombustivel=" + nivelcombustivel + "]"; public static void main(string[] args) Carro meufusca = new Carro(8); meufusca.adicionargasolina(50); System.out.println(meuFusca.toString()); meufusca.andar(300); System.out.println(meuFusca.toString());

12. Classe Conta de Investimento: Faça uma classe containvestimento que seja semelhante a classe contabancaria, com a diferença de que se adicione um atributo taxajuros. Forneça um construtor que configure tanto o saldo inicial como a taxa de juros. Forneça um método adicionejuros (sem parâmetro explícito) que adicione juros à conta. Escreva um programa que construa uma poupança com um saldo inicial de R$1000,00 e uma taxa de juros de 10%. Depois aplique o método adicionejuros() cinco vezes e imprime o saldo resultante. class Conta(): def init (self, numero, nome, saldo=0): self.numero = numero self.saldo = saldo def setnome(self, nome): def deposito(self, valor): self.saldo += valor def saque(self, valor): if (self.saldo >= valor): self.saldo -= valor class containvestimento(conta): def init (self, numero, nome, saldo, taxajuros): Conta. init (self, numero, nome, saldo) self.taxajuros = taxajuros def adicionejuros(self): self.saldo += (self.saldo * self.taxajuros/100) poupanca = containvestimento(123, "Jose", 1000, 10) print(vars(poupanca)) poupanca.adicionejuros() poupanca.adicionejuros() poupanca.adicionejuros() poupanca.adicionejuros() poupanca.adicionejuros() print(vars(poupanca)) public class Conta private int numero; private String nome; protected float saldo; public Conta(int numero, String nome, float saldo) this.numero = numero; this.saldo = saldo; public Conta(int numero, String nome) this.numero = numero; this.saldo = 0.0f; public void setnome(string nome) public void deposito(float valor) this.saldo += valor; public void saque(float valor) if (this.saldo >= valor) this.saldo -= valor; @Override public String tostring() return "Conta [numero=" + numero + ", nome=" + nome + ", saldo=" + saldo + "]";

public class ContaInvestimento extends Conta private float taxajuros; public ContaInvestimento(int numero, String nome, float saldo, float taxajuros) super(numero, nome, saldo); this.taxajuros = taxajuros; public void adicionejuros() this.saldo += (this.saldo * this.taxajuros/100); @Override public String tostring() return "ContaInvestimento [taxajuros=" + taxajuros + ", saldo=" + saldo + "]"; public static void main(string[] args) ContaInvestimento poupanca = new ContaInvestimento(123, "Jose", 1000, 10); System.out.println(poupanca.toString()); poupanca.adicionejuros(); poupanca.adicionejuros(); poupanca.adicionejuros(); poupanca.adicionejuros(); poupanca.adicionejuros(); System.out.println(poupanca.toString());

13. Classe Funcionário: Implemente a classe Funcionário. Um empregado tem um nome (um string) e um salário(um double). Escreva um construtor com dois parâmetros (nome e salário) e métodos para devolver nome e salário. Escreva um pequeno programa que teste sua classe. class Funcionario(): def init (self, nome, salario): self.salario = salario public class Funcionario private String nome; private float salario; def getnome(self): return self.nome def getsalario(self): return self.salario Func = Funcionario("Jose", 1200) print("nome: ", Func.getNome(), ", Salario", Func.getSalario()) public Funcionario(String nome, float salario) this.salario = salario; public String getnome() return nome; public float getsalario() return salario; public static void main(string[] args) Funcionario Func = new Funcionario("Jose", 1200); System.out.println("Nome: " + Func.getNome() + ", Salário: " + Func.getSalario());

14. Aprimore a classe do exercício anterior para adicionar o método aumentarsalario (porcentualdeaumento) que aumente o salário do funcionário em uma certa porcentagem. Exemplo de uso: harry=funcionário("harry",25000) harry.aumentarsalario(10) class Funcionario(): def init (self, nome, salario): self.salario = salario def getnome(self): return self.nome def getsalario(self): return self.salario public class Funcionario private String nome; private float salario; public Funcionario(String nome, float salario) this.salario = salario; def aumentarsalario(self, porcentagemdeaumento=0): self.salario += self.salario * (porcentagemdeaumento)/100 Func = Funcionario("Jose", 1200) print("nome: ", Func.getNome(), ", Salario", Func.getSalario()) Func.aumentarSalario(10) print("nome: ", Func.getNome(), ", Salario", Func.getSalario()) public String getnome() return nome; public float getsalario() return salario; public void aumentarsalario(float porcentagemdeaumento) this.salario += this.salario * (porcentagemdeaumento)/100; public static void main(string[] args) Funcionario Func = new Funcionario("Jose", 1200); System.out.println("Nome: " + Func.getNome() + ", Salário: " + Func.getSalario()); Func.aumentarSalario(10); System.out.println("Nome: " + Func.getNome() + ", Salário: " + Func.getSalario());

15. Classe Bichinho Virtual++: Melhore o programa do bichinho virtual, permitindo que o usuário especifique quanto de comida ele fornece ao bichinho e por quanto tempo ele brinca com o bichinho. Faça com que estes valores afetem quão rapidamente os níveis de fome e tédio caem. class Bichinho(): def init (self, nome, fome, saude, idade): self.setnome(nome) self.setfome(fome) self.setsaude(saude) self.setidade(idade) def setnome(self, nome): def setfome(self, fome): self.fome = fome def setsaude(self, saude): self.saude = saude def setidade(self, idade): self.idade = idade def getnome(self): return self.nome def getfome(self): return self.fome def getsaude(self): return self.saude def getidade(self, idade): return self.idade def humor(self): return self.getfome() * self.getsaude() def alimenta(self, quantidade): if (quantidade >= 0) and (quantidade <= 100): self.fome -= self.fome * (quantidade /100.0) def brincar(self, quantidade): if (quantidade >= 0) and (quantidade <= 100): self.saude += self.saude * (quantidade / 100.0) b = Bichinho("Tamagoshi", 5,5,5) print(b.humor()) b.alimenta(30) print(b.humor()) b.brincar(20) print(b.humor()) public class Bichinho private String nome; private float fome; private float saude; private float idade; public Bichinho(String nome, float fome, float saude, float idade) this.fome = fome; this.saude = saude; this.idade = idade; public String getnome() return nome; public void setnome(string nome) public float getfome() return fome; public void setfome(float fome) this.fome = fome; public float getsaude() return saude; public void setsaude(float saude) this.saude = saude; public float getidade() return idade; public void setidade(float idade) this.idade = idade; public float humor() return getfome() * getsaude(); public void alimenta(float quantidade) if ((quantidade >= 0) && (quantidade <= 100)) this.fome = this.fome - (this.fome * (quantidade/100.0f)); public void brincar(int quantidade) if ((quantidade >= 0) && (quantidade <= 100)) this.saude += this.saude * (quantidade/100.0f); public static void main(string[] args) Bichinho b = new Bichinho("Tamagoshi", 5, 5, 5); System.out.println(b.humor()); b.alimenta(30); System.out.println(b.humor()); b.brincar(20); System.out.println(b.humor());

16. Crie uma "porta escondida" no programa do programa do bichinho virtual que mostre os valores exatos dos atributos do objeto. Consiga isto mostrando o objeto quando uma opção secreta, não listada no menu, for informada na escolha do usuário. Dica: acrescente um método especial str() à classe Bichinho. class Bichinho(): def init (self, nome, fome, saude, idade): self.setnome(nome) self.setfome(fome) self.setsaude(saude) self.setidade(idade) def setnome(self, nome): def setfome(self, fome): self.fome = fome def setsaude(self, saude): self.saude = saude def setidade(self, idade): self.idade = idade def getnome(self): return self.nome def getfome(self): return self.fome def getsaude(self): return self.saude def getidade(self): return self.idade def humor(self): return self.getfome() * self.getsaude() def alimenta(self, quantidade): if (quantidade >= 0) and (quantidade <= 100): self.fome -= self.fome * (quantidade /100.0) def brincar(self, quantidade): if (quantidade >= 0) and (quantidade <= 100): self.saude += self.saude * (quantidade / 100.0) public class Bichinho private String nome; private float fome; private float saude; private float idade; public Bichinho(String nome, float fome, float saude, float idade) this.fome = fome; this.saude = saude; this.idade = idade; public String getnome() return nome; public void setnome(string nome) public float getfome() return fome; public void setfome(float fome) this.fome = fome; public float getsaude() return saude; public void setsaude(float saude) this.saude = saude; public float getidade() return idade; public void setidade(float idade) this.idade = idade; public float humor() return getfome() * getsaude(); public void alimenta(float quantidade) if ((quantidade >= 0) && (quantidade <= 100)) this.fome = this.fome - (this.fome * (quantidade/100.0f)); public void brincar(int quantidade) if ((quantidade >= 0) && (quantidade <= 100)) this.saude += this.saude * (quantidade/100.0f); public String str() return "Bichinho [nome=" + nome + ", fome=" + fome + ", saude=" + saude + ", idade=" + idade + "]"; def str(self): return ("Nome: " + str(self.getnome()) + ", Fome: " + str(self.getfome()) + ", Saude: " + str(self.getsaude()) + ", Idade: " + str(self.getidade())) b = Bichinho("Tamagoshi", 5,5,5) print(b.humor()) b.alimenta(30) print(b.humor()) b.brincar(20) print(b.humor()) print(b.str()) public static void main(string[] args) Bichinho b = new Bichinho("Tamagoshi", 5, 5, 5); System.out.println(b.humor()); b.alimenta(30); System.out.println(b.humor()); b.brincar(20); System.out.println(b.humor()); System.out.println(b.str());

17. Crie uma Fazenda de Bichinhos instanciando vários objetos bichinho e mantendo o controle deles através de uma lista. Imite o funcionamento do programa básico, mas ao invés de exigis que o usuário tome conta de um único bichinho, exija que ele tome conta da fazenda inteira. Cada opção do menu deveria permitir que o usuário executasse uma ação para todos os bichinhos (alimentar todos os bichinhos, brincar com todos os bichinhos, ou ouvir a todos os bichinhos). Para tornar o programa mais interessante, dê para cada bichinho um nivel inicial aleatório de fome e tédio. from random import randint class Bichinho(): def init (self, nome, fome, saude, idade): self.setnome(nome) self.setfome(fome) self.setsaude(saude) self.setidade(idade) import java.util.arraylist; import java.util.random; import java.util.scanner; public class Bichinho private String nome; private float fome; private float saude; private float idade; def setnome(self, nome): def setfome(self, fome): self.fome = fome def setsaude(self, saude): self.saude = saude def setidade(self, idade): self.idade = idade def getnome(self): return self.nome def getfome(self): return self.fome def getsaude(self): return self.saude def getidade(self): return self.idade def humor(self): return self.getfome() * self.getsaude() def alimenta(self, quantidade): if (quantidade >= 0) and (quantidade <= 100): self.fome -= self.fome * (quantidade /100.0) def brincar(self, quantidade): if (quantidade >= 0) and (quantidade <= 100): self.saude += self.saude * (quantidade / 100.0) public Bichinho(String nome, float fome, float saude, float idade) this.fome = fome; this.saude = saude; this.idade = idade; public String getnome() return nome; public void setnome(string nome) public float getfome() return fome; public void setfome(float fome) this.fome = fome; public float getsaude() return saude; public void setsaude(float saude) this.saude = saude; public float getidade() return idade; public void setidade(float idade) this.idade = idade; public float humor() return getfome() * getsaude(); public void alimenta(float quantidade)

def str(self): return ("Nome: " + str(self.getnome()) + ", Fome: " + str(self.getfome()) + ", Saude: " + str(self.getsaude()) + ", Idade: " + str(self.getidade())) a = Bichinho("Cachorro", randint(0,10),randint(0,10),5) b = Bichinho("Gato", randint(0,10),randint(0,10),5) c = Bichinho("Coelho", randint(0,10),randint(0,10),5) fazenda = [] fazenda.append(a) fazenda.append(b) fazenda.append(c) while True: print(":::: FAZENDA ::::") print("1. Alimentar todos os bichos") print("2. Brincar com todos os bichos") print("3. Ouvir todos os bichos") print("4. Sair") op = int(input()) if (op == 1): alimento = int(input("alimentar todos com: ")) for i in range(3): fazenda[i].alimenta(alimento) elif(op ==2): brinquedo = int(input("brincar todos com: ")) for i in range(3): fazenda[i].brincar(brinquedo) elif(op == 3): for i in range(3): print(fazenda[i].getnome() + ": " + str(fazenda[i].humor())) elif(op == 4): break if ((quantidade >= 0) && (quantidade <= 100)) this.fome = this.fome - (this.fome * (quantidade/100.0f)); public void brincar(int quantidade) if ((quantidade >= 0) && (quantidade <= 100)) this.saude += this.saude * (quantidade/100.0f); public String str() return "Bichinho [nome=" + nome + ", fome=" + fome + ", saude=" + saude + ", idade=" + idade + "]"; public static void main(string[] args) Random aleatorio = new Random(); Bichinho a = new Bichinho("Cachorro", aleatorio.nextint(10), aleatorio.nextint(10), 5); Bichinho b = new Bichinho("Gato", aleatorio.nextint(10), aleatorio.nextint(10), 5); Bichinho c = new Bichinho("Coelho", aleatorio.nextint(10), aleatorio.nextint(10), 5); ArrayList<Bichinho> Fazenda = new ArrayList(); Fazenda.add(a); Fazenda.add(b); Fazenda.add(c); Scanner teclado = new Scanner(System.in); int op; int alimento, brinquedo; while(true) System.out.println(":::: FAZENDA ::::"); System.out.println("1. Alimentar todos os bichos"); System.out.println("2. Brincar com todos os bichos"); System.out.println("3. Ouvir todos os bichos"); System.out.println("4. Sair"); op = teclado.nextint(); if (op == 1) System.out.println("Alimentar todos com: "); alimento = teclado.nextint(); for(int i = 0; i<=2; i++) Fazenda.get(i).alimenta(alimento);

else if(op ==2) System.out.println("Brincar com todos com: "); brinquedo = teclado.nextint(); for(int i = 0; i<=2; i++) Fazenda.get(i).brincar(brinquedo); else if(op == 3) for(int i = 0; i<=2; i++) System.out.println(Fazenda.get(i).str()); System.out.println(Fazenda.get(i).getNome() + ": " + Fazenda.get(i).humor()); else if (op == 4) break;