Crystian Leo Baseado no material da professora Karina Oliveira Quarta Lista de Exerccios Conceitos OO e Mtodos Estticos 1) Conceitos Bsicos de Programao OO: Implementar as classes a seguir: a) Classe: ContaCorrente. i) Atributos da classe ContaCorrente: numeroConta (inteiro) ! no pode receber um valor menor ou igual a zero; correntista (string) ! no pode receber um valor nulo ou string vazia; saldo (ponto-flutuante) ! no pode manter um valor menor que zero; ii) Implementar apenas um construtor recebendo valores para os atributos numeroConta e correntista da classe ContaCorrente. iii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar mtodos get e set para todos os atributos da classe (ver observao abaixo). iv) No implementar o mtodo set para o atributo saldo. O valor do atributo saldo s poder ser alterado atravs dos mtodos deposita, saque e transfere detalhados a seguir. v) Implementar o mtodo boolean deposita(double valor) que deposita um valor na conta corrente. O mtodo retorna verdadeiro se o depsito foi realizado com sucesso ou falso em caso contrrio. OBS: Verificar se o valor informado maior que zero. vi) Implementar o mtodo boolean saque(double valor) que realiza um saque na conta corrente. O mtodo retorna verdadeiro se o saque foi realizado com sucesso ou falso e caso contrrio. OBS: Verificar se o valor informado maior que zero e se h saldo suficiente para realizar o saque. i) Implementar o mtodo boolean transfere(double valor, ContaCorrente c2) que realiza uma transferncia de um valor da conta corrente para a conta corrente c2. O mtodo retorna verdadeiro se a transferncia foi realizada com sucesso ou falso em caso contrrio. OBS: Verificar se o valor informado maior que zero, se o objeto c2 no nulo e se h saldo suficiente para realizar a transferncia. b) Implementar uma aplicao chamada AplicacaoContas que instancia dois objetos do tipo ContaCorrente, a partir de dados informados pelo usurio. Em seguida, o programa deve oferecer um menu para o usurio com as seguintes opes: i) Imprimir dados de uma conta. Para esta opo o usurio dever informar o nmero da conta; ii) Realizar depsito. Para esta opo o usurio dever informar o nmero da conta e o valor para depsito; iii) Realizar saque. Para esta opo o usurio dever informar o nmero da conta e o valor para saque; iv) Realizar transferncia. Para esta opo o usurio dever informar o nmero da conta origem, o nmero da conta destino e o valor para transferncia; v) OBS: Para as opes de depsito, saque e transferncia, o programa deve imprimir na tela uma mensagem indicando se o depsito, o saque ou a transferncia foi realizado com sucesso ou no. 2) Conceitos Bsicos de Programao OO: Implementar as classes a seguir: a) Classe: DVD. i) Atributos da classe DVD: estado (booleano) ! receber o valor true quando o DVD estiver ligado, e false em caso contrrio. Defina, na classe DVD, duas constantes booleanas: LIGADO = true e DESLIGADO = false. operacaoEmExecucao (string) ! receber um dos valor pr-definidos (ver tabela abaixo) de acordo com a operao que estiver sendo realizada pelo DVD. OBS: definir constantes para manter os valores da tabela abaixo: Constante Valor (string) PARADO (string vazia) REPRODUZINDO REPRODUZINDO O DVD... EM_PAUSA REPRODUO DO DVD EM PAUSA... VOLTANDO VOLTANDO O DVD... AVANCANDO AVANANDO O DVD...
ii) Implementar apenas o construtor default que atribui o valor DESLIGADO para o atributo estado e o valor PARADO para o atributo operacaoEmExecucao. iii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar apenas mtodos get para todos os atributos. iv) OBS: Os mtodos set dos atributos estado e operacaoEmExecucao no sero implementados pois seus valores s podero ser alterados atravs dos mtodos liga, desliga, play, stop, pause, volta e avana detalhados a seguir. v) Implementar o mtodo void liga( ) que altera o estado do equipamento para LIGADO e atribui o valor PARADO para o atributo operacaoEmExecucao. vi) Implementar o mtodo void desliga( ) que altera o estado do equipamento para DESLIGADO e atribui o valor PARADO para o atributo operacaoEmExecucao. vii) Implementar o mtodo void play( ) que altera o valor do atributo operacaoEmExecucao para REPRODUZINDO. OBS: Este mtodo s pode ser executado se o estado do equipamento for LIGADO. viii) Implementar o mtodo void stop( ) que altera o valor do atributo operacaoEmExecucao para PARADO. OBS: Este mtodo s pode ser executado se o estado do equipamento for LIGADO. ix) Implementar o mtodo void pause( ) que altera o valor do atributo operacaoEmExecucao para EM_PAUSA. OBS: Este mtodo s pode ser executado se o estado do equipamento for LIGADO. x) Implementar o mtodo void volta( ) que altera o valor do atributo operacaoEmExecucao para VOLTANDO. OBS: Este mtodo s pode ser executado se o estado do equipamento for LIGADO. xi) Implementar o mtodo void avanca( ) que altera o valor do atributo operacaoEmExecucao para AVANCANDO. OBS: Este mtodo s pode ser executado se o estado do equipamento for LIGADO. b) Implementar uma aplicao chamada AplicacaoDVD que instancia um objeto do tipo DVD e oferece um menu com as opes: liga, desliga, play, stop, pause, volta, avana e sair, permitindo que o usurio possa manipular seu equipamento. OBS: Todas as vezes que o usurio selecionar uma opo do menu, deve-se imprimir na tela o estado e a operao corrente do equipamento. 3) Conceitos Bsicos de Programao OO: Implementar as classes a seguir: a) Classe: Deducao i) Atributos da classe Deducao: descricao (string) ! no pode receber um valor nulo ou string vazia; valor (ponto-flutuante) ! no pode receber um valor menor ou igual a zero. ii) Para a classe Deducao implementar apenas um construtor recebendo valores para todos os atributos. iii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar mtodos get e set para todos os atributos. b) Classe: ImpostoDeRenda i) Atributos da classe ImpostoDeRenda: nomeContribuinte (string) ! no pode receber um valor nulo ou string vazia; cpf (string) ! no pode receber um valor nulo ou string vazia; rendaAnual (ponto-flutuante) ! no pode receber um valor menor ou igual a zero; deducoes (Array de objetos do tipo Deducao) ! no pode manter um array nulo. ii) Para a classe ImpostoDeRenda implementar apenas um construtor recebendo valores para os atributos nomeContribuinte, cpf e rendaAnual. OBS: este construtor dever inicializar o atributo deducoes com um array de tamanho 3. iii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar mtodos get e set para todos os atributos (ver observao abaixo). iv) OBS: No implementar o mtodo set para o atributo deducoes da classe ImpostoDeRenda. O atributo deducoes s ser manipulado pelo mtodo inserirDeducao detalhado a seguir. v) Implementar o mtodo boolean inserirDeducao(Deducao dec) que insere um objeto do tipo Deducao no array de dedues do ImpostoDeRenda. O mtodo retorna verdadeiro se a deduo foi inserida no array com sucesso e falso quando o array de dedues estiver cheio ou se o objeto dec passado como parmetro nulo. vi) Implementar o mtodo double calculaImposto( ) que retorna o valor do imposto de renda do contribuinte segundo a seguinte frmula: IR = ((rendaAnual SOMA(dedues)) * Alquota) Renda Anual (R$) Alquota 0,00 a 13968,00 0% 13968,01 a 27912,00 15% Acima de 27912,00 27,5%
c) Implementar uma aplicao chamada AplicacaoImpostoDeRenda que instancia um objeto do tipo ImpostoDeRenda, a partir do nome do contribuinte, do CPF e da renda anual informados pelo usurio. Em seguida, o programa deve oferecer um menu para o usurio com as seguintes opes: i) Incluir deduo. O usurio dever informar os dados da deduo a ser inserida na declarao de imposto. ii) Imprimir resumo da declarao de imposto de renda. Nesta opo, o programa deve imprimir os valores de todos os atributos do objeto ImpostoDeRenda instanciado (incluindo as dedues se houverem), bem como imprimir o valor do seu imposto de renda calculado. 4) Conceitos bsicos de Programao OO; Mtodo toString( ): Implementar as classes a seguir: a) Classe: Pessoa i) Atributos da classe Pessoa: nome (string) ! no pode receber um valor nulo ou string vazia; idade (inteiro) ! no pode receber um valor menor que 0; filhos (Array de objetos do tipo Pessoa) ! no pode manter um array nulo. ii) Implementar apenas um construtor recebendo valores para os atributos nome e idade da classe Pessoa. OBS: este construtor dever inicializar o atributo filhos com um array de tamanho 3. iii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar mtodos get e set para todos os atributos (ver observao abaixo). iv) OBS: No implementar o mtodo set para o atributo filhos. O atributo filhos s ser manipulado pelo mtodo cadastrarFilho da classe Pessoa detalhado a seguir. v) O mtodo boolean cadastrarFilho(Pessoa filho) insere um objeto do tipo Pessoa no array de filhos da Pessoa. O mtodo retorna verdadeiro se o filho foi cadastrado com sucesso e falso quando o array de filhos estiver cheio ou se o objeto filho passado como parmetro nulo. vi) Na classe Pessoa, implementar o mtodo String toString( ) que retorna uma representao string de um objeto da classe Pessoa no seguinte formato:
"#$% &'(' )*+,-*.*/'( 012 3 04/4))5(*2 *+,(*+*( 6272) 2) 7'72) 72) .*-82) 72) .*-82) 9)4 82:;4(4+<= ',40') 2 02+4 74 /'7' :+ 72) .*-82)> b) Implementar uma aplicao chamada AplicacaoPessoa que instancia um objeto do tipo Pessoa, a partir do nome e da idade informados pelo usurio. Em seguida, o programa deve oferecer um menu para o usurio com as seguintes opes: i) Cadastrar filho. O usurio dever informar os dados do filho a ser cadastrado; ii) Imprimir dados da Pessoa. Nesta opo, o programa deve imprimir os valores de todos os atributos do objeto Pessoa instanciado fazendo uso do mtodo toString implementado. 5) Conceitos Bsicos de Programao OO; Mtodos Estticos: Implementar as classes a seguir: a) Classe: Data i) Atributos da classe Data: dia (inteiro) ! no pode receber um valor menor que 1 ou maior que 31; mes (inteiro) ! no pode receber um valor menor que 1 ou maior que 12; ano (inteiro) ! no pode receber um valor menor que 2000. b) Classe: Departamento i) Atributos da classe Departamento: codigo (inteiro) ! no pode receber um valor menor ou igual a 0; nome (string) ! no pode receber um valor nulo ou string vazia. c) Classe: Professor i) Atributos da classe Professor: codigo (inteiro) ! no pode receber um valor menor que 0; nome (string) ! no pode receber um valor nulo ou string vazia; dataAdmissao (tipo Data) ! no pode receber um valor nulo; departamento (tipo Departamento) ! no pode receber um valor nulo. d) Classe: Disciplina i) Atributos da classe Disciplina: nome (string) ! no pode receber um valor nulo ou string vazia; curso (string) ! no pode receber um valor nulo ou string vazia; professor (tipo Professor) ! no pode receber um valor nulo; quantidadeAlunos (inteiro) ! no pode receber um valor menor que 30. e) Para todas as classes especificadas acima: i) Implementar apenas um construtor recebendo valores para todos os atributos. ii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar mtodos get e set para todos os atributos. f) Implementar uma aplicao chamada AplicacaoDisciplina que instancia um objeto do tipo Disciplina, a partir de dados informados pelo usurio. i) Na classe AplicacaoDisciplina implemente os seguintes mtodos estticos: void alteraDadosGerais(Disciplina d). Que permite alterar o nome, o curso e a quantidade de alunos da disciplina; void alteraProfessor(Disciplina d). Que permite alterar o professor da disciplina; void imprime(Disciplina d). Que permite imprimir todos os dados da disciplina. ii) Em seguida, a aplicao deve oferecer um menu permitindo que o usurio escolha se deseja alterar os dados gerais da disciplina, alterar o professor da disciplina ou imprimir os dados da disciplina. 6) Conceitos bsicos de Programao OO: Implementar as classes a seguir: a) Classe: Livro i) Atributos da classe Livro: codigo (inteiro) ! no pode receber um valor menor que zero; titulo (string) ! no pode receber um valor nulo ou string vazia; autor (string) ! no pode receber um valor nulo ou string vazia. ii) Implementar apenas um construtor recebendo valores para todos os atributos. iii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar mtodos get e set para todos os atributos. b) Classe: CadastroLivros i) Atributos da classe CadastroLivros: livros (Array de objetos do tipo Livro) ! no pode manter um array nulo. quantLivros (inteiro) ! Representa a quantidade de livros cadastrados e no pode manter um valor menor que zero. ii) Implementar apenas um construtor default inicializando o atributo livros com um array de tamanho 100 e o atributo quantLivros com o valor 0. iii) Utilizar a tcnica de encapsulamento apresentada no curso e implementar apenas os mtodos get para todos os atributos (ver observao abaixo). iv) OBS: No implementar os mtodos set para os atributos livros e quantLivros da classe CadastroLivros. Os atributos da classe CadastroLivros sero manipulados pelos mtodos inserir, buscar, remover e alterar detalhados a seguir. v) Mtodos da classe CadastroLivros: boolean inserir(Livro liv) que insere um objeto do tipo Livro no array de livros da classe CadastroLivros. Para cada livro inserido, o atributo quantLivros incrementado de 1. O mtodo retorna verdadeiro se o livro foi inserido com sucesso e falso em uma das trs situaes seguintes: (1) Quando o array de livros estiver cheio; (2) Se o objeto liv passado como parmetro nulo; ou, (3) Se j existe um livro cadastrado com o mesmo cdigo. Livro buscar(int cod) que retorna o objeto do tipo Livro identificado pelo cdigo informado como parmetro. Caso o objeto Livro no seja encontrado retornar o valor null. boolean remover(int cod) que remove o objeto do tipo Livro identificado pelo cdigo informado como parmetro. Para cada livro removido, o atributo quantLivros decrementado de 1. O mtodo retorna verdadeiro se o livro foi removido com sucesso e falso em caso contrrio. boolean alterar(Livro novoLivro) que altera o objeto do tipo Livro identificado pelo cdigo do objeto Livro informado como parmetro. O mtodo retorna verdadeiro se o livro foi alterado com sucesso e falso em caso contrrio. A alterao de um livro consiste em trocar o objeto Livro, previamente cadastrado com o mesmo cdigo, pelo novo objeto Livro informado como parmetro. OBS: Verificar se o objeto novoLivro passado como parmetro no nulo. c) Implementar uma aplicao chamada AplicacaoCadastroLivros que cria um objeto do tipo CadastroLivros e oferece um menu com as opes: inserir, buscar, remover, alterar, listar todos os livros cadastrados e sair, permitindo que o usurio possa cadastrar, buscar, excluir, alterar e listar dados sobre livros.