Zusammenfassung: Point Manager
Teil des Abschnitts Object Oriented Programming der C-Journey von Coddy — Lektion 11 von 61.
Aufgabe
EinfachLassen Sie uns ein vollständiges Point-Modul erstellen, das eine 2D-Koordinate verwaltet. Diese Wiederholungsaufgabe führt alles zusammen, was Sie darüber gelernt haben, Structs wie Objekte zu behandeln – unter Verwendung von Pointern zur Zustandsänderung und const-Pointern für schreibgeschützte Operationen.
Sie werden drei Dateien erstellen:
point.h: Deklarieren Sie einPoint-Struct mit zwei Integer-Elementen:xundy. Deklarieren Sie außerdem zwei Funktionen, die als Methoden fungieren:point_move— nimmt einen Pointer auf Point sowie zwei Integer (dxunddy) entgegen und verschiebt die Position des Punktes, indem diese Werte zuxundyaddiert werden.point_print— nimmt einenconst-Pointer auf Point entgegen und zeigt dessen Koordinaten an (diese Funktion sollte den Punkt nicht verändern).
POINT_H.point.c: Implementieren Sie beide Funktionen. Überlegen Sie genau, welche Funktion einen regulären Pointer benötigt (um den Punkt zu verändern) und welche einenconst-Pointer verwendet (um sicher ohne Änderung zu lesen).main.c: Erstellen Sie einen Point, bewegen Sie ihn und zeigen Sie seine Position in verschiedenen Stadien an.
Sie erhalten vier Integer-Eingaben: das initiale x, das initiale y, den dx-Wert (Betrag der horizontalen Verschiebung) und den dy-Wert (Betrag der vertikalen Verschiebung).
Initialisieren Sie in Ihrer Hauptdatei einen Point mit den Startkoordinaten, geben Sie seine ursprüngliche Position aus, verschieben Sie ihn um die angegebenen Beträge und geben Sie dann seine neue Position aus.
Die Funktion point_print sollte in diesem Format ausgeben:
Point: ({x}, {y})Zum Beispiel wäre bei den Eingaben 3, 5, 2 und -1 die Ausgabe:
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 Object Oriented Programming
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-Implementierung