Programa - PowerPoint PPT Presentation

1 / 45
About This Presentation
Title:

Programa

Description:

Programa o Orientada a Objetos: Reuso Alexandre C sar Muniz de Oliveira – PowerPoint PPT presentation

Number of Views:59
Avg rating:3.0/5.0
Slides: 46
Provided by: Alexand162
Category:
Tags: param | programa

less

Transcript and Presenter's Notes

Title: Programa


1
Programação Orientada a Objetos Reuso
  • Alexandre César Muniz de Oliveira

2
Introdução
  • Hierarquia de classes está associada a forma como
    se distribui conceitos (comportamentos) entre as
    unidades que compõem o sistema (classes)
  • O genérico reside em um nível superior enquanto
    que o específico nos inferiores
  • O genérico pode ser atribuído ao específico
    (truncado), mas o contrário não (inventado)
  • Descer a hierarquia retrata a diminuição do grau
    de abstração

3
Introdução
Boolean
Character
Croneable
Class
ClassLoader
Compiler
Double
Math
Object
Float
Legenda
Number

CLASSE CLASSE ABSTRATA INTERFACE extends imple
ments
Integer
Process

Long
Runtime
SecurityManager
4
Classes Abstratas
  • Servem de base para a construção de uma
    hierarquia de classes
  • Representam o comportamento tão genérico quanto
    possível (métodos genéricos)
  • Não admitem objetos concretos com seu
    comportamento (abstrato)

5
Classes Abstratas
  • Não podem ser instanciadas
  • Deixa a implementação mais específica de métodos
    nas subclasses que não forem abstratas
  • Facilita o polimorfismo com métodos sobrepostos
  • Herança de código preservando comportamento

6
Classes Abstratas
  • Define uma interface comum a todos em uma
    hierarquia
  • Permite a implementação progressiva de classes
  • Permite o acesso a
  • Construtores
  • Métodos public e protected
  • É utilizada a palavra reservada abstract para sua
    definição

7
Classes Abstratas
  • É obrigatório definir uma classe como abstrata se
    houver um ou mais métodos abstratos
  • Métodos abstratos não apresentam implementação
  • As subclasses de classes abstratas devem fornecer
    implementações para todos os métodos abstratos (a
    não ser que a subclasse também seja abstrata)

8
Classes Abstratas
  • public abstract class Mensagem
  • private String remetente
  • private int status
  • public abstract void play()
  • public abstract void testaItens()
  • public abstract void aplicaItens()
  • public abstract boolean noPadrao()
  • public String getRemetente()
  • return this.remetente
  • public String Formata()
  • this.testaItens()
  • if (this.noPadrao())
  • this.aplicaItens()

9
Exercícios
  • public abstract class Empregado
  • private String nome, sobrenome
  • public Empregado(String n, String s)
  • nome n sobrenomes
  • public String getNome()
  • return nome
  • public abstract double calcSalario()

10
Exercícios
  • public final class Gerente extends Empregado
  • private double salario
  • public Gerente(String n, String s)
  • super(n, s)
  • this.salario 1000.0
  • public double calcSalario()
  • return salario

11
Exercícios
12
Exercícios
  • public abstract class ContaAbstrata
  • private String numero
  • private double saldo
  • public ContaAbstrata(String numero)
  • this.numero numero
  • saldo 0.0
  • public void depositar(double valor)
  • saldo valor
  • public abstract void sacar(double valor)
  • protected void Saldo(double saldo)
  • this.saldo saldo
  • public double Saldo()
  • return saldo

13
Exercícios
  • public class Conta extends ContaAbstrata
  • public Conta(String numero)
  • super (numero)
  • public void sacar(double valor)
  • this.Saldo(Saldo() - valor)

14
Exercícios
  • public class Poupanca extends Conta
  • public Poupanca(String numero)
  • super (numero)
  • public void renderJuros(double taxa)
  • depositar( Saldo()taxa)

15
Exercícios
  • public class ContaEspecial extends Conta
  • public static final double TAXA 0.01
  • private double bonus
  • public ContaEspecial (String numero)
  • super (numero)
  • public void depositar(double valor)
  • bonus bonus (valor TAXA)
  • super.depositar(valor)

