まとめ:Point Manager
CoddyのCジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 11/61。
チャレンジ
簡単2D座標を管理する完全な Point モジュールを作成しましょう。この復習チャレンジでは、structをオブジェクトとして扱う方法、つまりポインターを使用して状態を変更する方法と、読み取り専用の操作に const ポインターを使用する方法をすべて組み合わせます。
threeつのファイルを作成します:
point.h:xとyというtwoつの整数メンバーを持つPointstructをDeclareします。また、メソッドとして機能するtwoつのfunctionをDeclareします:point_move: Pointへのpointerとtwoつの整数(dxとdy)を受け取り、これらのvaluesをxとyに加算してpointのpositionを移動しますpoint_print: Pointへのconstpointerを受け取り、そのcoordinatesを表示します(このfunctionはpointをmodifyしてはいけません)
POINT_Hというsymbolをusingしてinclude guardsを使用します。point.c: 両方のfunctionをImplementします。pointをmodifyするためにどのfunctionが通常のpointerを必要とし、変更せずに安全に読み取るためにどのfunctionがconstpointerを使用するのかを慎重に考えてください。main.c: PointをCreateし、移動させ、さまざまな段階でそのpositionを表示します。
fourつの整数入力を受け取ります: initial x、initial y、dx value(水平方向に移動する量)、dy value(垂直方向に移動する量)です。
mainファイルで、開始時のcoordinatesを持つ Point を初期化し、initial positionをPrintし、指定された量だけ移動させてから、新しいpositionをPrintします。
point_print functionは次のformatでOutputする必要があります:
Point: ({x}, {y})たとえば、入力が 3、5、2、-1 の場合、Outputは次のようになります:
Point: (3, 5)
Point: (5, 4)自分で試してみよう
#include <stdio.h>
#include "point.h"
int main() {
// 入力値を読み取る
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: 初期座標 (x, y) で Point を作成する
// TODO: point_print を使って初期位置を出力する
// TODO: point_move を使って点を (dx, dy) だけ移動する
// TODO: point_print を使って新しい位置を出力する
return 0;
}
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