Conceitos Básicos do Modelo de Objetos
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Conceitos Básicos do Modelo de Objetos (1/2)
�Objetos�Atributos (Variáveis ou Campos)�Operações (Métodos e Mensagens)�Classes
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
O Que é um Objeto?
� Uma representação de uma coisa do mundo real, como uma conta bancária, uma pessoa, um produto, um veículo, etc, cujo objetivo é suportar a construção de sistemas computacionais
� Uma entidade bem definida, presente em um programa em execução, que apresenta propriedades e a qual podem ser aplicadas operações.
� Objetos ocupam espaço na memória no computador, assim como um processo (programa em execução)
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Objetos em um Sistema Bancário
Banco
Contas
Conta
Débito Crédito Débito
Transações
Conta
Débito Débito
Transações
Conta
Credito Crédito
Transações
Cliente
Cliente
Cliente
Cliente
Clientes
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
debite()
credite()
emiteExtrato()
Saldo=100
Métodos de interagir como objeto
Atributos do objeto
Representação Gráfica de um Objeto
Numero=1
Uma Conta Bancária, cujo número é 1, e com saldo de R$ 100
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Outras Representações para Objetos
debite()credite()
emiteExtrato()
saldonumero
float debite(float)
float credite(float)
void emiteExtrato()
saldotransações
numero
c1: ContaBancaria
saldo = 100
float debite(float)float credite(float)void emiteExtrato()
numero = 1
c2: ContaBancaria
saldo = 100numero = 1
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Atributos de um Objeto
�Os atributos de um objeto são armazenados no interior destes, e nomeados através de VARIÁVEIS ou CAMPOS
�Os campos de um objeto contém�Valores primitivos (int, float, etc.) ou�Referências a outros objetos
�O valor dos campos de um objeto em um determinado momento forma seu ESTADO
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Transacao[]
Objetos, Atributos, Composições e Agregações
float saldo=10.50;
int numero=1;
Transacao[] transacoes;
Cliente cliente;
ContaBancaria
1 2 3 40
Transacao Transacao
Cliente
String nome;
ContaBancaria[] contas;
String“Maria”10
ContaBancaria[]
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Método
�É a interface através do qual se interage com o objeto
�Um método é definido pela sua assinatura (nome, valor de retorno, parametros de chamada) e pelo código que executa quando invocado
// O método debite descreve o que uma// conta bancária deve fazer quando debitandofloat debite(float valor) {saldo = saldo - valor;return saldo;
}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Métodos da Interface de uma Conta Bancária
c1: ContaBancaria Nome e Tipo do Objeto
saldo = 100.25numero = 1
Atributos do Objeto
float debite(float)float credite(float)void emiteExtrato()
Métodos da Interface do Objeto
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Conta
Mensagem
�Corresponde à invocação de método de um objeto (chamado) por outro objeto (chamador)
Mensagem
Banco
ContaBancaria conta;
float saldo = conta.debite(30.25);
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Qual o Saldo da Conta Após a Invocação do Método Credite?
conta.credite(100)
Mensagem
ContaBancaria
saldo=300
ContaBancaria
saldo=?
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Classes
�São os programas que definem o comportamento dos objetos
�São moldes para criação de objetos�Muitos Objetos, Poucas Classes
�A classe é responsável pela criação dos objetos
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Representação Gráfica de uma Classe e Vários Objetos
Conta #1
debite()credite()
emiteExtrato()
Conta #2
debite()credite()
emiteExtrato()
Conta #3
Conta #4
debite()credite()
emiteExtrato()
debite()credite()
emiteExtrato()
ContaBancária
debite()credite()
emiteExtrato()
saldotransações
numero
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Outra Representações Gráficas para Classe e Objeto
ContaBancaria
saldo: float
float debite(float)float credite(float)void emiteExtrato()
numero: int
c2: ContaBancaria
saldo = -9.78numero = 2
c1: ContaBancaria
saldo = 100numero = 1
CLASSE OBJETOS
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Definindo a Classe ContaBancária em Java
public class ContaBancaria {private int numero;private int saldo;private Transacao[] transacoes;
public ContaBancaria(int numero) {...}
public float debite(float valor, String data) {saldo = saldo - valor;return saldo;
}public float credite(float valor, String data) { ... }public void emiteExtrato() { ... }
}
Atributos
Construtor(es)
MétodosInstância
public class ContaBancaria {
}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Formato Simplificado de uma Declaração de Classe em Java
class <NomeDaClasse> {// declaração de atributos
<Tipo> <nomeDoAtributo-1>; ... ; <Tipo> <nomeDoAtributo-n>;
// método construtor
<NomeDaClasse>(<Tipo> <nomeDoParam-1>, ...) {<corpoDoMetodoConstrutor>}
// métodos de instância
<Tipo> <nomeDoMetodo-1>(<Tipo> <nomeDoParam-1>, ...) {<corpoDoMetodoDeInstancia-1>}
<Tipo> <nomeDoMetodo-2>(<Tipo> <nomeDoParam-1>, ...) {<corpoDoMetodoDeInstancia-2>}
}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Criando Contas Bancáriasclass ContaBancaria
ContaBancaria(int)
ContaBancaria(int) Método construtor
numero
numero Atributo (variável de instância)
debite(float, String)
debite(float, String) Método (de instância)
Banco
new ContaBancaria(1);#1
new ContaBancaria(2);
#2
new ContaBancaria(33); #33
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Criando Contas Bancárias
�Três contas bancárias criadas dentro de um banco.
class Banco {public static void main(String[] args) {ContaBancaria conta1, conta2, conta3;conta1 = new ContaBancaria(1);conta2 = new ContaBancaria(2);conta3 = new ContaBancaria(33);
}...
}
Exercício: Encontrando Classes e Objetos
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Onde Estão as Classes, Objetos, Métodos e Atributos?
�De um sistema de �Gestão de pessoal?�Tributação?�Controle de tráfego aéreo?�Hospitalar?�Automação fabril?�etc
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Exercício
�Crie as classes ContaBancária e Banco, conforme o exemplo mostrado
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Conceitos Básicos do Modelo de Objetos (2/2)
�Herança�Polimorfismo
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Herança
�Permite definir uma nova classe como especialização de outra já existente
�Superclasse �classe básica pré-existente�generalização de um conceito
�Subclasse�especialização da superclasse�refinamento de um conceito
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
ContaBancária
debite()credite()
emiteExtrato()
saldotransações
numero
ContaEspecial
calculaJuros()
limiteHerda (é uma)
ContaCorrente
emiteTalonario()
talonario Herda (é uma)
ContaPoupança
debite()credite()
aniversarioMes()
corrMonetariajuros
Herda (é uma)
Herança entre Classes de uma Aplicação Bancária
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Classe e Objeto ContaCorrente
class ContaCorrente extends ContaBancaria {
int talonarios;
public void emiteTalonarios() {...}
}
ContaCorrente
debite()
credite() emiteExtrato()
saldotransações
numero
emiteTalonario()
talonario
new ContaCorrente(1)
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Classe ContaEspecial
class ContaEspecial extends ContaCorrente {
float limite;
float calculaJuros() {...}
}
ContaEspecial debite()
credite() emiteExtrato()
saldotransações
numero
calculaJuros()
limite
new ContaEspecial(1)
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Benefícos da Herança
�Fatoração e redução do tamanho do código
�Estruturação do código�Aumenta a reutilização de código�Redução do esforço de evolução da
aplicação�Melhoria geral da qualidade do código
Exercício: Classes e Relacionamentos de Herança
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Onde aplicar Herança às Classes?
�De um sistema de �Gestão de pessoal?�Tributação?�Controle de tráfego aéreo?�Hospitalar?�Automação fabril?�etc
Polimorfismo na Construção de Software: um Estudo de Caso usando Contas Bancárias
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
newnewnew
newnew
new new
new
Criação de Algumas Contas e Transações
Conta
Transacao
Crédito Débito
debitecredite
debite
creditedebite
[]
[]
[]
Exercício Simulado: Criação do Sistema de Controle Bancário
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Controle de Conta Bancária
�Definir classes �ContaBancária, Transação, TransaçãoDébito e
TransaçãoCredito
�Elaborar um esquema polimórfico de emissão de extrato bancário que utilize as classes acima
�Elaborar código que cria uma ContaBancária, realiza algumas transações de crédito e débito e emitir um extrato
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Transação: Projeto
�Estado formado pelo valor e data�Métodos:
�Construtor (valor e data)�Emite linha de extrato (abstrato)�Recupera valor da transação�Recupera data da transação�Indica qual a variação que a transação
realiza sobre o saldo da conta (abstrato)
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Transação:Implementação
�Valor da transação armazenado como inteiro (int)
�Data da transação armazenada como string (String)
�Emissão de linha de extrato efetuada através da saída padrão (System.out)
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Transação:Esqueleto de Código
abstract class Transacao {
int valor;
String data;
Transacao(int valor, String data) {..}
int getValor(){..}
String getData() {..}
abstract int getVariação();
abstract void emiteLinhaExtrato();
}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
TransaçãoCrédito:Projeto e Implementação
�Herda de transação�Implementa métodos abstratos de
transação�Emite linha de extrato�Indica a variação POSITIVA que a
transação realiza sobre o saldo da conta
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
TransaçãoCrédito:Esqueleto de Código
class TransacaoCredito extends Transacao {
TransacaoCredito(int valor, String data) {..}
int getVariação() {..}
void emiteLinhaExtrato() {..}
}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
TransaçãoDébito:Projeto e Implementação
�Herda de transação�Implementa métodos abstratos de
transação�Emite linha de extrato�Indica a variação NEGATIVA que a
transação realiza sobre o saldo da conta
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
TransaçãoDébito:Esqueleto de Código
class TransacaoDebito extends Transacao {
TransacaoDebito(int valor, String data) {..}
int getVariação() {..}
void emiteLinhaExtrato() {..}
}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
ContaBancária: Projeto
�Estado formado pelo número da conta, saldo anterior e transações efetuadas
�Métodos:�Construtor (número da conta)�Recupera número da conta�Recupera saldo atual da conta�Lança débito (valor e data)�Lança crédito (valor e data)�Emite extrato
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
ContaBancária: Implementação
�O saldo inicial da conta é sempre 0�Saldo armazenado como inteiro (int),
representa o saldo antes de efetivar as transações (saldo anterior)
�Transações são armazenadas em um array de tamanho fixo
�Emissão de extrato efetuada através da saída padrão (System.out.println())
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
ContaBancária: Esqueleto de Código
class ContaBancaria {
int numero;
int saldoAnterior;
Transacao[] transacoes;
ContaBancaria(int numero) {..}
int getNumero(){..}
int getSaldoAtual() {..}
void debite(int valor, String data) {..}
void credite(int valor, String data) {..}
void emiteExtrato() {..}
}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Criação de Contas e Transaçõesclass ContaBancaria {..public static void main(String[] args) {ContaBancaria conta =new ContaBancaria(...);
..conta.debite(20, “23/04/1999”);conta.credite(40, “26/04/1999”);..conta.emiteExtrato();..
}}
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Exercício Simulado:Usando o JBuilder
�Familiarizando-se com a interface�Criação de projetos e classes�Criação do HelloWorld
�Criação do Sistema de Controle de Conta Bancária definido anteriormente
Java Básico. Copyright © 1999 Jorge H. C. Fernandes ([email protected]). Todos os Direitos Reservados.
Classes e Objetos do Modelo da Applicação ContaBancaria
Transacao
Crédito Debito
Conta
Débito Crédito Débito