문제 14 · 실습 — 클래스의 역할
클래스가 데이터와 함수를 묶고(캡슐화) private 필드를 보호하는(정보 은닉) 모습을 확인합니다.
cpp
#include <iostream>
#include <string>
using namespace std;
// 데이터(name, score)와 그를 다루는 함수를 하나로 묶은 설계 틀
class Student {
private:
string name;
int score; // 외부에서 직접 접근 불가
public:
Student(string n, int s) : name(n), score(s) {}
void setScore(int s) { // 유효성 검사를 거친 안전한 변경
if (s >= 0 && s <= 100) score = s;
}
void show() const {
cout << name << ": " << score << "점" << endl;
}
};
int main() {
Student a("김철수", 85);
a.show();
a.setScore(95);
a.show();
a.setScore(200); // 범위를 벗어난 값 → 무시됨
a.show();
return 0;
}출력은 다음과 같습니다. 200은 범위를 벗어나 무시되므로, 잘못된 값으로부터 데이터가 보호됩니다.
김철수: 85점
김철수: 95점
김철수: 95점