Un ejemplo de como NO programar en C. Aunque muestra algunos conceptos de programacion orientada a objetos.
El programa registra citas y consultas para un consultorio, cada Doctor debe de logearse primero. Claro los usuarios y contraseñas estan en el archivo usuario.txt =).
Crear objetos
Para crear un objeto usa la siguiente sintaxis
Clase objeto = clase_new();
Ejemplo
Paciente *paciente = paciente_new();
Acceder a metodos
Para acceder a los metodos de un objeto usa la siguiente sintaxis
$(objeto).metodo(argumentos);
Ejemplo
$(paciente).setNombre("Jorge");
¿Como funciona esto?
Tenemos una estructura donde definimos los atributos y una referencia a Class_vt, una "virtual table" la cual contiene una referencia a todos los metodos de la clase;
struct Class {
//... atributos
Class_vt class vt; // tabla de punteros a funciones
}
struct Class_vt {
void (*setThis) (Paciente *);
void (*setNombre) (const char *);
}
Los metodos usan una variable global llamada this
para saber quien los llamo.
Cuando usamos la macro $(objeto)
Se expande a ((objeto->vt->setThis(objeto)), *(objeto->vt))
Lo cual hace dos cosas:
- Llama al metodo
setThis
de nuestra tabla de punteros a metodos, ahorathis
apunta aobjeto
- Desreferencia la tabla de punteros a metodos.
- Clonar el repositorio o descargar como zip.
git clone https://github.com/alfr3dosv/coop.git
- Abrir una consola y selecccionar la carpeta raiz del proyecto.
cd coop
- Ejecutar make
make
Los binarios estaran en la carpeta build.