이런 분들이 찾고 있어요
이 레슨과 관련된 학습 키워드
코드를 읽고 설명하면, 합격합니다
이 레슨과 관련된 학습 키워드
C++ 프로그래밍 — 성능과 추상화의 균형 → C에서 C++로
What — 클래스는 데이터와 행동을 하나로 묶는 설계도
[여기에 다이어그램: 좌우 비교]
Why — 왜 struct에서 class로 진화했는가?
[여기에 다이어그램: 접근 제어 시각화]
How — struct에서 class로의 전환 패턴
void move(Point\* p, int dx, int dy)[여기에 다이어그램: 3단계 진화 흐름도]
핵심 비교 — struct vs class
실세계 비유
오늘은 C++의 클래스가 무엇인지 알아보겠습니다.
클래스는 데이터와 행동을 하나로 묶는 설계도입니다.
그림 상단을 보세요.
왼쪽 C struct는 변수만 묶을 수 있었습니다.
int x, int y처럼 데이터 필드만 존재했죠.
함수는 struct 밖에 따로 분리되어 있었습니다.
오른쪽 C++ class는 데이터와 함수를 하나로 통합합니다.
이것이 바로 캡슐화입니다.
왜 struct에서 class로 진화했을까요?
C struct는 데이터가 외부에 완전히 노출됩니다.
불변 조건을 보장할 방법이 없었습니다.
좌표가 음수면 안 된다는 규칙도 막을 수 없었죠.
class는 접근 제어로 내부 상태를 보호합니다.
생성자에서 초기 상태를 검증할 수도 있습니다.
데이터와 로직이 한 곳에 모여 응집도가 높아집니다.
이제 그림 중간 부분을 보세요.
Step 1, C struct는 데이터가 무방비 상태입니다.
Step 2에서 멤버 함수를 struct 안에 추가했습니다.
응집도는 높아졌지만 여전히 전부 public입니다.
Step 3에서 class로 전환하며 캡슐화가 완성됩니다.
그림 하단을 보시면 접근 제어 계층 구조가 있습니다.
가장 안쪽 private은 외부 접근이 차단됩니다.
protected는 파생 클래스만 접근할 수 있습니다.
바깥쪽 public은 누구나 호출 가능한 인터페이스입니다.
오른쪽 예시처럼 obj.move()는 허용되지만 obj.x_는 에러입니다.
아래 비교표를 보시면 struct와 class의 차이를 알 수 있습니다.
기본 접근 제어만 다르고 나머지 기능은 완전히 동일합니다.
관례상 단순 데이터 묶음은 struct, 추상화에는 class를 씁니다.
struct는 열린 서랍장, 누구나 내용물을 꺼내고 넣을 수 있죠.
class는 금고 캐비닛, 특정 메서드로만 잔액 같은 데이터를 보호합니다.