Implementação da Conta
Parte da seção Programação Orientada a Objetos 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 vai implementar os detalhes internos ocultos que a fazem funcionar.
Com base no trabalho anterior, você vai adicionar o arquivo-fonte que contém a definição secreta da estrutura e as implementações reais das funções. É aqui que a encapsulação acontece de verdade: o corpo da estrutura 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çõescreate_accountedestroy_account. Mantenha suas proteções de inclusão 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 com base no parâmetro e inicializar o saldo como zero. Implemente seu destrutor para liberar a memória corretamente.main.c: teste sua implementação criando uma conta e confirmando que ela funciona. Como os membros da estrutura estão ocultos, você não pode espiar seu conteúdo, mas pode verificar se o ciclo de vida funciona corretamente.
Você receberá uma entrada: o ID da conta (um inteiro) a ser atribuído à nova conta.
No arquivo principal, crie uma conta com o ID fornecido, imprima uma mensagem de confirmação mostrando o ID e, em seguida, destrua a conta e confirme a limpeza.
Imprima a saída neste formato:
Account 1001 created
Account destroyedEm que 1001 é substituído pelo ID real recebido como entrada.
Lembre-se: seu main.c não pode acessar account->id ou account->balance diretamente. Esses membros ficam completamente ocultos dentro de account.c. Por enquanto, você usará apenas o ID da entrada na mensagem de saída. Nas próximas lições, você adicionará funções getter para recuperar os dados ocultos corretamente.
Experimente você mesmo
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: leia account_id da entrada
scanf("%d", &account_id);
// TODO: crie uma conta usando create_account() e imprima "Account <id> created"
// TODO: destrua a conta usando destroy_account() e imprima "Account destroyed"
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