Implementación de la cuenta
Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 23 de 61.
Desafío
Fácil¡Ahora es el momento de dar vida a tu Cuenta Bancaria! Ya has creado la interfaz pública en account.h; ahora implementarás los componentes internos ocultos que la hacen funcionar.
Basándote en tu trabajo anterior, añadirás el archivo de origen que contiene la definición secreta de la estructura y las implementaciones reales de las funciones. Aquí es donde ocurre verdaderamente el encapsulamiento: el cuerpo de la estructura existe solo en el archivo .c, completamente invisible para cualquiera que use tu librería.
Trabajarás con tres archivos:
account.h: Tu cabecera existente con la declaración del tipo opacoAccounty los prototipos de función paracreate_accountydestroy_account. Mantén tus guardas de inclusión conACCOUNT_H.account.c: Aquí es donde ocurre la magia. Define elstruct Accountreal con dos miembros ocultos:int id(el identificador de la cuenta) ydouble balance(comenzando en 0.0 para cuentas nuevas). Implementa tu constructor para asignar memoria, establecer el ID a partir del parámetro e inicializar el saldo a cero. Implementa tu destructor para liberar la memoria correctamente.main.c: Prueba tu implementación creando una cuenta y confirmando que funciona. Dado que los miembros de la estructura están ocultos, no puedes mirar dentro, pero puedes verificar que el ciclo de vida funciona correctamente.
Recibirás una entrada: el account ID (un entero) para asignar a la nueva cuenta.
En tu archivo principal, crea una cuenta con el ID proporcionado, imprime un mensaje de confirmación que muestre el ID, luego destruye la cuenta y confirma la limpieza.
Imprime la salida en este formato:
Account 1001 created
Account destroyedDonde 1001 se reemplaza con el ID real que recibiste como entrada.
Recuerda: tu main.c no puede acceder a account->id o account->balance directamente; esos miembros están completamente ocultos dentro de account.c. Por ahora, solo usarás el ID de la entrada para tu mensaje de salida. En las próximas lecciones, añadirás funciones getter para recuperar los datos ocultos correctamente.
Pruébalo tú mismo
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: leer account_id de la entrada
scanf("%d", &account_id);
// TODO: crear una cuenta usando create_account() y mostrar "Account <id> created"
// TODO: destruir la cuenta usando destroy_account() y mostrar "Account destroyed"
return 0;
}Todas las lecciones de Object Oriented Programming
1Fundamentos de programación modular
Archivos de cabeceraGuardas de inclusiónArchivos fuenteFunciones estáticasRepaso: Calculadora modular4Encapsulamiento
Concepto de punteros opacosDefinición de structs opacosGetters y SettersValidación en settersResumen: Caja secreta7Punteros a funciones
Declaración de punteros a funcionesLlamada a punteros a funcionesTypedef para punteros a funcionesPasar funciones como argumentosRepaso: Dispatch de calculadora10Contenedores genéricos
Repaso de punteros voidWrapper genéricoSwap genéricoComparación genéricaRepaso: Array genérico2Objetos y métodos
Structs como objetosEl puntero 'Self'Const CorrectnessPuntero vs. ValorMétodos auxiliaresResumen: Point Manager5Proyecto: Cuenta bancaria simple
Configuración del proyectoImplementación de la cuenta3Ciclo de vida de los objetos
Patrón ConstructorPatrón DestructorInicialización en StackCopia profundaResumen: String Wrapper6Herencia mediante composición
Incrustación de StructsLa regla del primer miembroAcceso a miembros padreUpcastingResumen: Jerarquía de formas9Proyecto: Dibujador de figuras
Descripción general del proyectoImplementación del círculo