16
Exercícios
  • public class ContaImposto extends ContaAbstrata
  • public static final double TAXA 0.001
  • public ContaImposto (String numero)
  • super (numero)
  • public void sacar(double valor)
  • double imposto valor TAXA
  • double total valor imposto
  • this.Saldo( Saldo() total)

17
Exercícios
  • public class Programa
  • public static void main(String args)
  • ContaAbstrata conta1, conta2
  • conta1 new ContaEspecial(21.342-7)
  • conta2 new ContaImposto(21.987-8)
  • conta1.sacar(500)
  • conta2.sacar(500)
  • System.out.println(conta1. Saldo())
  • System.out.println(conta2. Saldo())

18
Interfaces
  • Herança múltipla pode causar conflitos de métodos
    iguais com implementações diferentes - Java não
    suporta
  • Uma interface pode ser definida como um
    protocolo que define o comportamento de um
    determinado objeto
  • Funciona como uma superclasse onde todos os
    métodos não estão implementados
  • Uma classe pode implementar vários serviços
    (múltiplas interfaces) causando um efeito similar
    à herança múltipla

19
Interfaces
  • Interfaces são também conhecidas como classes
    abstratas puras
  • Não têm construtores
  • Não contém atributos de dados (a não ser
    constantes estáticas public, static, final)
  • Todos os métodos são implicitamente abstratos
  • Provêm uma interface de serviços e comportamentos
  • Uma classe pode estender somente uma única
    classe, mas pode implementar várias interfaces

20
Interfaces
  • Implementar uma interface é semelhante à estender
    uma classe, porém a classe não herda
    comportamentos e sim os implementa
  • É possível chamar métodos que sejam membros da
    interface em qualquer objeto que implemente a
    interface

21
Interfaces
  • Exemplo um veículo pode acelerar, frear e virar
    para uma direção
  • public interface Veiculo
  • public freiar()
  • public acelerar()
  • public virar(direcao)
  • As classes caminhão, trator, carroça, ..., que
    implementam a interface veículo é que dizem como
    efetuar estas operações em cada classe
  • Pode-se projetar sistemas e serviços utilizando
    interfaces sem a preocupação com sua implementação

22
Interfaces
  • Provedora de serviços
  • Forte separação entre funcionalidade e
    implementação.
  • Embora parâmetros e tipos de retorno sejam
    obrigatórios.
  • Clientes interagem independentemente da
    implementação.
  • Mas os clientes podem escolher implementações
    alternativas.

23
Interfaces
24
Interfaces
class ParticipanteForum implements Leitor,
Programador String pensamento public String
lendo() return "Forum" public void
pensando(char ideias) pensamento new
String(ideias) public String digitando()
return pensamento // método exclusivo
desta classe private String aprendendo()
return "Java"
  • interface Leitor
  • String lendo()
  • interface Programador
  • void pensando(char ideias)
  • String digitando()

25
Exercícios
  • public interface Funcionario
  • public double calcularSalario()
  • public int bonus()
  • class Gerente implements Funcionario
  • private static final int SALARIO 40000
  • private static final int BONUS 0
  • public double calcularSalario()
  • return SALARIO
  • public int getBonus( ) return BONUS

26
Exercícios
  • class Programador implements Funcionario
  • private static final double SALARIO 50000
  • private static final int BONUS 10000
  • public double calcularSalario()
  • return SALARIO
  • public int getBonus() return BONUS

27
Exercícios
  • public class FolhaPagamento
  • public double calcularFolhaPagamento(Funcionario
    emp)
  • return emp.calcularSalario() emp.bonus()
  • public static void main(String arg)
  • FolhaPagamento fp new FolhaPagamento()
  • Programador prg new Programador()
  • Gerente mgr new Gerente()
  • System.out.println("Salário do Programador "
  • fp.calcularFolhaPagamento(prg))
  • System.out.println("Salário do Gerente "
  • fp.calcularFolhaPagamento(mgr))

