Вы находитесь на странице: 1из 3

POO - Programação Orientada a Objetos - Exercício Resolvido 4 - A classe ContaBancaria

(construtores, métodos, getters e setters e encapsulamento)

Pergunta/Tarefa:

Escreva uma classe Java chamada ContaBancaria para representar uma conta bancária. Esta classe
deverá conter:

a) Um campo de dados privado do tipo double chamado saldo que representa o saldo atual da conta. O
saldo padrão é 0.0.

b) Um campo de dados privado do tipo Date chamado dataAbertura que guarda a data da abertura da
conta bancária. O valor padrão é a data atual. Note que o campo dataAbertura é somente leitura, ou
seja, no momento da criação da conta, esta variável receberá a data atual e não poderá mais ser
alterada (não forneça o método set() para este campo).

c) Um construtor sem argumentos que cria uma nova conta com saldo 0.0 e com data de abertura igual
à data atual.

d) Métodos get() e set() para o campo saldo e apenas o método get() para o campo dataAbertura.

e) Um método getDataAberturaFormatada() que retorna a data de abertura da conta como uma String.
Você deverá também formatar a data retornada com o objetivo de exibir algo como "12/05/2012".

f) Um método getSaldoFormatado() que retorna o saldo atual da conta como uma String e formatado de
acordo com o formato de moeda brasileira, ou seja, algo como "R$ 23.654,00".

g) Um método depositar() que recebe um valor do tipo double e atualiza o saldo atual da conta.

h) Um método sacar() que recebe um valor do tipo double representando o valor a ser sacado. Não
permita saques que farão com que a conta fique com saldo negativo.

Escreva uma classe de teste e, em seu método main(), crie uma nova instância da classe ContaBancaria.
Experimente efetuar depósitos e saques e observe o comportamento da classe. Sua saída deverá ser
parecida com a imagem abaixo:

Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

ContaBancaria.java:

package estudos;

import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.Date;

public class ContaBancaria{


private double saldo; // saldo atual da conta
private Date dataAbertura; // data de abertura da conta
// construtor padrão que cria uma nova conta com saldo 0.0 e
// data de abertura igual à data atual
public ContaBancaria(){
this.saldo = 0.0;
this.dataAbertura = new Date();
System.out.println("Abertura de conta realizada com sucesso.");
}

// retorna a data de abertura da conta como um objeto da classe


// Date
public Date getDataAbertura(){
return this.dataAbertura;
}

// retorna a data de abertura da conta como uma string formatada


public String getDataAberturaFormatada(){
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
return df.format(this.dataAbertura);
}

// obtém o saldo da conta


public double getSaldo(){
return saldo;
}

// permite definir o saldo da conta


public void setSaldo(double saldo){
this.saldo = saldo;
}

// obtém o saldo como uma string formatada de acordo com o formato


// de moeda brasileira
public String getSaldoFormatado(){
NumberFormat nf = NumberFormat.getCurrencyInstance();
return nf.format(this.saldo);
}

// efetua um novo depósito na conta


public void depositar(double quantia){
this.saldo = this.saldo + quantia;
System.out.println("Novo depósito efetuado.");
}

// efetua um saque (CUIDADO! O saldo não pode ficar negativo)


public void sacar(double quantia){
// o saque vai deixar a conta com saldo negativo?
if((this.saldo - quantia) < 0){
System.out.println("Saldo insuficiente para este saque");
}
else{
this.saldo = this.saldo - quantia;
System.out.println("Novo saque efetuado.");
}
}
}

Veja agora o método main() que nos permite testar a funcionalidade da classe ContaBancaria:

package estudos;

public class Estudos {


public static void main(String[] args) {
// vamos criar um novo objeto da classe Conta
ContaBancaria cb = new ContaBancaria();
// vamos mostrar o saldo atual
System.out.println("Saldo atual: " + cb.getSaldo());
System.out.println("Saldo atual formatado: " + cb.getSaldoFormatado());
// vamos mostrar a data de criação da conta
System.out.println("Data de abertura: " + cb.getDataAbertura());
System.out.println("Data de abertura formatada: " +
cb.getDataAberturaFormatada());

// vamos efetuar um novo depósito


cb.depositar(3409.00);
// vamos mostrar o saldo atual
System.out.println("Saldo atual: " + cb.getSaldo());
System.out.println("Saldo atual formatado: " + cb.getSaldoFormatado());

// vamos efetuar um saque


cb.sacar(500.00);

// vamos mostrar o saldo atual


System.out.println("Saldo atual: " + cb.getSaldo());
System.out.println("Saldo atual formatado: " + cb.getSaldoFormatado());

// vamos tentar efetuar um saque maior que o saldo


cb.sacar(2910.00);
}
}

Вам также может понравиться