Zusammenfassung: Point Manager
Teil des Abschnitts Objektorientierte Programmierung der C-Journey von Coddy. Lektion 11 von 61.
Aufgabe
EinfachLass uns ein vollständiges Point-Modul erstellen, das eine 2D-Koordinate verwaltet. Diese Wiederholungsaufgabe fasst alles zusammen, was du über die Behandlung von Structs als Objekte gelernt hast: die Verwendung von Zeigern zum Ändern des Zustands und von const-Zeigern für schreibgeschützte Operationen.
Du wirst drei Dateien erstellen:
point.h: Deklariere einPoint-Struct mit zwei Integer-Mitgliedern:xundy. Deklariere außerdem zwei Funktionen, die als Methoden fungieren:point_move: erhält einen Zeiger auf Point zusammen mit zwei Integern (dxunddy) und verschiebt die Position des Punkts, indem diese Werte zuxundyaddiert werdenpoint_print: erhält einenconst-Zeiger auf Point und zeigt dessen Koordinaten an (diese Funktion darf den Punkt nicht ändern)
POINT_H.point.c: Implementiere beide Funktionen. Überlege genau, welche Funktion einen regulären Zeiger benötigt (um den Punkt zu ändern) und welche einenconst-Zeiger verwendet (um sicher zu lesen, ohne Änderungen vorzunehmen).main.c: Erstelle einen Point, bewege ihn und zeige seine Position in verschiedenen Phasen an.
Du erhältst vier Integer-Eingaben: das anfängliche x, das anfängliche y, den dx-Wert (Menge der horizontalen Bewegung) und den dy-Wert (Menge der vertikalen Bewegung).
Initialisiere in deiner Hauptdatei einen Point mit den Anfangskoordinaten, gib seine anfängliche Position aus, bewege ihn um die angegebenen Werte und gib anschließend seine neue Position aus.
Die Funktion point_print sollte dieses Format ausgeben:
Point: ({x}, {y})Bei den Eingaben 3, 5, 2 und -1 würde die Ausgabe beispielsweise folgendermaßen aussehen:
Point: (3, 5)
Point: (5, 4)Probier es selbst
#include <stdio.h>
#include "point.h"
int main() {
// Eingabewerte lesen
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Erstelle einen Point mit den Anfangskoordinaten (x, y)
// TODO: Gib die Anfangsposition mit point_print aus
// TODO: Bewege den Punkt um (dx, dy) mit point_move
// TODO: Gib die neue Position mit point_print aus
return 0;
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der modularen Programmierung
Header-DateienInclude GuardsQuelldateienStatische FunktionenWiederholung: Modularer Taschenrechner4Kapselung
Konzept der Opaque PointersOpaque Structs definierenGetter und SetterValidierung in SetternRückblick: Die geheime Box2Objekte und Methoden
Structs als ObjekteDer 'Self'-PointerConst-CorrectnessPointer vs. WertHilfsmethodenZusammenfassung: Point Manager5Projekt: Einfaches Bankkonto
Projekt-SetupImplementierung des Kontos3Objekt-Lebenszyklus
Konstruktor-MusterDestruktor-MusterStack-InitialisierungTiefe KopieRückblick: String-Wrapper6Vererbung durch Komposition
Struct-EinbettungDie First-Member-RegelZugriff auf Parent-MemberUpcastingRückblick: Formenhierarchie9Projekt: Formen-Zeichner
ProjektübersichtKreis-ImplementierungRechteck-ImplementierungPolymorphe VerwendungShape-ContainerÜbe selbstständig: Online-C-Compiler