プログラミング言語のオブジェクト指向とは、概念やメリット

プログラミング

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

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

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

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

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

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

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

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

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

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

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

クラス

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

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

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

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

オブジェクトの概念

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

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

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

継 承

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

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

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

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

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

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

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

プログラム構築の概念

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

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

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

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

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

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

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

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

  • プログラム全体の構成が把握しやすい。
  • プログラミングの分業化も行い易く、効率的にプログラミングできる。
  • カスタマイズがしやすく、柔軟な対応ができる。(仕様変更等に対応しやすい)
  • プログラムの共通化により再利用がしやすく、開発作業の効率化が図れる。
  • バグ等の原因が見付け易く、修正がやり易い。

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

  • オブジェクト指向の概念を理解するのが難しい。
  • 複数のプログラマーで作業する場合、理解度の差が作業の停滞を生む可能性がある。

コーヒーブレイク!

あなたはMac派? それともWindows派?

ノートパソコンの占有率を見ると、Macが9%程度でWindowsが88%程度と圧倒的にWindowsが多数派です。

ところが、ITエンジニアに限るとMac愛用者のほうが多いようです!

理由は色々ありますが、MacにするかWindowsにするかは、プログラミングを行う環境を何にするか、何を作りたいかで違ってきます。

プログラマーやクリエイターを目指すのであれば、価格はそれなりにしますがMacをおすすめします。

ここでM2チップを搭載したMacの新商品が発売されましたので併せて紹介します。

MacBook Air Liquid Retina 13.6 MLY33J/A

2022年7月発売

次世代のM2チップに合わせて、デザインも性能も一新!

新しいMacBook Airは、薄くて頑丈なオールアルミニウムのボディ採用と電力効率が向上しました。

よりパワフルな8コアCPUと最大10コアのGPUで、高速なビデオ編集のパフォーマンスは、M1搭載MacBook Air 比 1.4倍!

さらに多くの4Kまたは8KのProResビデオストリームが編集可能になりました。

また、バッテリーは最大18時間使えるパワフル設計のノートPCです。

主な仕様

CPU Apple M2チップ・メモリ8GB・SSD 256GB・MacBook Air Liquid Retinaディスプレイ 13.6 インチ・重量:1.24kg

価格:15万円台(税込)~

MacBook Air 13.3 MGN93J/A

2020年11月発売

AppleがMacのために初めて設計したチップがM1です。

M1の8コアCPUと7コアGPUは、フレームレートを低下させずに最高品質を持つ複数の4Kビデオストリームを作成・編集したり、なめらかに再生することができます。

新商品のMacBook Air(M2チップ)まで必要のない方には、おすすめのノートPCです。

主な仕様

CPU Apple M1チップ・メモリ8GB・SSD 256GB・13.3型Retinaディスプレイ・重量:1.29kg

価格:11万円台(税込)~

MacBook Pro Liquid Retina XDR 14.2 MKGP3J/A

2021年10月発売

新しいMacBook Proは、CPUが「M1 Pro」または「M1 Max」から選択できます。

M1 ProとM1 Maxは、画期的なM1アーキテクチャを新しい高みに引き上げ、プロ向けノートPCに初めてシステムオンチップ(SoC)アーキテクチャを採用しました。

どちらも従来のM1チップと比べて一段と多くのCPUコアや、多くのGPUコア、大きなユニファイドメモリが搭載されパワーアップしました。

M1 Pro:10コアのCPU・最大16コアのGPU・最大32GBのユニファイドメモリ・最大200GB/sのメモリ帯域幅

M1 Max:10コアCPU・最大32コアのGPU・最大64GBのユニファイドメモリ・最大400GB/sのメモリ帯域幅

また、最大17時間駆動できるバッテリーを搭載!

主な仕様

CPU Apple 「M1 Pro」又は「M1 Max」・メモリ16GB・SSD 512GB・Liquid Retina XDRディスプレイ14インチモデル ・重量:1.6kg

価格:23万円台(税込)~

他に、16インチモデル「MacBook Pro Liquid Retina XDR 16.2 MK1E3J/A」
(2021年10月発売)があります。

「Mac」にするか「Windows」にするかノートPCの選び方を、別記事にしましたので以下よりご覧ください。

WindowsとMacのどちらを選べばいいの|プログラミング初心者向け

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

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コンテンツの操作、カレンダー、ゲームなど、様々な動的コンテンツを作成できる言語です。

まとめ

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

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

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

プログラミングスクールの失敗しない選び方の記事を見る

この記事がお役に立てれば幸いです。

コメント