RunningCSharp

Microsoft系開発者による、雑多な記事。記事は個人の見解であり、所属組織を代表するものてはありません。

オブジェクト指向(言語ではない)の簡単な説明

~~~ 本記事は、「オブジェクト指向の考え方は、普段の人間の認識と近いと感じた」ということを言いたいだけの、緩い記事です。 オブジェクト指向言語特有の機能を主軸とした話ではありません。 ~~~

オブジェクトとは、「物」です。 「物」は、状態を示す「データ」と、能動的または受動的に行われる「振る舞い」の塊と捉えることが出来ます。

例えば、無〇良品あたりのリングノートであれば 「ページ数」「各ページの記載内容」「紙を纏めるリングの数」等といった「データ」と、 「ノートを持つ」「ノートに文字を書く」「ノートの文字を消す」「ノートのページを剥がす」など、物に関連する「振る舞い」があります。

上記のように、「データ」と「振る舞い」の塊である「物」には、「役割」を与えられます。

リングノートであれば「会議用のメモ帳」、「子供のお絵描き帳」、「家計簿」などの役割を与えられます。

ただし、場合によっては「扇子の代わり」、「チリ紙」、「(丸めて)メガホンにする」「背中に入れてコルセット代わり」といった役割を担わされる場合もあります。

「リングノート」を見て、「これ、メモ帳かな」と思うことはあっても、「これ、チリ紙だな」とは思わない事でしょう。 しかし、物に対し本来の「役割」と異なる使い方をしてしまう事も、稀にあります。本記事では、これを「誤用」と呼びます。

多くの人は、「リングノート = 開いて文字を書き、記録を行うもの」という「文脈」を読み取る事で、何の説明を受けずとも、本来の「役割」通りにリングノートを扱っている事と思います。

さて、今度はソフトウェアにおける例を見てみましょう。

例えば、単純にDB接続を行うオブジェクトを作ろうと思った場合、 「接続先サーバー」「接続先DB」「データ操作SQL」「接続状態」などのデータと、 「DB接続」「セッション確立」「データ操作」「コミット」「ロールバック」「DB切断」などの振る舞いを作ることでしょう。

上記のオブジェクトは、当然「データ接続を行うもの」であることが明白であるため、それ以外の何かとして「誤用」される可能性は必然的に低くなります。

「誤用」が減る理由の一つに、「DB接続オブジェクトはDB接続に使うもの」という「文脈」が生まれる事によるものが考えられます。

ごくごく当たり前の話なのですが、上記の「文脈」による「誤用」の抑制は、オブジェクト指向を用いるメリットとして大きいかと感じ、書かせて頂きました。

〜〜〜 最後に、ちょっとオブジェクト指向言語の話をしてしまいます。

これまでの構造化言語でも、ファイル単位やスコープ、構造体を用いたデータ集約などを用いて、データと振る舞いの関係性を整理していくことは可能です。

しかしながら、作り手のポリシー差異や作成期間の問題で、データと振る舞いが正しい関係性が保てなくなってしまうことが、少なくはなかったと思います。

オブジェクト指向言語は、データと振る舞いをより簡単に整理することが出来るため、データと振る舞いの関係性を保ちやすくなっております。(もちろん、絶対「誤用」はない、と保証するものではありませんが。)

更に、他の記事ではたくさん取り上げられております 、継承、多態、包含、カプセル化などの特徴で、再利用性と利便性を向上など、さらなるメリットが提供されております。