Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota

Slides:



Advertisements
Apresentações semelhantes
Herança, Polimorfismo e Classes Abstratas em Java
Advertisements

Java: Pacotes e Modificadores de Visibilidade
1 Orientação a Objetos: Herança Alcides Calsavara.
Java: Pacotes e Modificadores de Visibilidade
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Generalização, Especialização e Conceitos
Iniciação ao Java – Márcio F. Campos
Linguagem de Programação II
Wagner Santos C. de Jesus
Classes & Objectos em JAVA5
Métodos Programação II
Herança P. O. O. Prof. Ângela e Grace.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Análise e Projetos de Sistemas UML-Linguagem de Modelagem Unificada Modelo de Dados com UML Diagrama de Classes Professor: Armando Hage.
Introdução a programação (if669cc)
PLC – Introdução a POO Java
Aula Prática If669 – Introdução à Programação
JAVA Orientação a Objetos
Linguagem de Programação II
Classes, Objetos, Atributos e Métodos JAVA
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Orientação a Objetos e Java Graduação em Ciência da Computação
Professora Lucélia Oliveira
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
UML e Java, Introdução AB,20001 Diagrama de Classes UML e JAVA Problema Existem diversos tipos de contas bancárias. Todas as contas têm um atributo saldo.
Programação Orientada a Objetos: Reuso
Linguagem II Exceções.
Wagner Santos C. de Jesus
Orientação a Objetos Parte II
Aula Prática 1 Monitoria IP/CC (~if669). Verificação Dinâmica de Tipos Métodos de superclasses e subclasses: Uso de métodos de subclasses quando se é.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos usando Java
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Aula Prática 4 Monitoria IP/CC (~if669).
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Classes Abstratas e Interface
Herança e Polimorfismos
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Herança e Arquitetura em camadas
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Herança Modelagem e Programação Orientada a Objetos
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Orientação a Objetos com UML
Bruno Inojosa MCP .NET Framework
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Modificadores Programação II.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Herança.
Orientação a Objetos com UML. Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes Análise e Projeto OO com UML e Padrões|
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Visão Geral de Orientação a Objetos com UML Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.
Noções de projeto orientado a objetos - camadas Prof. Gustavo Wagner (alterações) Prof. Tiago Massoni (Slides originais) Desenvolvimento de Sistemas FATEC-PB.
Polimorfismo com Interfaces Pacotes em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota

Herança e Subtipos

Número Saldo ,32 Crédito Débito Objeto Poupança R. Juros

Número Saldo ,32 Crédito Débito Estados do Objeto Poupança Número Saldo ,32 Número Saldo ,32 creditar(20) R. Juros Creditar Debitar

Número Saldo ,32 Débito Estados do Objeto Poupança Número Saldo ,07 Número Saldo ,32 Creditar Debitar R. Juros(0.01) R. Juros CreditarDebitar

Classe de Poupanças: Assinatura public class PoupancaD { public PoupancaD (String n) {} public void creditar(double valor) {} public void debitar(double valor) {} public String getNumero() {} public double getSaldo() {} public void renderJuros(double taxa) {} }