28
Exercícios
  • public interface Transacao
  • public void depositar (double valor)
  • public boolean sacar (double valor)
  • public class Conta implements Transacao
  • private double saldo
  • private String numero
  • public void depositar (double valor) saldo
    valor
  • public boolean sacar (double valor)
  • if (saldo gt valor) saldo - valor return
    true
  • return false
  • public String toString () return "" numero
    "-" saldo

29
Exercícios
  • public class TesteConta
  • static void teste (Transacao t)
  • t.depositar(500)
  • public static void main(String args)
  • Transacao t
  • Conta c new Conta()
  • c.nomeia("Acmo e mia")
  • c.depositar(500)
  • System.out.println(c.toString())
  • c.sacar(200)
  • System.out.println(c.toString())
  • t c
  • teste(t)
  • System.out.println(((Conta) t).toString())

30
Reuso de código
Boolean
Character
Croneable
Class
ClassLoader
Compiler
Double
Math
Object
Float
Legenda
Number

CLASSE CLASSE ABSTRATA INTERFACE extends imple
ments
Integer
Process

Long
Runtime
SecurityManager
31
Reuso de código
ThreadGroup
Thread
Runnable
System
StringBuffer
Object
String
Legenda
Throwable

CLASSE CLASSE ABSTRATA INTERFACE extends imple
ments

ThreadDeath
Error java.lang-erros
Exception java.lang-exceptions
32
Reuso de código
  • Reuso da classe Exception

public class NoMatchingDetailsException extends
Exception private String key   public
NoMatchingDetailsException(String key)
this.key key   public String
getKey() return key
public String toString() return "No
details matching '" key "'
were found."
33
Reuso de código
  • class pilha // Pilha genérica
  • int tam,
  • topo
  • Object vetor // Vetor de elementos
    genéricos
  • pilha(int tam) // Construtor
  • this.tamtam
  • topo-1
  • vetornew Objecttam

34
Reuso de código
  • public void insere(Object elemento) // Insere
    um elemento na pilha
  • if(topolt(tam-1)) // Verifica se pilha não
    está cheia
  • topo
  • vetortopoelemento
  • else System.out.println(Pilha cheia!)
  • public Object retira() // Retira um elemento
    da pilha
  • if(topo!-1) // Verifica se pilha não está
    vazia
  • Object elementovetortopo
  • topo--
  • return(elemento)
  • else
  • System.out.println(Pilha vazia!)
  • return(null)

35
Reuso de código
  • class exemplo
  • public static void main(String args)
  • pilha pnew pilha(5)
  • p.insere(new String(Um elemento))
  • p.insere(new Float(1.5))
  • p.insere(new Integer(1))
  • p.insere(new Character(a))
  • p.insere(new pilha(10))
  • p.remove()
  • for(int i1iltp.tami)
  • System.out.println(p.remove())

36
Reuso de código
  • Reuso do código que implementa uma pilha para
    gerar uma classe fila
  • Fila.insere aproveita Pilha.insere
  • Fila.remove Precisa ser reescrito usando outro
    atributo chamado início que é incrementado quando
    um elemento é removido
  • Fila.vazia Precisa ser reescrita

37
Reuso de código
  • Sem herança
  • Modificador final
  • Classe String é vital para a normal operação da
    JVM
  • main (String args)
  • Sempre se pode confiar no comportamento de uma
    classe final

38
Reuso de código
39
Reuso de código
  • public class Database
  • public void addItem(Item theItem)
  • ...
  • Video video new Video(...)
  • CD cd new CD(...)
  • database.addItem(video)
  • database.addItem(cd)

40
Herança múltipla
  • Simulador

41
Herança múltipla
  • Simulador

42
Herança múltipla
  • Simulador com visualização separada da atuação

43
Herança múltipla
  public interface Actor / Realiza
o comportamento diário do ator. Transfere
o ator para updatedField se ele for
participar das etapas posteriores da simulação.
_at_param currentField O estado atual do
campo. _at_param location A posição do ator
no campo. _at_param updatedField O estado
atualizado do campo. / void act(Field
currentField, Location location,
Field updatedField)
44
Herança múltipla
public class Fox extends Animal implements
Drawable ...
public class Hunter implements Actor, Drawable
...
45
Projeto Livraria Virtual LeiaBem...
Write a Comment
User Comments (0)
About PowerShow.com