1. Escreva uma classe chamada Pessoa com os atributos: nome (tipo String), sexo (tipo char), idade (tipo int). Escreva agora outra classe chamada Amigo, que é uma pessoa (estende da classe Pessoa) de quem sabemos o dia de seu aniversário, atributo diaDoAniversario (tipo String). Use encapsulamento e forneça construtor padrão e construtor usando todos os atributos para as duas classes.
Resolução exercício herança classes Pessoa/Amigo
2. Escreva as seguintes classes:
a) Uma classe Pessoa com atributos nome (tipo String) e sobrenome (tipo String). Use encapsulamento. A classe Pessoa ainda deve ter o seguinte método:
Além disso, a classe deve possuir um construtor sem parâmetros e outro construtor que recebe como parâmetros o nome e o sobrenome da pessoa e armazena respectivamente nos atributos nome e sobrenome.
b) Uma subclasse de Pessoa, chamada Funcionario. A classe Funcionario deve ter os atributos matricula (tipo int) e salario (tipo double). Use encapsulamento. Considere a seguinte regra no método modificador setSalario:
Assinatura
Efeito
String getNomeCompleto()
Retorna a concatenação do atributo nome com o atributo sobrenome
Assinatura
Efeito
void setSalario(int valor)
Atribui ao atributo salário o valor recebido como parâmetro desde que este valor não seja negativo. Caso seja negativo, não faz nada.
Todo funcionario recebe seu salário em duas parcelas, sendo 60% na primeira parcela e 40% na segunda parcela. Assim, escreva os métodos:
Assinatura
Efeito
Assinatura
Efeito
double getSalarioPrimeiraParcela()
Retorna o valor da primeira parcela do salário (60%)
double getSalarioSegundaParcela()
Retorna o valor da segunda parcela do salário (40%)
c) Uma subclasse de Funcionario, chamada Professor. Todo professor recebe seu salário em uma única parcela. Assim, deve-se sobrescrever os métodos getSalarioPrimeiraParcela e getSalarioSegundaParcela.
Assinatura
Efeito
Assinatura
Efeito
double getSalarioPrimeiraParcela()
Retorna o valor integral do salário do professor
double getSalarioSegundaParcela()
Retorna o valor zero.
d) Uma classe Programa que, no método main, instancia os seguintes objetos:
Nome da variável: pessoa1 (tipo Pessoa)
nome: João
sobrenome: Medeiros
Nome da variável: pessoa2 (tipo Funcionario)
nome: Leonardo
sobrenome: Messias
salario: 1000.00
Nome da variável: pessoa3 (tipo Professor)
nome: Antônio
sobrenome: Silva
salario: 1500.00
Depois disso, executa as seguintes operações na seguinte ordem:
- Imprime o retorno do método getNomeCompleto para os 3 objetos.
- Imprime o retorno dos métodos getSalarioPrimeiraParcela e getSalarioSegundaParcela para os objetos pessoa2 e pessoa3.
3. Escreva uma classe Conta com atributo saldo (tipo double) e os seguintes métodos
Assinatura
Efeito
Assinatura
Efeito
void depositar(double valor)
Acrescentar o valor recebido como parâmetro ao atributo saldo
void sacar(double valor)
Subtrair o valor recebido como parâmetro do atributo saldo
O atributo saldo pode ser negativo. Escreva uma subclasse de Conta chamada Poupanca. A classe Poupanca deve ter um atributo chamado diaRendimento do tipo int que armazena o dia do mês em que ocorre o rendimento da poupança. Use encapsulamento nas duas classes. Forneça construtor que recebe valores para os atributos correspondentes para as duas classes. O atributo saldo da classe Poupanca não pode ser negativo. Use esta regra no método modificador do atributo saldo (método setSaldo):
Assinatura
Efeito
void setSaldo(double valor)
Atribui ao atributo saldo o valor recebido como parâmetro desde que este valor não seja negativo. Caso seja negativo, não faz nada.
Aplique esta mesma regra e redefina (por sobreposição) o método sacar para a classe Poupanca:
Assinatura
Efeito
void sacar(double valor)
Subtrair o valor recebido como parâmetro do atributo saldo desde que este valor não seja negativo. Caso seja negativo, não faz nada.
Escreva um programa com um método main que cria um objeto do tipo Conta e outro objeto do tipo Poupanca. Em seguida realiza um depósito na conta no valor de 10000 e depois um saque de 15000 da conta e um depósito na poupança no valor de 15000. Depois realize um saque de 20000 na poupança e imprima o saldo da conta e da poupança.
4. Escreva as seguintes classes:
Uma classe Equipamento com o atributo ligado (tipo boolean) e com os métodos:
Assinatura
Efeito
Assinatura
Efeito
void liga()
Torna o atributo ligado true
void desliga()
Torna atributo ligado false
Use encapsulamento.
Uma classe EquipamentoSonoro que herda as características de Equipamento e que possui os atributos volume (tipo int) e stereo (tipo boolean). Use encapsulamento. A classe deve possuir os métodos:
Assinatura
Efeito
Assinatura
Efeito
Assinatura
Efeito
void mono()
Torna o atributo stereo falso
void stereo()
Torna o atributo stereo verdadeiro
void liga()
Sobrescreve o método liga da superclasse. Este método deve chamar o método liga da superclasse e ajustar o atributo volume para 5
5. Quais são as regras para a utilização de sobrescrita de método? Forneça um exemplo em código Java.
6. Quais são as regras para a utilização de sobrecarga de método? Forneça um exemplo em código Java.