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 Conta Bancária! Agora é hora de trocar de papel. Em vez de ser o criador da biblioteca, você se tornará o usuário da biblioteca. Sua tarefa é escrever um programa principal que coloque seu módulo Account à prova.
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, finalmente, 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 contendoidebalance, além de todas as implementações das 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 inteiro), um primeiro depósito, um saque, um segundo depósito e uma tentativa de saque a descoberto (um saque que deve falhar devido a fundos insuficientes).
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 que exceda o saldo. Isso deve falhar
- Mostre o saldo final (inalterado após o saque malsucedido)
- 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 closedOnde 2001 é o ID da conta e os valores refletem 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 encerramento 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 os fundos, imprima "Withdrew <amount>" e o saldo atualizado
// TODO: Faça o segundo depósito, imprima "Deposited <amount>" e o novo saldo
// TODO: Attempt the overdraft withdrawal; if it fails, print "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çalhoInclude GuardsArquivos-FonteFunções EstáticasRecapitulação: Calculadora Modular4Encapsulamento
Conceito de Ponteiros OpacosDefinindo Structs OpacasGetters e SettersValidação em SettersRecapitulação: Caixa Secreta2Objetos e Métodos
Structs como ObjetosO Ponteiro 'Self'Const CorrectnessPonteiro vs ValorMétodos AuxiliaresRecapitulação: Point Manager5Projeto: Conta Bancária Simples
Configuração do ProjetoImplementação da Conta3Ciclo de Vida de Objetos
Padrão de ConstrutorPadrão de DestrutorInicialização na StackCópia ProfundaRecapitulação: String Wrapper6Herança via Composição
Incorporação de StructsA Regra do Primeiro MembroAcessando Membros PaiUpcastingRecapitulação: Hierarquia de Formas9Projeto: Desenhador de Formas
Visão Geral do ProjetoImplementação do CírculoImplementação do RetânguloUso PolimórficoContainer de FormasPratique por conta própria: Compilador de C online