IT企業に就職し、システムエンジニア1年生になった新人ヒヨコです!
研修で、『オブジェクト指向』を教えてもらったのですが、難しくてイマイチわかりません(泣)
ぴかりさん、教えてください。
あぁ~。オブジェクト指向ですね。
プログラミング未経験の人には大きなハードルですよね。
実を言うと、システムエンジニア暦12年の私も、オブジェクト指向が何かっていうのは、曖昧な理解なんです。
え?そうなんですか?
そもそも、オブジェクト指向とはプログラミングする上での考え方(概念)であり、隅々まで理解しようとするのではなく、まずは全体の雰囲気を捉える必要があります。
ふ~ん。そういうものなんですね。
それでは、オブジェクト指向について説明していきますね。
細かい言葉を覚えるのではなく、全体をつかむ心構えで聞いてください。
オブジェクト指向とは?
まずは、オブジェクト指向とは何かですが、
「プログラムの部品化」をすすめる考え方です。
部品化?
それでは、まずオブジェクト指向ではないプログラムでシステムを作った場合を、携帯会社の通信料請求プログラムを例で説明してみましょう。
D社、A社、S社の3社とも
「通信料の計算」をして、「請求書の印刷」をする
同じプログラムを、それぞれ作らなくてはいけません。
では、オブジェクト指向の場合はどのようになると思いますか?
まだオブジェクト指向が、よくわからないので
どうなるのか想像もつきません。
オブジェクト指向とは、「プログラムの部品化」を進める考え方です。
部品化を進めると、以下の図のようになります。
部品化する前は、3社とも「通信料の計算」「請求書の印刷」をするプログラムをそれぞれ作成してましたよね?
部品化されたプログラムを利用することで、3社はプログラムを作成する必要がなくなります。
つまり、オブジェクト指向を取り入れることで、
プログラムの流用(部品化)が可能となり
より高度なシステムを、低コストで作ることができます。
なるほど~。でも、部品って誰が作ってるんですか?
買ったりして使うんですか?
基本的な部品は、開発環境キットというものに入っているので、はじめから利用することができます。
特殊な部品は、特殊部品を作った会社にお金を払って利用します。
もちろん無料で公開している特殊部品もたくさん存在します。
オブジェクト指向について
では、プログラムを部品化するために必要な知識を学んでいきましょう。
まずは、以下の2つを理解しましょう。
・クラス
・メソッド
もうひとつ「プロパティ」というものがありますが、ひとまず置いておきすね。
簡単に言うのは難しいのですが、
・クラスとは、プログラムの処理をひとつにまとめたもの
・メソッドとは、プログラムの処理
です。
?????
こんなイメージです。
メソッドがたくさん集まっているものが、
クラスという理解で合っていますか?
合っています!
しかし、クラスの中にメソッドが1つだけという場合もあります。
具体例として、四則演算のクラスを考えてみると、
以下の図のようになります。
この場合、「2つの数を足す」とか「引く」とかが、メソッドにあたります。
上記の四則演算のクラスをJavaでプログラムを書いてみると
こんな感じです。まぁ、イメージだけでも掴んでもらえればと思います。
やっぱりプログラムになると難しく感じますね…
難しく感じても、イメージがつかめればOKですよ。
繰り返しですが、オブジェクト指向のプログラミングには、
部品化するために、以下の考え方があります。
・クラスとは、プログラムの処理をひとつにまとめたもの
・メソッドとは、プログラムの処理
です。
「クラス」「メソッド」という言葉は頻繁に出てくるので、
覚えておきましょう!
インスタンス化について
次にインスタンス化について説明します。
なんですか、それは?
部品化したプログラムを利用するために、必要な作業を
「インスタンス化」と言います。
日本語に置き換えると「実体化」です。
実体化…抽象的で難しいですね
よく書籍などで、クラスは『設計図』に例えられます。
しかし、設計図はそのままでは使えませんよね?
実際に利用するために、クラスをインスタンス化するのです。
クラスのままでは利用できないので、
その「インスタンス化」っていうのが必要なんですね。
その通りです。
実際にプログラムで「インスタンス化」するということは
newというコマンドを使います。
以下の図では、
四則演算クラス(Shisokuenzan)を、
別のプログラム(RyokinKeisan)で利用するために、
「new Shisokuenzan()」とインスタンス化しています。
そしてインスタンス化したクラスは
「変数」に入れる必要があります。
「変数」については下記記事参照してください。
図にしてみると、以下のような感じです。
変数「hensuu_1」にインスタンス化したクラスを入れています。
そして、メソッドを利用するときには、変数名の後ろに「.(ドット)」をつけてメソッド名を記述します。
「hensuu_1.Tashizan_Two(10,20);」
これは、四則演算クラスの足し算メソッド(Tashizan_Two)を実行しています。
Tashizan_Twoの「Two」ってなんですか?
これは、ただ私がつけた名前なだけです。
2つの値を足し算するので、Tashizan_Twoとしました。
どこまでが、自由に名前をつけられる部分なのですか?
それでは、自由に名前をつけられる部分を
赤枠で囲んでみますね。
クラスの名前や、メソッドの名前は自由に作ることができます。
基本的に、名前関係は自分で作れますよ。
わかりました。
ここまで理解できれば、初心者プログラマーとしては及第点ですね。
この次は、オブジェクト指向(上級編)に続きます。
上級編では、
・型のキャスト
・継承
・インターフェース
と、いうものを説明します。
これらがラスボスです。頑張りましょう!
わかりました!頑張ります!
同じ内容をYouTube動画でも解説しています!
初級編が理解できたら上級編へ!
コメント