Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

03/09/12 
1 
Programação Orientada a 
Objetos - POO 
Prof. Emerson Freire 
POO – Conceitos 
POLIMORFISMO 
  Como o próprio nome sugere  Várias Formas. 
  Possibilita a criação de objetos contendo métodos de mesmo 
nome, porém com execuções diferentes. 
  Permite utilizar, portanto, um único nome para uma determinada 
ação e compartilhar com toda a hierarquia dos objetos. 
  Enquanto a herança é um processo de especialização, o 
polimorfismo é um processo de generalização. 
  O polimorfismo pode ser implementado por intermédio da 
sobrescrita e sobrecarga de métodos. 
 
03/09/12 
2 
POO – Conceitos 
POLIMORFISMO 
  Sobrescrita de métodos (OVERRIDING): 
  Um método da superclasse é redefinido nas subclasses para 
modificar seu comportamento, mas mantendo a assinatura original 
  Exemplo: 
Uma superclasse Classe Animal, pode gerar objetos do tipo Peixe, 
Pássaro e Anfíbio. Todos se movem, portanto, possuem um método 
public void mover(); 
Porém, cada animal pode mover-se de maneira diferente, exigindo 
uma implementação diferente para cada um, embora com o 
mesmo nome: public void mover(). 
 
POO – Conceitos 
POLIMORFISMO 
  Sobrecarga de métodos (OVERLOADING): 
  Um mesmo método pode ser definido diversas vezes, sendo que 
cada um executa uma ação específica conforme os parâmetros 
recebidos. Sendo assim, as assinaturas serão diferentes. 
  Exemplo: 
Uma superclasse Soma pode realizar esta operação para números 
inteiros e números ponto-flutuante. Portanto, é possível criar um 
método chamado Soma que receberá parâmetros diferentes; 
public void Soma( int valor1, int valor2); 
public void Soma( double valor1, double valor2); 
 
 
03/09/12 
3 
POO – Conceitos 
Override x Overloading 
@Override: uma anotação em 
Java. São metadados que iniciam 
por @. Permitem ao compilador, 
neste caso, saber que o método 
seguinte é sobrescrito. 
POO – Conceitos 
Referência implícita super 
  super: Utilizado para referenciar os atributos e métodos da 
classe pai (ou superclasse). 
  Exemplo: 
  Uma classe Pessoa possui o atributo rg. 
  A classe Funcionario é herdeira de Pessoa, portanto: 
  System.out.println( super.rg);  imprimirá o valor 
armazenado no atributo rg da superclasse. 
!
!
03/09/12 
4 
POO – Conceitos 
O modificador final na declaração de classes 
  Quando o modificador final aparece na declaração da classe, 
significa que aquela classe não pode ser estendida, ou seja, 
herdada. 
  Exemplo: 
  final class ContaCorrente { 
 //corpo da classe; 
 } 
 
Caso haja a tentativa de estendê-la, ocorrerá um erro: 
Class ContaCorrenteDiferente extends ContaCorrente{ 
} 
 
à Cannot inherit from final… 
 
POO – Conceitos 
O modificador final na declaração de métodos 
  Quando o modificador final aparece na declaração de 
métodos, significa que aquele método não poderá ser 
sobrescrito (override) em classes filhas. 
  Exemplo: 
  public final void Quadrado (int a, int b) { 
 //corpo do método; 
 } 
 
Caso haja a tentativa de override um erro: 
Public void Quadrado (int a, int b) { 
} 
 
à Cannot override; … overridden method is final… 
 
03/09/12 
5 
POO – Conceitos 
Classes Abstratas e Concretas 
  Uma classe abstrata é aquela que NÃO permite a criação de 
Objetos; (usa-se o modificador abstract) 
  Uma classe concreta, ao contrário, permite a geração de instâncias; 
 
  Usa-se classes abstratas, geralmente, quando uma classe serve 
apenas de base para outra. 
  Por exemplo: Classe Pessoa. 
  public abstract class Pessoa{ 
 } 
Pessoa meuFuncionario = new Pessoa(); à ERRO! 
 
PessoaFuncionario meuFuncionario = new PessoaFuncionario(); à OK! 
 
Portanto, PessoaFuncionario é subclasse de Pessoa. 
POO – Conceitos 
Modificador abstract em métodos 
  O modificador abstract também pode ser utilizado em métodos, 
gerando métodos abstratos. 
  Quando um método é apenas definido na superclasse e implementado 
nas classes herdeiras: 
  Exemplo: 
  A Classe Veículo possui o método acelerar(), porém um objeto 
veículo Automóvel pode acelerar de maneira diferente de um 
objeto veículo Avião. Portanto na classe Veículo temos apenas: 
  public abstract void acelerar(); 
  E a implementação é feita nas subclasses: 
  Classe Automovel: 
 @override 
 public void acelerar(){ velocidade++;} 
  Classe Aviao: 
 @override 
 public void acelerar(){ velocidade++ * 100;} 
03/09/12 
6 
JAVA – noções básicas 
Exercício 
  No processo de informatização de uma prefeitura está sendo requerido o cálculo 
dos impostos locais. Pode-se distinguir duas categorias de habitação: habitações 
para uso profissional e residenciais (habitação individual), sendo que o imposto 
será calculado de maneira diferente para cada categoria. As Habitações 
Profissionais e Habitações Individuais possuem algumas características comuns, 
como: proprietário, endereço, área de construção. O imposto é calculado na 
seguinte base: 2R por metro quadrado, onde R é o valor de base em reais do 
imposto (p.ex. R$ 2,00). O cálculo do imposto de uma habitação individual 
calcula-se em função da área construída, do número de cômodos e da presença ou 
não de uma piscina. Acima de 5 cômodos adiciona-se R$ 100,00. Em caso de 
haver piscina, também haverá um acréscimo de R$ 200,00. Já o imposto de uma 
habitação profissional levará em consideração o número de empregados, sendo que 
existirá um acréscimo de R$ 500,00 a cada 10 empregados. Exiba os impostos 
separadamente e no total. Faça a implementação em Java utilizando o máximo dos 
conceitos POO vistos até aqui: classes, objetos, encapsulamento, herança, 
polimorfismo, etc. Caso necessário, crie novas funcionalidades no sistema.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina