Beruflich Dokumente
Kultur Dokumente
1
2. Conceitos Básicos de Programação OO: Implementar as classes a seguir:
a) Classe: Deducao
• Atributos da classe Deducao:
descricao (string) → não pode receber um valor nulo ou string vazia;
valor (ponto-flutuante) → não pode receber um valor menor ou igual a zero.
• Para a classe Deducao implementar apenas um construtor recebendo valores para todos os atributos.
• Utilizar a técnica de encapsulamento apresentada no curso e implementar métodos get e set para todos os
atributos.
b) Classe: ImpostoDeRenda
• Atributos da classe ImpostoDeRenda:
nomeContribuinte (string) → não pode receber um valor nulo ou string vazia;
cpf (string) → não pode receber um valor nulo ou string vazia;
rendaAnual (ponto-flutuante) → não pode receber um valor menor ou igual a zero;
deducoes (Array de objetos do tipo Deducao) → não pode manter um array nulo.
• 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.
• Utilizar a técnica de encapsulamento apresentada no curso e implementar métodos get e set para todos os
atributos (ver observação abaixo).
• OBS: Não implementar o método set para o atributo deducoes da classe ImpostoDeRenda. O atributo
deducoes só será manipulado pelo método inserirDeducao detalhado a seguir.
• Implementar o método boolean inserirDeducao(Deducao dec) que insere um objeto do tipo Deducao no
array de deduções do ImpostoDeRenda. O método retorna verdadeiro se a dedução foi inserida no array
com sucesso e falso quando o array de deduções estiver cheio ou se o objeto dec passado como parâmetro
é nulo.
• Implementar o método double calculaImposto( ) que retorna o valor do imposto de renda do contribuinte
segundo a seguinte fórmula:
IR = ((rendaAnual – SOMA(deduções)) * Alíquota)
Renda Anual (R$) Alíquota
0,00 a 13968,00 0%
13968,01 a 27912,00 15 %
Acima de 27912,00 27,5 %
c) Implementar uma aplicação chamada AplicacaoImpostoDeRenda que instancia um objeto do tipo
ImpostoDeRenda, a partir do nome do contribuinte, do CPF e da renda anual informados pelo usuário. Em seguida,
o programa deve oferecer um menu para o usuário com as seguintes opções:
• Incluir dedução. O usuário deverá informar os dados da dedução a ser inserida na declaração de imposto.
• Imprimir resumo da declaração de imposto de renda. Nesta opção, o programa deve imprimir os valores de
todos os atributos do objeto ImpostoDeRenda instanciado (incluindo as deduções – se houverem), bem
como imprimir o valor do seu imposto de renda calculado.
3. Conceitos Básicos de Programação OO; Métodos Estáticos: Implementar as classes a seguir:
a) Classe: Data
• Atributos da classe Data:
2
dia (inteiro) → não pode receber um valor menor que 1 ou maior que 31;
mes (inteiro) → não pode receber um valor menor que 1 ou maior que 12;
ano (inteiro) → não pode receber um valor menor que 2000.
b) Classe: Departamento
• Atributos da classe Departamento:
codigo (inteiro) → não pode receber um valor menor ou igual a 0;
nome (string) → não pode receber um valor nulo ou string vazia.
c) Classe: Professor
• Atributos da classe Professor:
codigo (inteiro) → não pode receber um valor menor que 0;
nome (string) → não pode receber um valor nulo ou string vazia;
dataAdmissao (tipo Data) → não pode receber um valor nulo;
departamento (tipo Departamento) → não pode receber um valor nulo.
d) Classe: Disciplina
• Atributos da classe Disciplina:
nome (string) → não pode receber um valor nulo ou string vazia;
curso (string) → não pode receber um valor nulo ou string vazia;
professor (tipo Professor) → não pode receber um valor nulo;
quantidadeAlunos (inteiro) → não pode receber um valor menor que 30.
e) Para todas as classes especificadas acima:
• Implementar apenas um construtor recebendo valores para todos os atributos.
• Utilizar a técnica de encapsulamento apresentada no curso e implementar métodos get e set para todos os
atributos.
• Implementar o método String toString( ) que retorna uma representação String de um objeto da classe.
f) Implementar uma aplicação chamada AplicacaoDisciplina que instancia um objeto do tipo Disciplina, a partir de
dados informados pelo usuário.
• Na classe AplicacaoDisciplina implemente os seguintes métodos estáticos:
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.
• Em seguida, a aplicação deve oferecer um menu permitindo que o usuário escolha se deseja alterar os
dados gerais da disciplina, alterar o professor da disciplina ou imprimir os dados da disciplina.
4
5. Herança; Métodos Estáticos: Implementar as classes a seguir:
a) Especificações das classes Funcionário, Gerente e Vendedor:
• Atributos:
Numéricos: não podem receber valores menores
ou iguais a zero;
Strings: não podem receber valores nulos ou
strings vazias.
• Apenas um construtor para cada classe recebendo valores para todos os seus atributos;
• Utilizar a técnica de encapsulamento apresentada no curso e implementar os métodos get e set para todos
os atributos das classes.
b) Classe: CadastroFuncionarios
• Atributos da classe CadastroFuncionarios:
funcionarios (Array de objetos do tipo Funcionario) → não pode manter um array nulo.
quantFuncionarios (inteiro) → Representa a quantidade de funcionários cadastrados e não pode manter
um valor menor que zero.
• Implementar apenas um construtor default inicializando o atributo funcionarios com um array de tamanho
50 e o atributo quantFuncionarios com o valor 0.
• Utilizar a técnica de encapsulamento apresentada no curso e implementar apenas os métodos get para todos
os atributos (ver observação abaixo).
• OBS: Não implementar os métodos set para os atributos funcionarios e quantFuncionarios da classe
CadastroFuncionarios. Os atributos da classe CadastroFuncionarios serão manipulados pelos métodos
inserir e buscar detalhados a seguir.
• Métodos da classe CadastroFuncionarios:
boolean inserir(Funcionario func) que insere um objeto do tipo Funcionario no array de funcionários da classe
CadastroFuncionarios. Para cada funcionário inserido, o atributo quantFuncionarios é incrementado de 1. O método
retorna verdadeiro se o funcionário foi inserido com sucesso e falso em uma das três situações seguintes: (1) Quando o
array de funcionários estiver cheio; (2) Se o objeto func passado como parâmetro é nulo; ou, (3) Se já existe um
funcionário cadastrado com o mesmo código.
Funcionario buscar(int cod) que retorna o objeto do tipo Funcionario identificado pelo código informado como
parâmetro. Caso o objeto Funcionario não seja encontrado retornar o valor null.
c) Implementar uma aplicação chamada AplicacaoCadastroFuncionarios que cria um objeto do tipo CadastroFuncionarios e
oferece um menu com as opções: inserir funcionário, buscar funcionário, listar folha de pagamento e sair. Na opção de menu
inserir permita que o usuário decida se ele quer cadastrar um Gerente ou um Vendedor. Na opção de menu listar folha de
pagamento, o programa deve chamar um método estático, implementado na classe AplicacaoCadastroFuncionarios, que
imprime na tela a folha de pagamento da empresa de acordo com a tabela exemplo abaixo:
Folha de pagamento da empresa:
Nome: Salário: Função:
João R$ 2000,00 Gerente – Departamento: Compras
Maria R$ 2000,00 Gerente – Departamento: Vendas
Ana R$ 500,00 Vendedor – Comissão: 5 %
José R$ 500,00 Vendedor – Comissão: 5 %
Total da folha de pagamento: R$ 5000,00
Assinatura do método: void imprimeFolha(Funcionario[ ] func);