요약: Point Manager
Coddy C 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 61개 중 11번째.
챌린지
쉬움2D 좌표를 관리하는 완전한 Point 모듈을 만들어 보겠습니다. 이 복습 challenge에서는 struct를 객체처럼 다루는 방법, 즉 포인터를 사용해 상태를 modify하는 방법과 읽기 전용 작업을 위한 const 포인터를 사용하는 방법을 모두 활용합니다.
다음 세 파일을 만듭니다.
point.h: 두 개의 integer members인x와y를 가진Pointstruct를 Declare합니다. 또한 메서드처럼 동작하는 두 function도 Declare합니다.point_move: Point를 가리키는 pointer와 두 개의 integer(dx및dy)를 Takes하며, 이 values를x와y에 더해 point의 position을 이동합니다.point_print: Point를 가리키는constpointer를 Takes하고 해당 coordinate를 표시합니다(이 function은 point를 modify하지 않아야 합니다).
POINT_Hsymbol을 사용해 include guards를 사용합니다.point.c: 두 function을 모두 Implement합니다. point를 modify하려면 어떤 function이 일반 pointer를 필요로 하고, modify 없이 안전하게 읽으려면 어떤 function이constpointer를 사용하는지 신중하게 생각하세요.main.c: Point를 Create하고, 이동시키며, 서로 다른 단계에서 position을 표시합니다.
네 개의 integer 입력을 받습니다: initial x, initial y, dx value(가로로 이동할 양), dy value(세로로 이동할 양)입니다.
main 파일에서 시작 coordinate로 Point를 초기화하고, initial position을 Print한 다음, 주어진 values만큼 이동시키고, 새로운 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 컴파일러