最近、人気のあるプログラミング言語では、ほとんどがオブジェクト指向に基づいたプログラミング言語になっております。
このオブジェクト指向とはいったい何なのか、オブジェクト指向の概念を理解することは容易ではなく初心者にとっては大きな壁となっているようです。
この記事では、オブジェクト指向について初心者の方に分かりやすく解説をします。
各種プログラミング言語でのプログラム開発の概念
オブジェクト指向以前のプログラミング言語
一般的に「一つの連続したプログラム」としてプログラミングを行います。
プログラム自体が連続したプログラム構成になるため、プログラムが複雑になりやすく、プログラミングを分業で行いにくい側面もあります。
オブジェクト指向のプログラミング言語
「オブジェクト=モノ」とした概念で、プログラム開発を「個々のオブジェクトの集合体」として捉え、一つ一つを切り離してプログラミングが行えます。
それぞれのオブジェクトは単独で動作するだけでなく、それぞれを連携させて動作させることができ、より複雑なプログラムが構築できます。
オブジェクト指向プログラム設計の概念
クラス
オブジェクト指向のプログラミングで生成するオブジェクトの設計図のことを「クラス」と呼び、「データ」「振る舞い」の要素をまとめて定義します。
「データ」「振る舞い」はプログラム言語によって色々な呼び方があります。
「データ」⇒ C++「メンバー変数」 Java「フィールド」
「振る舞い」⇒ C++「メンバー関数」 Java「メソッド」など

オブジェクトの概念
オブジェクトの概念
カプセル化
オブジェクトが外部に対して必要とされるデータとメソッドのみを公開し、逆に公開したくないデータとメソットは内部に隠蔽する仕組みをカプセル化と呼びます。
カプセル化によりオブジェクトが外部から不用意にアクセスされ干渉されなくします。
継 承
既存のオブジェクトを共通化して再利用する考え方であり、データとメソッドを新しいオブジェクトに引き継ぐことを「継承」と呼びます。
継承では新たなデータとメソッドを追加することができます。
また、継承する事によりコードを書く量が少なくて済み、作業効率があがります。
ポリモーフィズム(多様性)
オブジェクト指向プログラミング言語では同じ名前のプログラムを複数定義できます。
たとえば同じ名前の動画ファイルと音声ファイルを、それぞれのファイル形式に合わせて動作させることができます。
このように多様性のあるプログラムにする考え方があり、そのことをポリモーフィズムと呼びます。
プログラム構築の概念
商店街の人の流れをシミレーションするプログラムを書く想定での事例
オブジェクト指向以外のプログラミング言語で書く場合の概念
「道路」「店舗」「人」をプログラム内に羅列する方法で書くのが一般的で、プログラムが複雑になりやすい。
プログラム自体が連続したプログラム構成になるため、分業で作業を行いにくい面がある。
オブジェクト指向のプログラミング言語で書く場合の概念
「道路」「店舗」「人」をそれぞれのオブジェクトとして定義することにより、個々のオブジェクトの集合体として構築できる。
プログラムの柔軟な構成が可能であり、キメこまいプログラミングが可能になる。
オブジェクト指向のメリット
- プログラム全体の構成が把握しやすい。
- プログラミングの分業化も行い易く、効率的にプログラミングできる。
- カスタマイズがしやすく、柔軟な対応ができる。(仕様変更等に対応しやすい)
- プログラムの共通化により再利用がしやすく、開発作業の効率化が図れる。
- バグ等の原因が見付け易く、修正がやり易い。
オブジェクト指向のデメリット
- オブジェクト指向の概念を理解するのが難しい。
- 複数のプログラマーで作業する場合、理解度の差が作業の停滞を生む可能性がある。
参考|主なオブジェクト指向のプログラミング言語
C++
C言語を機能拡張したプログラミング言語であり、ハードウェアを直接操作することから、アプリケーションやモバイルアプリまで、幅広い範囲のプログラムを作成できる。
C#
Windows向けアプリケーション開発に使用されている以外に、Mac、iOS、AndroidといったOSにも対応しており、Webアプリも開発できる汎用的なプログラミング言語です。
Java
世界中の基幹システムで使われているプログラミング言語であり、汎用的でOSに依存しないのが大きな特徴です。
SIer系の業界に強いプログラミング言語でもあります。
Swift
iOS、Mac、Apple TV、Apple Watch向けのアプリケーションを開発するためにAppleが作ったプログラミング言語です。
Python
統計処理や数値計算を得意とするプログラミング言語であり、シンプルな構文、1行で多くの処理を記述可能等、コードの記述量が少なくて済むことが特徴です。
また、Pythonは「オフサイドルール」初稿というコードの書き方の規則があるため、誰が書いてもほぼ同じソースコードになり、他人の書いたコードも読みやすいのが特徴です。
Ruby
日本で開発されたプログラミング言語であり、Ruby on RailsというWebアプリケーションフレームワークを使うことで、WebサイトやWebベースの業務システムを効率良く開発できます。
日本では、スタートアップ企業に人気の高いプログラミング言語です。
PHP
動的にWebページを生成することができるサーバーサイドのスクリプト言語です。
他のプログラミング言語と比較して仕様や文法が簡単なため習得しやすく、また歴史も長く動作も安定しているのが特徴です。
JavaScript
メッセージボックスの表示、HTMLコンテンツの操作、カレンダー、ゲームなど、様々な動的コンテンツを作成できる言語です。
まとめ
オブジェクト指向の概念は分かりにくい部分もありますが、プログラムを効率良く書くための要になる概念です。
オブジェクト指向のプログラミング言語が登場するまでの開発現場は、プログラムを追加したら他のプログラムに影響が出たり、プログラムの一部を修正したら他の部分に影響が出て別の修正が必要になったりといった問題が常に発生していました。
オブジェクト指向のプログラミング言語の登場で、オブジェクト個々のカプセル化、継承、多様性が実現可能となり、より効率的なプログラミング構築が可能になりました。
この記事がお役に立てれば幸いです。
コメント