Resumen: Point Manager
Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 11 de 61.
Desafío
FácilVamos a construir un módulo Point completo que gestione una coordenada 2D. Este desafío de repaso reúne todo lo que has aprendido sobre el tratamiento de structs como objetos: el uso de punteros para modificar el estado y punteros const para operaciones de solo lectura.
Crearás tres archivos:
point.h: Declara una estructuraPointcon dos miembros enteros:xey. También declara dos funciones que actúan como métodos:point_move— recibe un puntero a Point junto con dos enteros (dxydy), y desplaza la posición del punto sumando estos valores axeypoint_print— recibe un punteroconsta Point y muestra sus coordenadas (esta función no debe modificar el punto)
POINT_H.point.c: Implementa ambas funciones. Piensa detenidamente qué función necesita un puntero regular (para modificar el punto) y cuál utiliza un punteroconst(para leer de forma segura sin modificaciones).main.c: Crea un Point, muévelo y muestra su posición en diferentes etapas.
Recibirás cuatro entradas enteras: la x inicial, la y inicial, el valor dx (cantidad a mover horizontalmente) y el valor dy (cantidad a mover verticalmente).
En tu archivo principal, inicializa un Point con las coordenadas iniciales, imprime su posición inicial, muévelo según las cantidades dadas y luego imprime su nueva posición.
La función point_print debe producir la salida en este formato:
Point: ({x}, {y})Por ejemplo, con las entradas 3, 5, 2 y -1, la salida sería:
Point: (3, 5)
Point: (5, 4)Pruébalo tú mismo
#include <stdio.h>
#include "point.h"
int main() {
// Leer los valores de entrada
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Crear un Point con las coordenadas iniciales (x, y)
// TODO: Imprimir la posición inicial usando point_print
// TODO: Mover el punto por (dx, dy) usando point_move
// TODO: Imprimir la nueva posición usando point_print
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