Dyuichi Blog

オブジェクト指向シリーズⅠ: オブジェクト指向とは

はじめに

本記事は「オブジェクト指向シリーズ」の第1回目の記事である.

「オブジェクト指向シリーズ」では,私がオブジェクト指向について勉強する中で特に重要であると思ったトピックについてまとめている.

誰かの勉強の際の手助けになれば幸いであるが,誤りがあれば以下に記載されているいずれかのSNSにご連絡いただけるとありがたい.

オブジェクト指向とは

ソフトウェア開発の際に用いられる考え方,概念である.

では,どういった考え方なのか.実はここに明確な定義が存在しているわけではない.オブジェクト指向という名前の通り,ソフトウェア部品を「モノ」として捉え,それら「モノ」を中心にソフトウェアを開発する考え方である.

抽象的な表現となっており理解するのが困難だが,オブジェクト指向は明確な定義のもと発展したものではないため,仕方ない(私の力不足説もある).

もし誰かにオブジェクト指向とは何か簡潔に説明するよう求められたら,

「モノが物体として存在するイメージで,このモノを中心にソフトウェアを開発する手法」

と言うだろう.

オブジェクト指向の起源

1967年にノルウェーで考案されたSimulaというプログラミング言語がオブジェクト指向の起源にあたる.Simulaは現代のオブジェクト指向プログラミング言語(OOPL)では当たり前のように使用されている,クラス,ポリモーフィズム,継承を初めて採用した言語であった.

このSimulaにアラン・ケイが感化されて,アラン・ケイ氏の率いるゼロックス社がSmalltalkというプログラミング言語を開発した.このSmalltalkが誌上紹介されたことが「オブジェクト指向」を世に知らしめるきっかけとなった.

オブジェクト指向プログラミング言語

以下が代表的なオブジェクト指向プログラミング言語である.

  • Java
  • Python
  • C++
  • C#
  • Ruby

上に挙げた言語以外にもオブジェクト指向プログラミング言語は多く存在する.

また,勘違いしてはいけないのは,クラスなどを採用していないからと言ってオブジェクト指向でソフトウェア開発できないわけではないという点である.例えば,Golangにはクラスが無いが,オブジェクト指向プログラミングを行っている例はいくつも存在する(以下例).

ただし,もちろんオブジェクト指向を言語仕様としてサポートしている方がオブジェクト指向で開発しやすい.

まとめ

オブジェクト指向とは,ソフトウェア開発手法の一種,抽象的な考え方である.言語によって,オブジェクト指向の得意不得意が存在するが,決してオブジェクト指向を実現できないわけではないので,ソフトウェア開発の際には他の要素も考慮した言語選択が必要である.

参考文献

本記事では,オブジェクト指向とは何かについて,特に自分が勉強中気になった点を中心にざっくりと書いてみた.

次回はオブジェクト指向の三大要素である,カプセル化,ポリモーフィズム,継承について解説する.