Finalização do Projeto: Loop Principal
Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 27 de 61.
Desafio
FácilParabéns — você construiu uma biblioteca completa de Conta Bancária! Agora é hora de mudar 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 caminho e, finalmente, fechará 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 de função que você construiu ao longo deste projeto.main.c: É aqui que você brilha! Escreva um programa que demonstre o ciclo de vida completo de uma conta bancária através 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 cheque especial (um saque que deve falhar devido a fundos insuficientes).
Seu programa principal deve contar a história da vida desta conta:
- Criar a conta e anunciá-la
- Mostrar o saldo inicial
- Realizar o primeiro depósito e mostrar o novo saldo
- Sacar alguns fundos e mostrar o saldo atualizado
- Realizar outro depósito e mostrar o saldo
- Tentar um saque que exceda o saldo — isso deve falhar
- Mostrar o saldo final (inalterado após o saque com falha)
- Fechar 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 final demonstra tudo o que você aprendeu sobre encapsulamento — seu programa principal interage com a Account puramente através de sua interface pública, nunca tocando nos dados internos ocultos diretamente.
Experimente você mesmo
#include <stdio.h>
#include "account.h"
int main() {
// TODO: Ler account_id, deposit1, withdraw_amount, deposit2, e overdraft da entrada
// TODO: Criar a conta e imprimir "Account <id> created"
// TODO: Imprimir o saldo inicial
// TODO: Realizar o primeiro depósito, imprimir "Deposited <amount>" e o novo saldo
// TODO: Sacar fundos, imprimir "Withdrew <amount>" e o saldo atualizado
// TODO: Realizar o segundo depósito, imprimir "Deposited <amount>" e o novo saldo
// TODO: Tentar o saque de cheque especial; se falhar, imprimir "Withdrawal failed: insufficient funds"
// TODO: Imprimir o saldo final
// TODO: Imprimir "Account <id> closed" e destruir a conta
return 0;
}
Todas as lições de Object Oriented Programming
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írculo