Implementação da Conta
Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 23 de 61.
Desafio
FácilAgora é hora de dar vida à sua Conta Bancária! Você já criou a interface pública em account.h — agora você implementará os componentes internos ocultos que a fazem funcionar.
Com base no seu trabalho anterior, você adicionará o arquivo de origem que contém a definição secreta da struct e as implementações reais das funções. É aqui que o encapsulamento realmente acontece — o corpo da struct existe apenas no arquivo .c, completamente invisível para qualquer pessoa que use sua biblioteca.
Você trabalhará com três arquivos:
account.h: Seu cabeçalho existente com a declaração do tipo opacoAccounte os protótipos das funções paracreate_accountedestroy_account. Mantenha seus include guards comACCOUNT_H.account.c: É aqui que a mágica acontece. Defina astruct Accountreal com dois membros ocultos:int id(o identificador da conta) edouble balance(começando em 0.0 para novas contas). Implemente seu construtor para alocar memória, definir o ID a partir do parâmetro e inicializar o saldo como zero. Implemente seu destrutor para liberar a memória adequadamente.main.c: Teste sua implementação criando uma conta e confirmando que ela funciona. Como os membros da struct estão ocultos, você não pode espiar o interior — mas pode verificar se o ciclo de vida funciona corretamente.
Você receberá uma entrada: o ID da conta (um número inteiro) para atribuir à nova conta.
No seu arquivo principal, crie uma conta com o ID fornecido, imprima uma mensagem de confirmação mostrando o ID, depois destrua a conta e confirme a limpeza.
Imprima a saída neste formato:
Account 1001 created
Account destroyedOnde 1001 é substituído pelo ID real que você recebeu como entrada.
Lembre-se: seu main.c não pode acessar account->id ou account->balance diretamente — esses membros estão completamente ocultos dentro de account.c. Por enquanto, você apenas usará o ID da entrada para sua mensagem de saída. Nas próximas lições, você adicionará funções getter para recuperar os dados ocultos adequadamente.
Experimente você mesmo
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: ler account_id da entrada
scanf("%d", &account_id);
// TODO: criar uma conta usando create_account() e imprimir "Account <id> created"
// TODO: destruir a conta usando destroy_account() e imprimir "Account destroyed"
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