カプセル化
知らなくても良いクラスオブジェクト内部の仕組みを隠すこと
なぜカプセル化するか
データの変更をオブジェクト自身に任せることによって、バグを引き起こさせないようにする
不正なデータ変更を禁止する条件を設定することができる
カプセル化を用いたプログラム
private
を使用する
#include <iostream>
using namespace std;
class Test {
private:
int num;
public:
void setNum(int x);
};
void Test::setNum(int x) {
num = x;
// cout << test.num << endl; ビルドエラーになる
cout << num << endl;
}
int main() {
Test test;
test.setNum(10);
}
10
getter/setter
getter
/setter
とは、メンバ変数に値を取得/設定するためだけを目的とするメンバ関数のこと
プログラム
#include <iostream>
using namespace std;
class Student {
private:
int score;
public:
void setScore(int x);
int getScore();
};
void Student::setScore(int x) {
score = x;
}
int Student::getScore() {
return score;
}
int main() {
Student Taro;
Taro.setScore(90);
cout << Taro.getScore() << endl;
}
90
不正な値の代入を防ぐ
setter
に不正な値の代入を防ぐようなプログラムを書くことで、バグが起きにくいコードになります
負の値が設定されるのを防ぐsetter
void Student::setScore(int x) {
if (0 > x) {
x = 0;
}
score = x;
}