オブジェクト指向の根底にある概念、それがクラスです。これは元々構造体を拡張したものであり、クラスの定義部分は構造体とよく似ています。
イメージ的に構造体+関数+αってぐらいで。つまり構造体メンバに関数を含ませることができます(Cでも出来るけど…)。そして任意でメンバ変数をクラス内の関数以外からアクセスするのを禁止することが出来ます。
つまり、クラス内の変数を関数で包み込み、変数が外部から不当にアクセスされ、値を変えられ、結果として思わぬバグになるということを防ぐことが出来ます。
これによりバグの出現率を減らすことが出来ます。そしてそれぞれがバグのない部品を組み合わせれば比較的バグの少ないプログラムが作れるだろうという考え。これが信頼性が高いといわれる理由でしょう。ただ、ひとつ注意して欲しいのはクラス内の関数にバグがある場合はどうにもなりません。信頼性もへったくれも無いです。
また、前述したとおりクラス内の変数は外部からのアクセスが無いためクラス内で完結しています。つまり、他のコードと非依存関係にあると言えます。
よってあるプログラム内で作ったクラスを別のプログラム内で使う場合、一切なんの変更も無く使えるということになります。
ただし、これもクラス内の関数が特定のプログラムに依存した変数を使用していない場合に限ります。というかクラス内に外部変数を持ってくることはなるべく避け、引数を使ってデータ元を抽象化するようにしましょう。
また、語述しますがこうして作られたクラスはもとのコードを変更することなく、機能を拡張したり、変更することが可能です。これが生産性が高いといわれる理由のひとつです。
ただ、結局のところ生産性と信頼性はそれを作るプログラマに大きく依存することは言うまでも在りません。
|