Implementación de la cuenta
Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 23 de 61.
Desafío
Fácil¡Ahora es el momento de darle vida a tu cuenta bancaria! Ya has creado la interfaz pública en account.h: ahora implementarás los componentes internos ocultos que hacen que funcione.
Basándote en tu trabajo anterior, añadirás el archivo de código fuente que contiene la definición secreta de la estructura y las implementaciones reales de las funciones. Aquí es donde la encapsulación ocurre de verdad: el cuerpo de la estructura existe únicamente en el archivo .c, completamente invisible para cualquiera que use tu biblioteca.
Trabajarás con tres archivos:
account.h: tu encabezado existente con la declaración del tipo opacoAccounty los prototipos de función paracreate_accountydestroy_account. Conserva tus protecciones de inclusión conACCOUNT_H.account.c: aquí es donde ocurre la magia. Define lastruct Accountreal con dos miembros ocultos:int id(el identificador de la cuenta) ydouble balance(que comienza en 0.0 para las cuentas nuevas). Implementa tu constructor para asignar memoria, establecer el ID a partir del parámetro e inicializar el saldo en cero. Implementa tu destructor para liberar correctamente la memoria.main.c: prueba tu implementación creando una cuenta y confirmando que funciona. Como los miembros de la estructura están ocultos, no puedes inspeccionarlos, pero sí puedes verificar que el ciclo de vida funciona correctamente.
Recibirás una entrada: el ID de la cuenta (un entero) que se asignará a la nueva cuenta.
En tu archivo principal, crea una cuenta con el ID proporcionado, muestra un mensaje de confirmación con el ID, después destruye la cuenta y confirma la limpieza.
Muestra la salida con este formato:
Account 1001 created
Account destroyedDonde 1001 se reemplaza por el ID real que recibiste como entrada.
Recuerda: tu main.c no puede acceder directamente a account->id ni a account->balance. 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 próximas lecciones, añadirás funciones getter para recuperar correctamente los datos ocultos.
Pruébalo tú mismo
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: lee account_id desde la entrada
scanf("%d", &account_id);
// TODO: crea una cuenta usando create_account() e imprime "Account <id> created"
// TODO: destroy the account using destroy_account() and print "Account destroyed"
return 0;
}Todas las lecciones de Programación Orientada a Objetos
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írculoImplementación del rectánguloUso polimórficoContenedor de figurasPractica por tu cuenta: Compilador de C online