Riepilogo: gestore di punti
Fa parte della sezione Programmazione orientata agli oggetti del percorso C di Coddy. Lezione 11 di 61.
Sfida
FacileCostruiamo un modulo Point completo che gestisce una coordinata 2D. Questa sfida di riepilogo mette insieme tutto ciò che hai imparato sull’uso delle struct come oggetti: utilizzare i puntatori per modificare lo stato e i puntatori const per le operazioni di sola lettura.
Creerai tre file:
point.h: dichiara una structPointcon due membri interi:xey. Dichiara anche due funzioni che agiscono come metodi:point_move: accetta un puntatore a Point e due interi (dxedy) e sposta la posizione del punto aggiungendo questi valori axeypoint_print: accetta un puntatoreconsta Point e ne visualizza le coordinate (questa funzione non dovrebbe modificare il punto)
POINT_H.point.c: implementa entrambe le funzioni. Rifletti attentamente su quale funzione necessita di un puntatore normale (per modificare il punto) e quale usa un puntatoreconst(per leggere in sicurezza senza modificare).main.c: crea un Point, spostalo e visualizza la sua posizione in diverse fasi.
Riceverai quattro valori interi in input: la x iniziale, la y iniziale, il valore di dx (quantità di spostamento orizzontale) e il valore di dy (quantità di spostamento verticale).
Nel file principale, inizializza un Point con le coordinate di partenza, stampa la sua posizione iniziale, spostalo delle quantità indicate e poi stampa la sua nuova posizione.
La funzione point_print dovrebbe produrre l’output in questo formato:
Point: ({x}, {y})Per esempio, con gli input 3, 5, 2 e -1, l’output sarebbe:
Point: (3, 5)
Point: (5, 4)Provalo tu
#include <stdio.h>
#include "point.h"
int main() {
// Leggi i valori di input
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Crea un Point con coordinate iniziali (x, y)
// TODO: Stampa la posizione iniziale usando point_print
// TODO: Sposta il punto di (dx, dy) usando point_move
// TODO: Stampa la nuova posizione usando point_print
return 0;
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Basi di programmazione modulare
File di intestazioneGuardie di inclusioneFile sorgenteFunzioni staticheRipasso: calcolatrice modulare4Incapsulamento
Il concetto di puntatori opachiDefinire struct opacheGetter e setterLa convalida nei setterRiepilogo: scatola segreta2Oggetti e metodi
Le struct come oggettiIl puntatore 'Self'Correttezza constPuntatore o valoreMetodi di supportoRiepilogo: gestore di punti5Progetto: Conto bancario semplice
Configurazione del progettoImplementazione del conto8Polimorfismo
Puntatori a funzione nelle structSimulare i metodiIl concetto di interfacciaImplementare le interfacceIterazione polimorficaRiepilogo: Greeter11Pattern di progettazione in C
Pattern SingletonPattern FactoryPattern IteratorRiepilogo: Factory di Logger3Ciclo di vita degli oggetti
Pattern del costruttorePattern del distruttoreInizializzazione sullo stackCopia profondaRiepilogo: wrapper di stringhe6Ereditarietà tramite composizione
Incorporamento delle structLa regola del primo membroAccesso ai membri della classe baseUpcastingRiepilogo: gerarchia di forme9Progetto: Disegnatore di forme
Panoramica del progettoImplementazione del cerchioImplementazione del rettangoloUtilizzo polimorficoContenitore di formeEsercitati da solo: Compilatore C online