2018.11.1

プログラミング初心者のためのオブジェクト指向

立命館大学 インターン

畑野法史


 

マーケティングチームに所属しています、立命館大学2回生の畑野です。

今回は、オブジェクト指向開発について紹介します。

 

■はじめに「オブジェクト指向とは?」

 

オブジェクト指向開発と言いましたが、皆さんはオブジェクト指向という言葉を聞いたことがありますか。

ここで初めて知ったという方もおられるでしょう。

 

オブジェクト指向とはソフトウェア開発の技法の一つです。

ここでのソフトウェアはアプリケーション、プログラミングと置き換えて考えると分かり易いでしょう。

オブジェクト指向の対となる技法として、手続き型(逐次型)プログラミングがあります。

手続き型プログラミングはコンピュータのアーキテクチャに関係が密接なC言語が有名です。

 

■オブジェクト指向と手続き型の違い

 

手続き型プログラミングでは、コンピュータがどのように動作するのかを考え、一行ずつ記述していきます。

それに対してオブジェクト指向では、オブジェクトを意識して記述していきます。

オブジェクトがどのような動作をするのか、オブジェクト同士でどのような関連があるのかを考えます。

 

オブジェクト指向の考え方の例

身近な例ではありますが、オブジェクトの考え方をネット通販システムに置き換えて考えてみましょう。

*商品

ネット通販は商品を販売するシステムなので、商品がなければ成立しません。

 

*購入者

ネット通販では私たちの視点である購入者が必ず存在します。

購入者がいないネット通販はいずれ衰退するでしょう。

 

*注文

購入者が商品を購入するためには注文ができなければなりません。

 

*通販のシステム

webページやデータベースの管理をします。

ネット通販では購入者や商品の情報などを管理することが必要不可欠です。

 

*倉庫管理者

商品を管理する者が必要です。

 

*料金管理者

注文をして料金を受け取るためには料金管理者が必要です。

料金管理者がいなければお金を受け取ることはできません。

そのため、利益をあげることはできません。

 

このように、ネット通販は大きく分けて6つの要素から成り立っていることが分かります。

「閲覧できなければ商品を選べないじゃないか」

「運送業者がいなければ誰が商品を運ぶのだ」

こういった疑問が生じた方もおられるかもしれませんが、あまり抽象度を下げると分かりにくくなってしまいます。

今回はこの6要素で成り立つものなのだと考えてください。

 

そして、今回紹介した6つの要素はそれぞれが関係を持ちます。

例えば、購入者は注文という操作によって通販のシステムを使用します。

また、倉庫管理者は通販のシステムと商品を照らし合わせます。

 

ここで皆さんに考えてほしい点は、それぞれの要素が互いに独立しているということです。

購入者と商品管理者が同じ動きをするわけにはいきません。

また、注文という動作と商品という物は全く別次元の概念ですよね。

 

購入者・注文・商品・通販のシステム・倉庫管理者・料金管理者の6つの要素がネット通販システムを成立させています。

つまり、6つの要素をそれぞれオブジェクトとして捉え、それぞれが一つの構成単位となってソフトウェアを構築するのです。

まさしくこれがオブジェクト指向の考え方なのです。

 

■オブジェクトとは

 

オブジェクトは以下の三要素を重視します。

・何ができるのか(操作)

・何と似ているのか(区別)

・何からできているのか(性質)

 

前述したネット通販の仕組みのオブジェクトの一つである商品を例に考えてみましょう。

商品と言っても、ネット通販では様々なモノが販売されています。

今回は、パソコンを例に解説していきます。

 

私がこの記事を執筆するために使用したパソコンと、あなたの家にあるパソコンや近所の図書館にあるパソコンはそれぞれ異なります。

何が異なるのでしょうか。

それは、先述した三要素のうちの区別と性質です。

 

*パソコンの三要素

操作:パソコンを閲覧

区別:型番

性質:OSやスペック、価格など

※操作はコンテキストにより変化します。

※抽象度が低すぎると分かりにくくなります

例:A社の100%オレンジジュース->ジュース

 

つまり、パソコンという商品のオブジェクトはこの三要素を持っているのです。

 

■クラスとインスタンス

 

先ほど紹介した三要素をクラスと言います。

そして、クラスを元に生成されるオブジェクトをインスタンスと言います。

 

クラスとインスタンスの例

唐突にクラスやインスタンスと言われてもピンとこない方も多いでしょう。

車の生産を例として考えてみましょう。

 

*A社のABCという車

性質:高級車

排気ガスの排出量が少ない

5人乗り

天井が開くオープンカー

 

操作:走る(直進、カーブ、曲がる、後退する)

止まる

その他、車の動作として必要な要素

 

*B社のいろはという車

性質:軽自動車

排気ガスの排出量は平均

4人乗り

 

操作:A社と同様

 

これは車の簡易仕様書です。

これをもとに車を製造するように、社長が指令を出します。

すると、社員たちは車の製造を始めます。

そして、仕様書の内容を忠実に守られた車が完成します。

この時の簡易仕様書がクラス、完成した車がインスタンスです。

 

■まとめ

 

*オブジェクト

オブジェクト指向開発におけるソフトウェアの構成単位の一つ。

それぞれのオブジェクトが異なる三要素を持ち、それぞれ異なる要素を持つ。

 

*クラス

オブジェクトの設計書。

 

*インスタンス

クラスによって生成されるオブジェクト。

 

■さいごに

 

オブジェクト指向はプログラミング開発技法の一つとして考えられる概念です。

 

概念を言葉で正確に表現することは難しく、オブジェクト指向の考え方も人それぞれ異なります。

初めのうちはオブジェクト指向を理解することは難しいでしょう。

ですが、プログラミングの勉強をしているうちに様々な概念と出会い、オブジェクト指向の概念への理解はきっと深まります。

 

オブジェクト指向が良く分からないという方は、

「型を取って貼り付ける」

と考えておけばいいと私は考えています。

今回は少し難しい話でしたが、未来電子でのプログラミング学習に少しでも興味をもったらコース内容をチェックしてみてください!

プログラミング


この記事を書いた人

立命館大学インターン

畑野法史