以前クラスとメソッドについて、私なりの解釈でまとめてみた。
でも、オブジェクトについてはいったんスルーしてた。
学習を進めていくうちに「オブジェクト」という単語が出てくるようになったから、オブジェクトについて理解してみることにした。
クラスとオブジェクトについて解説しているものはたくさんあるけれど、初心者の私がプログラミングについて何も知識がない状態でみても正直何を言っているのかサッパリだった。
日本語で理解できなかったけれども一応英語でも調べてみた結果、なんとなくイメージできてしまったから、それを私なりに解釈してまとめてみたのが今回の記事・・・。
オブジェクトのことを調べてみると、クラスやメソッドとセットで解説されているものが多かったから、この機会にまとめてもう一度学習してみた。
クラスとは
クラスとは、簡単に言えば「カテゴリー」みたいなもの。
このプログラミング世界でのクラスとオブジェクトは、私たちの住む現実世界のことに例えることができる。
よく使われている例が「犬」。
まずいろいろな種類の「犬」がいるが、この「犬」がプログラミングで言う「クラス」にあたる。
クラスというのは設計図という意味の「blueprint」という単語で表されているが、これから何の話題について話すかなどの方向性を決めるもの。
そういう意味での設計図。
私はそう解釈した。
オブジェクトとは
オブジェクトというのは、「犬」そのもののこと。
言い換えれば、オブジェクトというのはクラスという枠で囲われた中にある一例ということ。
犬クラスの中に「犬」というオブジェクトだってありえる。
クラスとオブジェクトの違いは、クラスはカテゴリーといった枠組みのことを指し、オブジェクトは対象物を指す。
オブジェクトは2つの特性を持っているもののことを指す。
- 状態
- 動作
せっかくだから犬を例に使ってそれぞれみてみる。
状態
「犬」といっても、種類、色、大きさ、年齢など、同じ犬でもそれぞれの状態は異なる。
「犬」という枠の中でも、「種類、色、大きさ、年齢」といった同じ要素で仕分けることができるということがオブジェクトの特性の一つ。
例
犬A 種類・・・マルチーズ 色・・・白 年齢・・・8歳
犬B 種類・・・チワワ 色・・・黒 年齢・・・3歳
犬C 種類・・・ダックスフント 色・・・こげ茶 年齢・・・8歳
このように、オブジェクト「犬A」、「犬B」、「犬C」は同じ「犬」というカテゴリーにいて同じ「種類、色、年齢」という要素を持ちながら、その中身はそれぞれ違う。
犬には詳しくないから大体の大きさすらわかんない・・・。
大きさは省略しちゃった。
これがオブジェクト「犬A,B,C」の状態をあらわすもの。
プログラミングではデータメンバーと呼ばれたりする。
動作
動作とは、オブジェクトが共通して行う動作のこと。
プログラミングではメソッドと呼ばれるものがこれにあたる。
また「犬」を例に使う。
犬A 鳴く、走る、食べる、噛む
犬B 鳴く、走る、食べる、噛む
犬C 鳴く、走る、食べる、噛む
犬はこれらの動作を犬種や色などに関係なく共通して行う。
これがもう一つのオブジェクトの特性。
メソッド
メソッドというのは、動作を決めること。
例えば、今までさんざん見てきた「System.out.println();」もメソッドの1つ。
寝ることも食べることもできるのに、「走る」ということを選んだ。
そして走った。
この{「走る」ということを選んだ}というのがメソッド。
「犬が実際に走る」というのがプログラミングで言う実行にあたる。
そういうことだよね?
まとめ
クラスとは、オブジェクトを作成する際の設計図で、ビジネスで言うところの企画書みたいなもの。
私は枠組みって言っちゃってるけど合ってるんかな?
オブジェクトとは、「そのものの状態」と「動作」という2つの特性を持つものを指す。
メソッドは動作を決めるもの。
前回まとめたものよりも、マシになっている気がする。
私の中でもモヤモヤしていたところだったから、ちょっと理解が進んでよかった。
めちゃめちゃ時間かかったけど・・・。
ショシンシャクオリティー。
コメント