Programação orientada a objetos - java
Prof. Renato Filho
SENAC
2014
Paradigma orientado a objetos
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?


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.