Lógica de Depósito
Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 24 de 61.
Desafio
FácilÉ hora de adicionar a primeira operação bancária real ao seu módulo Account — a capacidade de depositar fundos! Uma função de depósito precisa ser inteligente: ela deve aceitar apenas valores positivos, protegendo sua conta de transações inválidas.
Com base no seu projeto Bank Account existente, você estenderá o módulo com a funcionalidade de depósito. Sua função de depósito deve validar a entrada antes de modificar o saldo oculto — isso é o encapsulamento trabalhando para proteger a integridade dos seus dados.
Você trabalhará com três arquivos:
account.h: Estenda seu cabeçalho existente adicionando um novo protótipo de função:deposit. Esta função deve receber um ponteiro Account e um valordouble, retornando umint(1 para sucesso, 0 se o valor for inválido). Mantenha suas declarações existentes paracreate_accountedestroy_account.account.c: Implemente a funçãodepositjunto com seu construtor e destruidor existentes. O depósito só deve ser bem-sucedido se o valor for positivo (maior que zero). Se for válido, adicione o valor ao saldo oculto e retorne 1. Se o valor for zero ou negativo, rejeite-o retornando 0 sem alterar o saldo.main.c: Demonstre sua funcionalidade de depósito criando uma conta e realizando múltiplas operações de depósito — algumas válidas, outras inválidas — para mostrar que sua validação funciona corretamente.
Você receberá três entradas: o ID da conta (um número inteiro), um valor de depósito válido (um número positivo) e um valor de depósito inválido (zero ou negativo).
No seu arquivo principal, crie uma conta com o ID fornecido e imprima uma confirmação. Em seguida, tente depositar o valor inválido primeiro — imprima se a operação foi bem-sucedida e observe que o saldo deve permanecer inalterado. Depois, deposite o valor válido — imprima o resultado de sucesso. Por fim, destrua a conta e confirme a limpeza.
Imprima a saída neste formato:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedOnde 1001 é o ID da conta, -50.00 é o valor inválido e 200.00 é o valor válido. Formate todos os valores com duas casas decimais usando %.2f.
Sua função de depósito atua como um guardião — ela garante que apenas transações válidas possam modificar o saldo oculto da conta. Embora você ainda não possa ver o saldo (adicionaremos um getter em uma lição posterior), você pode confiar que os depósitos inválidos estão sendo rejeitados corretamente.
Experimente você mesmo
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
destroy_account(account);
printf("Account destroyed\n");
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