Buscar

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

Prof. Emerson Paduan: emerson@paduan.pro.br
Programação 
Orientada a Objetos
Herança
Prof. Emerson Paduan: emerson@paduan.pro.br
Um dos conceitos principais na Orientação a Objetos é o conceito de herança.
Herança é um mecanismo que permite que características comuns a diversas 
classes sejam derivadas de uma classe base, ou superclasse. 
A herança é uma forma de reutilização de software em que novas classes são 
criadas a partir das classes existentes, herdando seus atributos e 
comportamentos e adicionando novos recursos que as novas classes exigem.
Herança
Prof. Emerson Paduan: emerson@paduan.pro.br
A partir de uma classe base, outras classes podem ser especificadas. 
Cada classe derivada ou subclasse apresenta as características (estrutura e 
métodos) da superclasse e acrescenta a elas o que for definido de 
particularidade para ela.
Cada subclasse se torna uma candidata a ser uma superclasse para alguma 
subclasse futura.
Herança
Prof. Emerson Paduan: emerson@paduan.pro.br
Pessoa
Estudante Professor
é um (a)
Herança
Prof. Emerson Paduan: emerson@paduan.pro.br
Pessoa
nome
endereco
telefone
Estudante
ra
curso
anoGraduacao
Professor
 titulo
 instituicao
 salario
Herança
Prof. Emerson Paduan: emerson@paduan.pro.br
extends - indica que a criação de uma nova classe que herda de
uma classe existente 
public class SuperClass {
//corpo da superclasse...
} 
public class SubClass extends SuperClass{
//corpo da subclasse...
} 
Herança
Prof. Emerson Paduan: emerson@paduan.pro.br
Em um relacionamento de herança:
– é necessário apenas indicar as diferenças entre a subclasse e superclasse 
→ o reuso é automático
– geralmente é necessário redefinir métodos → um dos primeiros motivos para 
usar herança
Herança
Prof. Emerson Paduan: emerson@paduan.pro.br
Palavra-chave super refere-se a uma superclasse.
✔ indica a chamada ao construtor da superclasse
✔ se a superclasse não contiver o construtor padrão e o construtor da subclasse 
não chamar nenhum outro construtor da superclasse explicitamente, o 
compilador java vai informar um erro.
✔ também é utilizada para invocar métodos da superclasse dentro da 
subclasse
super
Prof. Emerson Paduan: emerson@paduan.pro.br
Sabe-se que o gerente recebe um bônus adicional de 20% quando um aumento de salário é efetivado. 
Os demais funcionários recebem o aumento de acordo com o percentual informado. 
Exemplo
Prof. Emerson Paduan: emerson@paduan.pro.br
Exemplo
Prof. Emerson Paduan: emerson@paduan.pro.br
Exemplo
Prof. Emerson Paduan: emerson@paduan.pro.br
Exemplo
Prof. Emerson Paduan: emerson@paduan.pro.br
Reescrita do método aumentarSalario()
– Para funcionar diferente para gerentes e funcionários comuns (gerente recebe 
um bônus adicional de 20%);
– Esse método não tem acesso direto às variáveis de instância privados da 
superclasse, ou seja, esse método não pode alterar diretamente a variável de 
instância salario, embora cada objeto Gerente tenha uma variável de instância 
salario
– Modificador de acesso protected – dá acesso direto aos atributos da 
superclasse pela subclasse!
Polimorfismo
Prof. Emerson Paduan: emerson@paduan.pro.br
Uma das regras fundamentais da herança:
um método definido em uma subclasse com o mesmo nome e mesma 
lista de parâmetros que um método em uma de suas classes antecessoras 
oculta o método da classe ancestral a partir da subclasse.
Polimorfismo
Prof. Emerson Paduan: emerson@paduan.pro.br
Modificadores de acesso indicam o tipo de acesso que pode ser feito para os 
atributos e também para os métodos de um objeto.
Modificadores
Prof. Emerson Paduan: emerson@paduan.pro.br
Let’s code!
Prof. Emerson Paduan: emerson@paduan.pro.br
• Construir uma classe para representar um funcionário com os seguintes dados: 
nome, horas trabalhadas e valor pago por hora trabalhada. Implementar um 
método para calcular e retornar o salário final de um funcionário e um método 
imprimir.
• Criar uma subclasse para representar um funcionário sênior. A diferença entre 
eles é que um funcionário sênior recebe um bônus a cada 10 horas trabalhadas. 
Sobrescrever os métodos calcularSalario() e imprimir().
• Criar uma classe AppFuncionario para instanciar objetos da classe Funcionario 
e Senior e realizar chamada a seus métodos.
 
