Finalização do Projeto: Loop Principal
Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 27 de 61.
Desafio
FácilParabéns: você criou uma biblioteca completa de contas bancárias! Agora é hora de trocar de papel. Em vez de ser quem criou a biblioteca, você será o usuário da biblioteca. Sua tarefa é escrever um programa principal que teste o módulo Account a fundo.
Pense nisso como um cliente entrando em um banco e realizando uma série de transações. Você criará uma conta, fará depósitos e saques, verificará o saldo ao longo do processo e, por fim, encerrará a conta quando terminar.
Você trabalhará com três arquivos:
account.h: Seu arquivo de cabeçalho completo, com o tipo opacoAccounte todos os protótipos de função:create_account,destroy_account,deposit,withdraweget_balance.account.c: Sua implementação completa, com a struct oculta que contémidebalance, além de todas as implementações de funções que você criou ao longo deste projeto.main.c: É aqui que você brilha! Escreva um programa que demonstre todo o ciclo de vida de uma conta bancária por meio de uma sequência realista de transações.
Você receberá cinco entradas: o ID da conta (um número inteiro), um primeiro depósito, um saque, um segundo depósito e uma tentativa de saque a descoberto (um saque que deve falhar por falta de fundos).
Seu programa principal deve contar a história da vida desta conta:
- Crie a conta e anuncie sua criação
- Mostre o saldo inicial
- Faça o primeiro depósito e mostre o novo saldo
- Faça um saque e mostre o saldo atualizado
- Faça outro depósito e mostre o saldo
- Tente fazer um saque maior que o saldo. Essa tentativa deve falhar
- Mostre o saldo final (inalterado após a tentativa de saque malsucedida)
- Encerre a conta
Imprima a saída neste formato:
Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closedEm que 2001 é o ID da conta, e os valores correspondem às suas entradas. Formate todos os valores monetários com duas casas decimais usando %.2f. A mensagem de falha no saque deve ser impressa quando withdraw retornar 0.
Este desafio final demonstra tudo o que você aprendeu sobre encapsulamento. Seu programa principal interage com Account exclusivamente por meio de sua interface pública, sem nunca acessar diretamente os dados internos ocultos.
Experimente você mesmo
#include <stdio.h>
#include "account.h"
int main() {
// TODO: Leia account_id, deposit1, withdraw_amount, deposit2 e overdraft da entrada
// TODO: Crie a conta e imprima "Account <id> created"
// TODO: Imprima o saldo inicial
// TODO: Faça o primeiro depósito, imprima "Deposited <amount>" e o novo saldo
// TODO: Saque fundos, imprima "Withdrew <amount>" e o saldo atualizado
// TODO: Faça o segundo depósito, imprima "Deposited <amount>" e o novo saldo
// TODO: Tente fazer o saque a descoberto; se falhar, imprima "Withdrawal failed: insufficient funds"
// TODO: Imprima o saldo final
// TODO: Imprima "Account <id> closed" e destrua a conta
return 0;
}
Todas as lições de Programação Orientada a Objetos
1Fundamentos da Programação Modular
Arquivos de cabeçalhoProteções de inclusãoArquivos-fonteFunções estáticasRevisão: calculadora modular4Encapsulamento
Conceito de ponteiros opacosDefinindo structs opacasGetters e settersValidação em settersRevisão: caixa secreta2Objetos e métodos
Structs como objetosO ponteiro 'Self'Correção de constPonteiro vs. valorMétodos auxiliaresRevisão: Gerenciador de pontos5Projeto: Conta Bancária Simples
Configuração do ProjetoImplementação da Conta3Ciclo de vida do objeto
Padrão de construtorPadrão de destrutorInicialização da pilhaCópia profundaRevisão: wrapper de String6Herança por composição
Incorporação de structRegra do primeiro membroAcessando membros do tipo paiUpcastingRevisão: hierarquia de formas9Projeto: Desenhador de Formas
Visão geral do projetoImplementação do círculoImplementação do retânguloUso polimórficoContêiner de formasPratique por conta própria: Compilador de C online