解説
今回は、オブジェクトの触り部分を紹介します。
オブジェクトは、オブジェクト指向プログラミングで出てくる、プログラムの部品です。オブジェクト指向では、データと内部処理を、オブジェクトという入れ物の中に隠蔽して1つの単位として扱います。この、中身を隠してひとまとめにすることをカプセル化と言います。
┏オブジェクト━┓ ┃ 隠 蔽 ┃ ┃┏━━━┓ ┃ ┃┃データ┃ ┃ ┃┗━━━┛ ┃ ┃ ↑ ┃ ┃ |利用 ┃ ┃ | ┃ ┃┏━━━┓ ┃ ┏━━━━━━━━━━┓ ┃┃処 理┠──╂─┨外部から利用する命令┃ ┃┗━━━┛ ┃ ┗━━━━━━━━━━┛ ┗━━━━━━━┛
オブジェクト指向の実現の仕方は、プログラミング言語によって違います。多く見られるオブジェクト指向では、データをオブジェクト内の変数で、処理をオブジェクト内の関数で表現しています。
┏オブジェクト━┓ ┃ 隠 蔽 ┃ 公 開 ┃┏━━━━┓ ┃ ┃┃ 変 数 ┃ ┃ ┃┗━━━━┛ ┃ ┃ ↑ ┃ ┃ | 利用 ┃ ┏━━━┓ ┃ | ┃┏┫引 数┣┓ ┃┏━━━━┓ ┃┃┗━━━┛┃ ┃┃ ┗━━┛ ┃ ┃┃内部処理 ┃ ┃┃ ┏━━┓ ┃ ┃┗━━━━┛ ┃┃┏━━━┓┃ ┃ 関数 ┃┗┫戻り値┣┛ ┗━━━━━━━┛ ┗━━━┛
このように、隠蔽部分と公開部分に分かれているのは、オブジェクト指向の特徴の1つです。外部に公開した部分の仕様を変更しない限り、内部のデータや処理を書き換えても、外部からは同じようにそのオブジェクトを利用することができます。
そうすることで、オブジェクト内部の開発と、オブジェクトを利用する側の開発を別々に行い、それぞれ別途に改良していくことが可能になります。こういった仕組みは、大規模のプログラムを開発する際に非常に有用です。
こういった仕組みは、電化製品の電源ソケットが規格化されているのに似ています。家の電気工事を行っても、電化製品は買い替える必要はありません。同じように、電化製品を買い替えても、家の電気配線を更新する必要がありません。
オブジェクト指向プログラミングでは、こういった電化製品の仕組みと同じように、外部との接触部分を規格化することで、別途の更新が可能になっています。
また、上記の例では、関数だけを外部に公開していました。外部に公開可能なのは、関数だけでなく変数も公開可能です。
┏オブジェクト━┓ ┃ 隠 蔽 ┃ 公 開 ┃┏━━━━┓ ┃ ┃┃ 変 数 ┃ ┃ ┃┗━━━━┛ ┃ ┃┏━━━━━━━━━━━━━┓ ┃┃ 変 数 ┃ ┃┗━━━━━━━━━━━━━┛ ┃ ↑ ┃ ┃ | 利用 ┃ ┏━━━┓ ┃ | ┃┏┫引 数┣┓ ┃┏━━━━┓ ┃┃┗━━━┛┃ ┃┃ ┗━━┛ ┃ ┃┃内部処理 ┃ ┃┃ ┏━━┓ ┃ ┃┗━━━━┛ ┃┃┏━━━┓┃ ┃ 関数 ┃┗┫戻り値┣┛ ┗━━━━━━━┛ ┗━━━┛
オブジェクトの実際の利用の仕方は、次回以降で紹介していきます。
サンプル
オブジェクトの典型的な形が分かるコードを、代表的なオブジェクト指向のプログラミング言語であるJavaで簡単に書いてみます。
クラスやインスタンスについては、次回以降話をするので、ここではオブジェクトの基本構造のみを示します。
package com.crocro;
public class MyObject {
// データ部分
int no = 0;
// 処理部分
public int add(int addNo) {
no += addNo;
return no;
}
}