Exercício 1
Prof. Emerson Paduan: emerson@paduan.pro.br
Utilizando as classes do exercício anterior, criar a Classe para Gerenciar 
funcionário que contenha como atributo um ArrayList de Funcionarios.
Implementar os seguintes métodos:
– add() : para armazenar os funcionários no ArrayList;
– listar() : retorna uma String com os dados de todos os funcionários;
– listarSalario(): retorna uma String contendo o nome e o salário de todos os 
funcionários cadastrados no ArrayList;
Exercício 2
Prof. Emerson Paduan: emerson@paduan.pro.br
– totalDeFuncionariosSenior() : retorna um inteiro indicando o total de funcionários 
senior cadastrados no ArrayList.
Para diferenciar os objetos utilizar instanceOf
– funcionarioComMaiorBonus(): retorna o nome e o bonus calculado do funcionário 
Senior que recebeu o maior bônus (calculado) entre todos os cadastrados no 
ArrayList;
– listarPorFaixaSalarial() : método que recebe uma faixa salarial inicial e final e 
retorna o nome e o salário dos funcionários dentro da faixa informada;
Exercício 2 - continuação
Prof. Emerson Paduan: emerson@paduan.pro.br
Criar uma aplicação com o seguinte menu de opções:
Exercício 2 - continuação
Prof. Emerson Paduan: emerson@paduan.pro.br
Lição de casa...
Prof. Emerson Paduan: emerson@paduan.pro.br
Criar a classe Media com os atributos valor1 e valor2.
Implementar o método calcularMedia() para calcular a média aritmética entre os 
dois valores; Implementar o método imprimir que retorna uma String com os dados 
da classe Media;
Criar a classe MediaPonderada que herda da classe Media. Os atributos dessa 
classe são: peso1 e peso2.
Reescrever o método calcularMedia() considerando a média ponderada:
MP = (valor1 * peso1) + (valor2 * peso2) / (peso1 + peso2)
Exercício 3
Prof. Emerson Paduan: emerson@paduan.pro.br
Implementar uma aplicação com o seguinte menu de
opções:
1 – Média aritmética
2 – Média Ponderada
3 – Sair
Validações:
– Valor1 e valor2 não podem ser menor que 0 e nem maior que 10;
– A soma dos pesos não pode ser 0 ou menor que zero e não pode ser maior que 
10;
Exercício 3
Prof. Emerson Paduan: emerson@paduan.pro.br
Faça um programa que calcule a área de uma figura geométrica.
Aceite quatro tipos de figura geométrica: 
quadrado, 
retângulo, 
triângulo e
círculo.
Use herança e polimorfismo.
Exercício 4
Prof. Emerson Paduan: emerson@paduan.pro.br
Crie uma classe chamada Invoice que possa ser utilizado por uma loja de suprimentos de informática para 
representar uma fatura de um item vendido na loja. Uma fatura deve incluir as seguintes informações 
como atributos:
• o número do item faturado,
• a descrição do item,
• a quantidade comprada do item e
• o preço unitário do item.
Sua classe deve ter um construtor que inicialize os quatro atributos. Se a quantidade não for positiva, ela 
deve ser configurada como 0. Se o preço por item não for positivo ele deve ser configurado como 0.0. 
Forneça um método set e um método get para cada variável de instância. Além disso, forneça um método 
chamado getInvoiceAmount que calcula o valor da fatura (isso é, multiplica a quantidade pelo preço por 
item) e depois retorna o valor como um double. 
Escreva um aplicativo (main) de teste que demonstra as capacidades da classe Invoice.
Exercício 5