Programação orientada a objetos - java



Prof. Renato Filho 
SENAC
2014

Paradigma orientado a objetos



  • Herança
  • Polimorfismo

HERANÇA


Mecanismo para reutilização de código entre classes.
A classe que é herdada chama-se classe-mãe ou superclasse.
A classe herda chama-se classe-filha ou subclasse.

para que usar herança?




Por que usar herança?



SINTAXE da herança

A palavra extends define que uma classe herda outra.

public class Pessoa {   // atributos e métodos}
public class PessoaFisica extends Pessoa {}
public class PessoaJuridica extends Pessoa{}

Classes finais


Uma classe final não pode ser herdada, identificamos uma classes deste tipo pela presença da palavra-reservada final.

 public final class PessoaEstrangeira {} final public class PessoaEstrangeira {}

Controle de acesso


Nível de acesso Mesma classe Classes filhas Classes do mesmo pacote Classes de outro pacote
public sim sim sim sim
protected sim sim sim não
default sim não sim não
private sim não não não

como funciona a herança ao instanciar um objeto?


Ao se instanciar um objeto de uma classe filha todos os construtores da classe mais genérica até a mais específica são chamados.

Palavra reservada super


A palavra reservada super serve para enfatizar a chamada de algum método na classe mãe ou superclasse.

polimorfismo


Através do mecanismo de herança, um determinado objeto pode assumir diferentes formas, o que é chamado de polimorfismo de classe.
 Pessoa pessoa; pessoa = new PessoaFisica(); pessoa.abrirConta(); pessoa = new PessoaJuridica(); pessoa.abrirConta();

classes abstratas


"Uma classe abstrata é uma classe que é incompleta, ou é considerado incompleta." - Java Specification Language


Uma classe que não possui instâncias diretas.

 classes abstratas


Classes que possuem métodos abstratos.

Métodos abstratos - são declarados mas não implementados.

classes abstratas


Uma classe só deve ser abstrata  quando não se há interesse em especificar implementações de alguns métodos que pertençam a ela.

Ou

Herdar métodos abstratos e não se deseja implementar estes métodos  na subclasse.

classes abstratas


Usa-se a palavra chave abstract como modificador complementar na declaração da classe. 

public abstract class ClasseAbstrata {}

Interfaces

Uma interface é uma forma de implementar contratos para generalizar objetos com comportamentos comuns,  porém de forma mais flexível.

Não determina como nada ser feito, apenas o que deve ser feito. 

Interfaces em java

public interface Entregador {
public void entrega();
}

public class EntregadorDeJornal implements Entregador{  public void entrega(){ // vai de bike }}
public class EntregadorDePizza implements Entregador{  public void entrega(){ // vai de moto}}
public class EntregadorDeEncomendas implements Entregador{  public void entrega(){ //vai de carro };} public class EntregadorDeMudanca(){ public void entrega(){ //vai de caminhão };
}

Quando se usa isso?


Herança, Polimorfismo e Abstrações conceitos do paradigma orientado a objetos que o JAVA suporta a sua maneira.

São mais ligados a requisitos não funcionais, ou seja, o tipo de requisito que diz respeito mais a infraestrutura do projeto do que basicamente a sua finalidade e objetivos.

Pode ser usado na construção de APIs.
Made with Slides.com