Top Banner
UML e Java, Introdução AB ,2000 1 Diagrama de Classes UML e JAVA ema diversos tipos de contas bancárias. Todas as contas atributo saldo que pode ser consultado em qualquer É possível efectuar operações de depósito e mento sobre contas bancárias. As contas devem ter um atribut iste a última operação efectuada (ex: “levantamento efectuad as à ordem devem verificar nas operações de levantamento te saldo suficiente para tal… um tipo de conta multibanco que se comporta como uma ordem mas não suporta levantamentos superiores a um limite ntamento fixo (estipulado para todas as contas).
24

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.

Apr 21, 2015

Download

Documents

Internet User
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 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.

UML e Java, Introdução AB,2000 1

Diagrama de Classes UMLe JAVA

Problema

Existem diversos tipos de contas bancárias. Todas as contastêm um atributo saldo que pode ser consultado em qualqueraltura. É possível efectuar operações de depósito e levantamento sobre contas bancárias. As contas devem ter um atributoque registe a última operação efectuada (ex: “levantamento efectuado” ).

As contas à ordem devem verificar nas operações de levantamento se existe saldo suficiente para tal…

Existe um tipo de conta multibanco que se comporta como umaconta à ordem mas não suporta levantamentos superiores a um limitede levantamento fixo (estipulado para todas as contas).

Page 2: 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.

UML e Java, Introdução AB,2000 2

Diagrama de Classes UMLe JAVA

Conta

ContaOrdem

ContaMulti

Diagrama de Classes

Page 3: 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.

UML e Java, Introdução AB,2000 3

Diagrama de Classes UMLe JAVA

Conta

saldo: doublemensagemOperacao: String

Deposita(valor: double): booleanLevanta(valor: double): booleanSaldo():doubleMensagemOperacao(msg: String)MensagemOperacao():String

Diagrama de Classes(com detalhe)

ContaOrdem

Levanta(valor: double): boolean

ContaMulti

limiteLevantamento: double

Levanta(valor: double): booleanLimiteLevantamento()

Page 4: 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.

UML e Java, Introdução AB,2000 4

Diagrama de Classes UMLe JAVA

Conta

saldo: doublemensagemOperação: String

Deposita(valor: double): booleanLevanta(valor: double): booleanSaldo():doubleMensagemOperacao(msg: String)MensagemOperacao():String

public abstract class Conta{

private double m_saldo;

public Conta() { m_saldo = 0; }

public boolean Deposita(double valor){ m_saldo+=valor; return true;}

public boolean Levanta(double valor){ m_saldo-=valor; return true;}

public double Saldo() { return m_saldo; }

}

O nome da classe em itálico significa quea classe é abstracta(não vai ter instâncias)

construtor

Page 5: 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.

UML e Java, Introdução AB,2000 5

Diagrama de Classes UMLe JAVA

public abstract class Conta{

private double m_saldo;

public Conta() { m_saldo = 0; }

public boolean Deposita(double valor){ m_saldo+=valor; return true;}

public boolean Levanta(double valor){ m_saldo-=valor; return true;}

public double Saldo() { return m_saldo; }

}

“private” garante oencapsulamentodo atributo saldo.O “mundo exterior”não pode aceder...

Métodos públicos,o “mundo exterior”pode aceder...

Page 6: 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.

UML e Java, Introdução AB,2000 6

Diagrama de Classes UMLe JAVA

public abstract class Conta{

private double m_saldo;private String m_mensagemOperacao;

public Conta(){ m_saldo = 0; m_mensagemOperacao = new String("Conta criada com saldo zero");}

public Conta(double valor){ m_saldo = valor; m_mensagemOperacao = new String("Conta criada com saldo inicial");}

// isto é um comentário, a classe Conta continua no próximo slide...

Conta.java (1/2)

Page 7: 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.

UML e Java, Introdução AB,2000 7

Diagrama de Classes UMLe JAVA

public double Saldo() { m_mensagemOperacao = new String("Consulta de saldo"); return m_saldo;}

public String MensagemOperacao() { return m_mensagemOperacao; }

public void MensagemOperacao(String mensagem) { m_mensagemOperacao = mensagem; }

public boolean Deposita(double valor) { m_saldo+=valor; m_mensagemOperacao = new String("Deposito efectuado"); return true;}

public boolean Levanta(double valor){ m_saldo-=valor;

m_mensagemOperacao = new String("Levantamento efectuado"); return true;}

}

Conta.java (2/2)

Page 8: 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.

UML e Java, Introdução AB,2000 8

Diagrama de Classes UMLe JAVA

ContaOrdem

Levanta(valor: double): boolean

public class ContaOrdem extends Conta{

public ContaOrdem() { super(); }

public ContaOrdem(double valor){ super(valor);}

public boolean Levanta(double valor){

boolean levantou = false;

if ( valor <= Saldo() ) { levantou = super.Levanta(valor);} else {

MensagemOperacao(new String("O seu saldo não permite esta operação"));}return levantou;

}}

ContaOrdem.java

Page 9: 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.

UML e Java, Introdução AB,2000 9

Diagrama de Classes UMLe JAVA

public class ContaOrdem extends Conta

ContaOrdem.java

Conta

ContaOrdem

herança

Page 10: 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.

UML e Java, Introdução AB,2000 10

Diagrama de Classes UMLe JAVA ContaOrdem.java

public ContaOrdem() { super();}

public ContaOrdem(double valor){ super(valor);}

Opção: 2 construtoresSerá possível criarcontas à Ordem comsaldo a zero através doconstrutor por defeito

ou

com saldo inicial atravésdo segundo construtor

Page 11: 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.

UML e Java, Introdução AB,2000 11

Diagrama de Classes UMLe JAVA ContaOrdem.java

public Conta(double valor){ m_saldo = valor; m_mensagemOperacao = new String("Conta criada com saldo inicial");}

public ContaOrdem(double valor){ super(valor);}

Ex: comportamento do 2º construtor

É invocado o construtorda classe base que recebeo argumento valor e efectuaa atribuição de saldo inicial

Page 12: 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.

UML e Java, Introdução AB,2000 12

Diagrama de Classes UMLe JAVA

Criar objectos do tipo ContaOrdem a partir do construtor por defeito

Ex:ContaOrdem minhaConta;

minhaConta = new ContaOrdem();

ou

ContaOrdem minhaConta = new ContaOrdem();

Refª para manipularo objecto

Criar o novo objecto e atribuir à refª minhaConta

construtor

Page 13: 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.

UML e Java, Introdução AB,2000 13

Diagrama de Classes UMLe JAVA

Criar objectos do tipo ContaOrdem a partir do 2º construtor

Ex:ContaOrdem minhaConta;

minhaConta = new ContaOrdem(1000);

A nova conta é criada comsaldo 1000.

Page 14: 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.

UML e Java, Introdução AB,2000 14

Diagrama de Classes UMLe JAVA

public boolean Levanta(double valor){ boolean levantou = false;

if ( valor <= Saldo() ) {

levantou = super.Levanta(valor);

} else {

MensagemOperacao(new String("O seu saldo não permite esta operação")); }

return levantou;}

ContaOrdem.java

O método “Levanta” é redefinido.Se o valor a levantar for menor ou igual aosaldo da conta então invoca-se o método “Levanta” da classe base

Page 15: 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.

UML e Java, Introdução AB,2000 15

Diagrama de Classes UMLe JAVA

ContaOrdem minhaConta;

minhaConta = new ContaOrdem();

minhaConta.Deposita(1000);minhaConta.Deposita(2500);minhaConta.Levanta(500);

double v;v = minhaConta.Saldo();

3000

Mensagens a Objectos

Invocar métodosdos objectos

Page 16: 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.

UML e Java, Introdução AB,2000 16

Diagrama de Classes UMLe JAVA

ContaOrdem minhaConta;ContaOrdem tuaConta;

minhaConta = new ContaOrdem();tuaConta = new ContaOrdem();

minhaConta.Deposita(1000);tuaConta.Deposita(500);

double v;v = minhaConta.Saldo(); // “v” recebe 1000v = minhaConta.Saldo(); // “v” recebe 500

Os objectos partilham comportamento mas têm valores de dados próprios

Page 17: 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.

UML e Java, Introdução AB,2000 17

Diagrama de Classes UMLe JAVA ContaMulti.java

public class ContaMulti extends ContaOrdem{ private double m_limiteLevantamento;

public ContaMulti() { super(); LimiteLevantamento(); }

public ContaMulti(double valor) { super(valor); LimiteLevantamento(); }

public boolean Levanta(double valor) { boolean levantou = false;

if ( valor <= m_limiteLevantamento ) { levantou = super.Levanta(valor); }else { MensagemOperacao(new String("O limite de levantamento não permite esta operação")); } return levantou; }

private void LimiteLevantamento() { m_limiteLevantamento = 40000; }}

ContaOrdem

ContaMulti

Page 18: 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.

UML e Java, Introdução AB,2000 18

Diagrama de Classes UMLe JAVA

ContaMulti minhaConta;

minhaConta = new ContaMulti();

minhaConta.Deposita(1000);minhaConta.Deposita(2500);minhaConta.Levanta(500);

minhaConta.LimiteLevantamento(); // Erro!!!

O método LimiteLevantamento não está disponívelpara o “mundo exterior” pois é privado. Apenas a classe o utiliza.

Page 19: 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.

UML e Java, Introdução AB,2000 19

Diagrama de Classes UMLe JAVA

Conta c;

ContaOrdem co;ContaMulti cm;

co = new ContaOrdem();cm = new ContaMulti();

// (…)

Um exemplo de polimorfismo:

c = co;

c.Levanta(200);

c = cm;

c.Levanta(100);

É invocado o método “Levanta” da conta ordem

É invocado o método “Levanta” da conta multi

Page 20: 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.

UML e Java, Introdução AB,2000 20

Diagrama de Classes UMLe JAVA

Novo Problema

O banco necessita de um novo tipo de conta: ordenado.

No fundo, as contas ordenado são contas à ordem maspermitem levantamentos superiores ao saldo desde queestes não ultrapassem o crédito estabelecido…Nos casos de saldo insuficiente, é efectuado um créditoao saldo, para se concretizar o levantamento posterior.O crédito é atribuído em função do salário do titular de conta.

Como ficará o diagrama de classes?

Page 21: 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.

UML e Java, Introdução AB,2000 21

Diagrama de Classes UMLe JAVA

Conta

ContaOrdem

ContaMulti ContaOrdenado

Diagrama declasses,ContaOrdenadoherda deContaOrdem

Page 22: 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.

UML e Java, Introdução AB,2000 22

Diagrama de Classes UMLe JAVA

“Todas as contas têm um número de conta”

Conta

saldo: doublemensagemOperação: Stringnumero: int

Deposita(valor: double): booleanLevanta(valor: double): booleanSaldo():doubleMensagemOperacao(msg: String)MensagemOperacao():String

Ao adicionar o número à classe Conta,todas as contas passama ter este atributo

Page 23: 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.

UML e Java, Introdução AB,2000 23

Diagrama de Classes UMLe JAVA

Conta

saldo: doublemensagemOperação: Stringnumero: int

Deposita(valor: double): booleanLevanta(valor: double): booleanSaldo():doubleMensagemOperacao(msg: String)MensagemOperacao():String

double e int são tipos de dadosintrínsecos (não são classes).

No entanto, String é uma classe.

Podemos então dizer que ascontas têm ou usam Strings.

Como ficará o diagrama declasses?

Page 24: 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.

UML e Java, Introdução AB,2000 24

Diagrama de Classes UMLe JAVA

Conta

ContaOrdem

ContaMulti ContaOrdenado

String