1. はじめに
こんにちは!私は現在"Ruby"を中心にプログラミング学習をしています。
"Ruby"に限らずその手の言語を学ぶにあたって"オブジェクト指向"という言葉を避けては通れないのではないでしょうか。
今回は"オブジェクト指向"に付随する言葉をいくつかピックアップし『人間社会』に例えてみようと思います。
2. オブジェクト指向とは
まず最初に"オブジェクト指向プログラミング"とは何かということから始めていきたいと思います。"オブジェクト指向プログラミング"とは『各要素をパーツとして見立ててこれらを組み合わせることによって1つのソフトウェアシステムを構築する』というものです。
例えば『人間社会』を『ソフトウェアシステム』とした場合、エンジニアやサポートスタッフといった様々な職業に就く人々が『パーツ』に当たります。そしてそうした人々が個々に自身の役割に取り組むことによって『人間社会(=ソフトウェアシステム)』が成り立っています。このように各機能をもった部品を組み合わせることによって1つの完成品を体現することができます。
3. クラスとは
クラスとは一般的に『オブジェクトの設計図』と言われています。言い換えるならば『フレームワーク』や『枠組み』ともなるのではないでしょうか。例えば"オブジェクト"を"エンジニア"と仮定した場合、その職業人を形作るために必要な基礎知識を養成する職業訓練や人材育成カリキュラムだと思っていただければわかりやすいかと思います。
4. インスタンスとは
インスタンスとはクラスに組み込むための『属性(データ)』というのが一般的です。
先ほどの基礎だけを身に着けられる職業訓練(=クラス)だけだと、エンジニアとして存在できる意義が危ういですよね。なので先ほどの基礎という一連の枠組みに実践演習といった、実際に機能するようになるための応用的なアウトプットが必要になります。これをインスタンスだと思っていただけると幸いです。
5. 最後に
上記のものを規模順に表すと以下のようになります。インスタンス ≦ クラス < オブジェクト < ソフトウェアシステム
1つ1つの『個』が社会『全体』を形作っているということと通ずるところがあるのではないかと思います
手短ではございますが、今回はこれにて失礼いたします。