今日から、ついに「オブジェクト指向」について学習する。
ここで、挫折する人が多いようです。
(わたしは「メソッド」で数回、挫折したので、なんとも言えないですが……)
■オブジェクト指向って??■
「オブジェクト指向」と初めて聞いたとしたら、「それは、なに?」と思うはずです。
わからないことを、すぐに検索して調べる人は、まずwikipediaを見るでしょう。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91
「オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方。」
と書いてある。
「オブジェクト指向プログラミング」も見てみる。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
「相互にメッセージを送りあう、オブジェクトの集まりとしてプログラムを構成する技法」
これで理解出来るなら問題はないですね。
わたしは、出来ませんでした。
「オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方。」
wikipedia に書いてあるように、オブジェクト指向とは、考え方。
これ!!という完璧な定義はない。
登場人物の気持ちを考えなさい、という国語の問題に似ていますね。
正解は、おそらく作者しか決められないけれど、大まかな正解が存在していて
限りなく正解に近づくための勉強方法がある。
視点を変えて、「オブジェクト指向」じゃなくて困ることって??と考えてみる。
昔は、計算機の性能が現代とは比べ物にならないくらい低かった。
そのため、大規模なソフトウェア開発は行われていなかった。
今まで学習してきた、手続き型(逐一、指示を出して上から順に実行)で問題がなかった。
年々、計算機の性能が上がっていき、大規模なソフトウェア開発が必要になった。
そうなると、ソースコードの量が膨大になり、どんどん複雑化して
人間が把握出来なくなった。(あくまでも、人間が!!)
人間が、自分たちで書いたコードに対処しきれなくなってしまったわけです。
(さきほどの、wikipediaの「オブジェクト指向プログラミング」のページに背景が書いてあるので、読んでみるといいかもしれない。)
人間が対処するために生まれたのが 「オブジェクト指向プログラミング」 なのです。
(コンピュータは適切な指示さえ与えれば、どんなに汚いコードでも困ったりせずに、こなしてくれますよね)
これだけだと、よくわからないですね。
どうやって対処するの??結局、どうなるの?メリットは??
疑問が尽きない。
少しずつ、さらっと説明。
■オブジェクト指向 メリット■
・柔軟性があがる
・再利用性があがる
・保守性がよくなる
以上の三つが一般的によく言われているメリット。
ただ、この時点では、メリットを享受していない。
なにも書いていないし、概要を学んでいるだけだから。
最低限、理解しなくてはいけないことは、
人間が、コードを把握して、対処出来る!!(逆に、出来なくては意味がない)
ということ。
メリットは、わかったけれど、具体的にどうしたらメリットを受けられるかというと。
三大要素というものが存在する。
■オブジェクト指向 三大要素■
・カプセル化
・継承
・ポリモーフィズム
ここは、今後、学習していくから、こういう3つの要素があるんだな、とさらっと流す。
■オブジェクトって??■
ここまで、何度も出てきた「オブジェクト」ってなんだろう??
オブジェクトは、「属性」と「操作」をもったもの。
具体的にどういうことか、
下の絵を参考にして、オブジェクトを作ってみる。
まず、この絵が何を表現しているかというと
「うちの近所の争い」(の一部)です。
野良猫がいて、餌やりのおばさんがいて、隣のおばちゃんがいて……。
野良猫は、餌をねだります。
餌やりおばさんは、野良猫に餌をあげます。
それを、ときどき、隣のおばちゃんが怒ります。
怒られた餌やりおばさんと猫は逃げていきます。
それを、わたしは見ています。
3個のオブジェクトが作られました。
「野良猫」、「餌やりおばちゃん」、「隣のおばちゃん」。
属性は、「種族」のみ。これが、全員、知っている登場人物だったら「名前」、「年齢」があったかもしれない。
操作は、行動。他にも様々な行動をするけど、少しだけ書きました。
(実際には、隣のおばちゃんは「世間話をする」などがあります)
絵には、「自分」が登場しているのに、オブジェクトは作られていませんね。
ここでは「自分」は「近所の争い」の観測者であり、創造主、神様です!!
わたしが、現実世界を見て、設計しています。
(オブジェクト指向は設計がとっても大事です。)
野良猫と餌やりおばちゃんの操作である「逃げる」、は
隣のおばちゃんの「怒る」があって発生する。
野良猫が「餌をねだって」、餌やりおばさんが「餌をあげて」、野良猫が「食べる」。
このように、オブジェクトが互いに操作を呼び出しあっている。
また、餌やりおばちゃんは野良猫に「属性-名前 : タマちゃん」をつけているかもしれない。
野良猫は、餌やりおばちゃんを「属性 - タイプ : 善」、隣のおばちゃんを「属性 - タイプ : 悪」としているかもしれない。
オブジェクトは、互いに属性を読み書き出来る。
そして、互いに呼び出しあったり、読み書きして、1つのプログラムとなる。
今日はここまで。
おおまかな概念を理解したから、次回は、具体的に学んでいく。
0 件のコメント:
コメントを投稿