【図解・実は簡単】オブジェクト指向とはプログラムの部品化です!

オブジェクト指向
新人ヒヨコ
新人ヒヨコ

IT企業に就職し、システムエンジニア1年生になった新人ヒヨコです!

新人ヒヨコ
新人ヒヨコ

研修で、『オブジェクト指向』を教えてもらったのですが、難しくてイマイチわかりません(泣)

ぴかりさん、教えてください。

ぴかり(夫)
ぴかり(夫)

あぁ~。オブジェクト指向ですね。

プログラミング未経験の人には大きなハードルですよね。

実を言うと、システムエンジニア暦12年の私も、オブジェクト指向が何かっていうのは、曖昧な理解なんです。

新人ヒヨコ
新人ヒヨコ

え?そうなんですか?

ぴかり(夫)
ぴかり(夫)

そもそも、オブジェクト指向とはプログラミングする上での考え方(概念)であり、隅々まで理解しようとするのではなく、まずは全体の雰囲気を捉える必要があります。

新人ヒヨコ
新人ヒヨコ

ふ~ん。そういうものなんですね。

ぴかり(夫)
ぴかり(夫)

それでは、オブジェクト指向について説明していきますね。

細かい言葉を覚えるのではなく、全体をつかむ心構えで聞いてください。

 

スポンサーリンク

オブジェクト指向とは?

ぴかり(夫)
ぴかり(夫)

まずは、オブジェクト指向とは何かですが、

「プログラムの部品化」をすすめる考え方です。

新人ヒヨコ
新人ヒヨコ

部品化?

ぴかり(夫)
ぴかり(夫)

それでは、まずオブジェクト指向ではないプログラムでシステムを作った場合を、携帯会社の通信料請求プログラムを例で説明してみましょう。

ぴかり(夫)
ぴかり(夫)

D社、A社、S社の3社とも

「通信料の計算」をして、「請求書の印刷」をする

同じプログラムを、それぞれ作らなくてはいけません。

ぴかり(夫)
ぴかり(夫)

では、オブジェクト指向の場合はどのようになると思いますか?

新人ヒヨコ
新人ヒヨコ

まだオブジェクト指向が、よくわからないので

どうなるのか想像もつきません。

ぴかり(夫)
ぴかり(夫)

オブジェクト指向とは、「プログラムの部品化」を進める考え方です。

部品化を進めると、以下の図のようになります。

ぴかり(夫)
ぴかり(夫)

部品化する前は、3社とも「通信料の計算」「請求書の印刷」をするプログラムをそれぞれ作成してましたよね?

部品化されたプログラムを利用することで、3社はプログラムを作成する必要がなくなります。

つまり、オブジェクト指向を取り入れることで、

プログラムの流用(部品化)が可能となり

より高度なシステムを、低コストで作ることができます。

新人ヒヨコ
新人ヒヨコ

なるほど~。でも、部品って誰が作ってるんですか?
買ったりして使うんですか?

ぴかり(夫)
ぴかり(夫)

基本的な部品は、開発環境キットというものに入っているので、はじめから利用することができます。

特殊な部品は、特殊部品を作った会社にお金を払って利用します。

もちろん無料で公開している特殊部品もたくさん存在します。

 

オブジェクト指向について

ぴかり(夫)
ぴかり(夫)

では、プログラムを部品化するために必要な知識を学んでいきましょう。

まずは、以下の2つを理解しましょう。

・クラス

・メソッド

もうひとつ「プロパティ」というものがありますが、ひとまず置いておきすね。

 

ぴかり(夫)
ぴかり(夫)

簡単に言うのは難しいのですが、

・クラスとは、プログラムの処理をひとつにまとめたもの

・メソッドとは、プログラムの処理

です。

新人ヒヨコ
新人ヒヨコ

?????

ぴかり(夫)
ぴかり(夫)

こんなイメージです。

新人ヒヨコ
新人ヒヨコ

メソッドがたくさん集まっているものが、

クラスという理解で合っていますか?

ぴかり(夫)
ぴかり(夫)

合っています!

しかし、クラスの中にメソッドが1つだけという場合もあります。

 

具体例として、四則演算のクラスを考えてみると、
以下の図のようになります。

ぴかり(夫)
ぴかり(夫)

この場合、「2つの数を足す」とか「引く」とかが、メソッドにあたります。

ぴかり(夫)
ぴかり(夫)