Classe de Poupanças: Descrição public class PoupancaD { private String numero; private double saldo; public void creditar (double valor) { saldo = saldo + valor; } //... public void renderJuros(double taxa) { this.creditar(saldo * taxa); }

Classe de Bancos: Assinatura public class BancoD { public BancoD() {} public void cadastrarConta(Conta c) {} public void cadastrarPoupanca(PoupancaD p) {} public void creditarConta(String numero, double valor) {} public void creditarPoupanca(String numero, double valor) {} //... }

Classe de Bancos: Descrição public class BancoD { private Conta[] contas; private PoupancaD[] poupancas; private int indiceP, indiceC;

public void cadastrarConta(Conta c) { contas[indiceC] = c; indiceC = indiceC + 1; } public void cadastrarPoupanca(PoupancaD p) { poupancas[indiceP] = p; indiceP = indiceP + 1; }

private Conta procurarConta(String numero) { int i = 0; boolean achou = false; Conta resposta = null; while ((! achou) && (i < indiceC)) { if (contas[i].getNumero().equals(numero)) achou = true; else i = i + 1; } if (achou) resposta = contas[i]; return resposta; }

public void debitarConta(String numero, double valor) { Conta c; c = this.procurarConta(numero); if (c != null) c.debitar(valor); else System.out.println( "Conta inexistente!” ); } Cuidado com código de GUI misturado com classes de negócio

Problemas Duplicação desnecessária de código: –a definição de PoupançaD é uma simples extensão da definição de Conta –clientes de Conta que precisam trabalhar também com PoupançaD terão que ter código especial para manipular poupanças Falta refletir relação entre tipos do “mundo real”

Subtipos e Subclasses Poupança Conta

Herança Necessidade de estender classes –alterar classes já existentes e adicionar propriedades ou comportamentos para representar outra classe de objetos –criar uma hierarquia de classes que “herdam” propriedades e comportamentos de outra classe e definem novas propriedades e comportamentos

Subclasses Comportamento objetos da subclasse comportam-se como os objetos da superclasse Substituição objetos da subclasse podem ser usados no lugar de objetos da superclasse

Herança Reuso de Código a descrição da superclasse pode ser usada para definir a subclasse Extensibilidade algumas operações da superclasse podem ser redefinidas na subclasse

Classe de Poupanças: Assinatura public class Poupanca extends Conta { public Poupanca (String numero) {} public void renderJuros(double taxa) {} }

Classe de Poupanças: Descrição public class Poupanca extends Conta { public Poupanca (String numero) { super (numero); } public void renderJuros(double taxa) { this.creditar(this.getSaldo()*taxa); }

Extends subclasse extends superclasse Mecanismo para definição de herança e subtipos Herança simples: só se pode herdar uma classe por vez

Extends: Restrições Atributos e métodos privados são herdados, mas não podem ser acessados diretamente Qualificador protected : visibilidade restrita ao pacote e as subclasses de outros pacotes Construtores não são herdados Construtor default só é disponível se também for disponível na superclasse

Usando Poupanças... Poupanca poupanca; poupanca = new Poupanca(“ ”); poupanca.creditar(500.87); poupanca.debitar(45.00); System.out.println(poupanca.getSaldo());...

Subtipos: Substituição... Conta conta; conta = new Poupanca(“ ”); conta.creditar(500.87); conta.debitar(45.00); System.out.println(conta.getSaldo());...

Subtipos: Verificação Dinâmica com Casts... Conta conta; conta = new Poupanca(" ");... conta.renderJuros(0.01); conta.imprimirSaldo();... ((Poupanca) conta).renderJuros(0.01);

Substituição e Casts Nos contextos onde contas são usadas, podem-se usar poupanças Nos contextos onde poupanças são usadas, podem-se usar contas com o uso explícito de casts Casts correspondem à verificação dinâmica de tipos e podem gerar exceções (Cuidado!) Casts não fazem conversão de tipos

Classe Banco: Assinatura public class Banco { public Banco () {} public void cadastrar(Conta conta) {} public void creditar(String numero, double valor) {} public void debitar(String numero, double valor) {} public double getSaldo(String numero) {} public void transferir(String contaOrigem, String contaDestino, double valor) {} }

Subtipos: Substituição... Banco banco = new Banco(); banco.cadastrar(new Conta("123-4")); banco.cadastrar(new Poupanca(”567-8")); banco.creditar(”123-4",129.34); banco.transferir(”123-4",”567-8",9.34); System.out.print(banco.getSaldo(”567-8"));...

Exercício Modifique a classe Banco para que seja possível render juros de uma poupança. Isto é, adicione um novo método que rende os juros da poupança cujo número é parâmetro deste método; a taxa de juros corrente deve ser um atributo de Banco.