Lógica de Depósito
Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 24 de 61.
Desafio
FácilÉ hora de adicionar a primeira operação bancária de verdade 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 contra transações inválidas.
Dando continuidade ao seu projeto Bank Account existente, você vai 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 é a encapsulação trabalhando para proteger a integridade dos seus dados.
Você vai trabalhar com três arquivos:
account.h: Estenda seu cabeçalho existente adicionando um novo protótipo de função:deposit. Essa função deve receber um ponteiro para 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 destrutor 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 a funcionalidade de depósito criando uma conta e realizando várias operações de depósito, algumas válidas e 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 primeiro o valor inválido: 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 do 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 destroyedEm que 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 uma guardiã. Ela garante que somente transações válidas possam modificar o saldo oculto da conta. Mesmo que você ainda não consiga ver o saldo (vamos adicionar um getter em uma lição futura), 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 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