オブジェクト指向プログラミングの概念やメリットについて解説

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

最近、人気のあるプログラミング言語ではC言語を除くと、ほとんどがオブジェクト指向に基づいたプログラミング言語になっております。

このオブジェクト指向とはいったい何なのか、オブジェクト指向の概念を理解することは容易ではなく、初心者にとっては大きな壁となってしまうこともあるようです。

この記事ではオブジェクト指向について、初心者の方に分かりやすく解説をします。

各種プログラミング言語でのプログラム開発の概念

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

一般的に「一つの連続したプログラム」としてプログラミングを行います。

プログラム自体が連続したプログラム構成になるため、プログラムが複雑になりやすく、プログラミングを分業で行いにくい面もあります。

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

「オブジェクト=モノ」とした概念で、プログラム開発を「個々のオブジェクトの集合体」として捉え、一つ一つを切り離してプログラミングが行えます。

それぞれのオブジェクトは単独で動作するだけでなく、それぞれを連携させて動作させることができ、より複雑なプログラムが構築できます。

オブジェクト指向プログラム設計の概念

クラス

オブジェクト指向のプログラミングで生成するオブジェクトの設計図のことを「クラス」と呼び、「データ」「振る舞い」の要素をまとめて定義します。

「データ」「振る舞い」はプログラム言語によって色々な呼び方があります。

「データ」⇒ C++「メンバー変数」 Java「フィールド」
「振る舞い」⇒ C++「メンバー関数」 Java「メソッド」

オブジェクトの概念説明図

オブジェクトの概念

オブジェクトの概念
カプセル化

オブジェクトが外部に対して必要とされるデータとメソッドのみを公開し、逆に公開したくないデータとメソットは内部に隠蔽する仕組みをカプセル化と呼びます。

カプセル化によりオブジェクトが外部から不用意にアクセスされ、干渉されないようにします。

継 承

既存のオブジェクトを共通化して再利用する考え方であり、データとメソッドを新しいオブジェクトに引き継ぐことを「継承」と呼びます。

継承では新たなデータとメソッドを追加することができます。

また、継承する事によりコードを書く量が少なくて済み、作業効率を上げることができます。

ポリモーフィズム(多様性)

オブジェクト指向プログラミング言語では同じ名前のプログラムを複数定義することができます。

たとえば同じ名前の動画ファイルと音声ファイルを、それぞれのファイル形式に合わせて動作させることができます。

このように多様性のあるプログラムにする考え方があり、そのことをポリモーフィズムと呼びます。

プログラム構築の概念

商店街の人の流れをシミレーションするプログラムを書く想定での例

オブジェクト指向以外のプログラミング言語で書く場合の概念

「道路」「店舗」「人」をプログラム内に羅列する方法で書くのが一般的で、プログラムが複雑になりやすい。

プログラム自体が連続したプログラム構成になるため、分業で作業を行いにくい面がある。

オブジェクト指向のプログラミング言語で書く場合の概念

「道路」「店舗」「人」をそれぞれのオブジェクトとして定義することにより、個々のオブジェクトの集合体として構築できる。

プログラムの柔軟な構成が可能であり、キメこまいプログラミングが可能になる。

オブジェクト指向のメリット

・プログラム全体の構成が把握しやすい。

・プログラミングの分業化も行い易く、効率的にプログラミングできる。

・カスタマイズがしやすく、柔軟な対応ができる。(仕様変更等に対応しやすい)

・プログラムの共通化により再利用がしやすく、開発作業の効率化が図れる。

・バグ等の原因が見付け易く、修正がやり易い。

オブジェクト指向のデメリット

・オブジェクト指向の概念を理解するのが難しい。

・複数のプログラマーで作業する場合、理解度の差が作業の停滞を生む可能性がある。

参考|主なオブジェクト指向のプログラミング言語

C++

C言語を機能拡張したプログラミング言語であり、ハードウェアを直接操作することから、アプリケーションやモバイルアプリまで、幅広い範囲のプログラムを作成することができます。

C#

Windows向けアプリケーション開発に使用されている以外に、Mac、iOS、AndroidといったOSにも対応しており、Webアプリケーションも開発できる汎用的なプログラミング言語です。

Java

世界中の基幹システムで使われているプログラミング言語であり、汎用的でOSに依存しないのが大きな特徴です。

Swift

iOS、Mac、Apple TV、Apple Watch向けのアプリケーションを開発するためにAppleが作ったプログラミング言語です。

Python

統計処理や数値計算を得意とするプログラミング言語であり、シンプルな構文、1行で多くの処理を記述可能等、コードの記述量が少なくて済むことが特徴です。

Ruby

日本で開発されたプログラミング言語であり、Ruby on RailsというWebアプリケーションフレームワークを使うことで、WebサイトやWebベースの業務システムを効率良く開発できます。

PHP

動的にWebページを生成することができるサーバーサイドのスクリプト言語です。

他のプログラミング言語と比較して仕様や文法が簡単なため習得しやすいと言われています。

JavaScript

メッセージボックスの表示、HTMLコンテンツの操作、カレンダー、ゲームなど、様々な動的コンテンツを作成できる言語です。

まとめ

 

オブジェクト指向の概念は分かりにくい部分もありますが、プログラムを効率良く書くための要になる概念です。

オブジェクト指向のプログラミング言語が登場するまでの開発現場は、プログラムを追加したら他のプログラムに影響が出たり、プログラムの一部を修正したら他の部分に影響が出て別の修正が必要になったりといった問題が常に発生していました。

オブジェクト指向のプログラミング言語の登場で、オブジェクト個々のカプセル化、継承、多様性が実現可能となり、より効率的なプログラミング構築が可能になりました。

小学校プログラミング教育|おすすめ学習ソフトとプログラミング教室
この記事では「小学校プログラミング教育の手引(第三版)|文部科学省」を分かり易く解説いたします。また人気の「小学生向けのプログラミング学習ソフト」を3選、代表的な小学生むけの「こどもプログラミング教室」について解説をいたします。

コメント