Resumen: Point Manager
Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 11 de 61.
Desafío
FácilConstruyamos un módulo completo Point que administre una coordenada 2D. Este desafío de repaso reúne todo lo que has aprendido sobre tratar las estructuras como objetos: usar 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:xyy. Declara también 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 axyypoint_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 normal (para modificar el punto) y cuál utiliza un punteroconst(para leer de forma segura sin modificar).main.c: Crea un Point, desplázalo y muestra su posición en diferentes etapas.
Recibirás cuatro entradas enteras: la x inicial, la y inicial, el valor de dx (cantidad que se moverá horizontalmente) y el valor de dy (cantidad que se moverá verticalmente).
En tu archivo principal, inicializa un Point con las coordenadas iniciales, muestra su posición inicial, desplázalo las cantidades indicadas y después muestra su nueva posición.
La función point_print debe producir una salida con 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() {
// Lee los valores de entrada
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Crea un Point con las coordenadas iniciales (x, y)
// TODO: Imprime la posición inicial usando point_print
// TODO: Mueve el punto por (dx, dy) usando point_move
// TODO: Imprime la nueva posición usando point_print
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