上記の四則演算のクラスをJavaでプログラムを書いてみると

こんな感じです。まぁ、イメージだけでも掴んでもらえればと思います。

新人ヒヨコ
新人ヒヨコ

やっぱりプログラムになると難しく感じますね…

ぴかり(夫)
ぴかり(夫)

難しく感じても、イメージがつかめればOKですよ。

 

繰り返しですが、オブジェクト指向のプログラミングには、

部品化するために、以下の考え方があります。

 

・クラスとは、プログラムの処理をひとつにまとめたもの

・メソッドとは、プログラムの処理

です。

 

「クラス」「メソッド」という言葉は頻繁に出てくるので、

覚えておきましょう!

インスタンス化について

ぴかり(夫)
ぴかり(夫)

次にインスタンス化について説明します。

新人ヒヨコ
新人ヒヨコ

なんですか、それは?

ぴかり(夫)
ぴかり(夫)

部品化したプログラムを利用するために、必要な作業を

「インスタンス化」と言います。

日本語に置き換えると「実体化」です。

新人ヒヨコ
新人ヒヨコ

実体化…抽象的で難しいですね

ぴかり(夫)
ぴかり(夫)

よく書籍などで、クラスは『設計図』に例えられます。

 

しかし、設計図はそのままでは使えませんよね?

実際に利用するために、クラスをインスタンス化するのです。

新人ヒヨコ
新人ヒヨコ

クラスのままでは利用できないので、

その「インスタンス化」っていうのが必要なんですね。

ぴかり(夫)
ぴかり(夫)

その通りです。

実際にプログラムで「インスタンス化」するということは

newというコマンドを使います。

ぴかり(夫)
ぴかり(夫)

以下の図では、

四則演算クラス(Shisokuenzan)を、

別のプログラム(RyokinKeisan)で利用するために、

「new Shisokuenzan()」とインスタンス化しています。

 

ぴかり(夫)
ぴかり(夫)

そしてインスタンス化したクラスは

「変数」に入れる必要があります。

 

「変数」については下記記事参照してください。

初めてのJavaScript~第二章~「変数」を理解しよう【超初心者向け】
迷えるリス JavaScriptで"Hello World!"が表示できるようになりました! ぴかり(夫) がんばりましたね! これで、迷えるリスさんもJavaScri...
ぴかり(夫)
ぴかり(夫)

図にしてみると、以下のような感じです。

変数「hensuu_1」にインスタンス化したクラスを入れています。

 

ぴかり(夫)
ぴかり(夫)

そして、メソッドを利用するときには、変数名の後ろに「.(ドット)」をつけてメソッド名を記述します。

「hensuu_1.Tashizan_Two(10,20);」

これは、四則演算クラスの足し算メソッド(Tashizan_Two)を実行しています。

新人ヒヨコ
新人ヒヨコ

Tashizan_Twoの「Two」ってなんですか?

ぴかり(夫)
ぴかり(夫)

これは、ただ私がつけた名前なだけです。

2つの値を足し算するので、Tashizan_Twoとしました。

新人ヒヨコ
新人ヒヨコ

どこまでが、自由に名前をつけられる部分なのですか?

ぴかり(夫)
ぴかり(夫)

それでは、自由に名前をつけられる部分を

赤枠で囲んでみますね。

ぴかり(夫)
ぴかり(夫)

クラスの名前や、メソッドの名前は自由に作ることができます。

基本的に、名前関係は自分で作れますよ。

新人ヒヨコ
新人ヒヨコ

わかりました。

ぴかり(夫)
ぴかり(夫)

ここまで理解できれば、初心者プログラマーとしては及第点ですね。

ぴかり(夫)
ぴかり(夫)

この次は、オブジェクト指向(上級編)に続きます。

上級編では、

・型のキャスト

・継承

・インターフェース

と、いうものを説明します。

 

これらがラスボスです。頑張りましょう!

新人ヒヨコ
新人ヒヨコ

わかりました!頑張ります!


 

同じ内容をYouTube動画でも解説しています!

 

初級編が理解できたら上級編へ!

【継承・キャスト・インタフェース】オブジェクト指向(上級編)
ぴかり(夫) 前回の記事で、オブジェクト指向とは、 プログラミングを部品化するための考え方 と、説明しました。 キーワードは覚えていますか? 新人ヒヨコ ...

 

コメント