20120602 JavaOO道場 オブジェクト指向概論
- 1. オブジェクト指向概論
オブジェクト指向概論
その1
― その1.
クラス オブジェクトと
クラスと
クラスとオブジェクトと
インスタンス
インスタンスについて
インスタンスについて ―
Ver.1.0
2012/6/3 1/20
- 2. この資料は
この資料は・・・
資料
「クラス」「オブジェクト」「インスタンス」
3つの単語を軸に、「オブジェクト指向の
概要」についてまとめてあります。
2012/06/02 2/20
- 3. オブジェクト指向の前に・・・
オブジェクト指向の
指向 Javaの世界
現実の世界 コンピュータの世界
概 日本語で表現したら?
日本語で表現したら?
したら モ
デ
Car クラス 「ク
ク
念 リ ラ
の ン ス
車( or 自動車)
自動車) グ
」
世
(
設
界 計 (コンピュータ世界における)
コンピュータ世界における)
世界における
抽象化
)
具象化
実 「オ
オ 「イ
イ
体 ブ ン
CarA
CarB
CarC
の ジ ス
ェ タ
世 ク ン
界 ト ス
」 」
2012/06/02 3/20
- 4. オブジェクト指向
オブジェクト指向(Object Oriented)とは?
とは?
オブジェクト・・・1 英文法で
オブジェクト・・・1.英文法で目的語
・・・
2.対象、客観 ⇒ 客体
対象、客観
もしくはプログラム
もしくはプログラムの世界で オブジェクトとは
とは?
(Java,もしくはプログラムの世界で言う)オブジェクトとは?
実世界に存在する事物
実世界に存在する事物
する
・・・名詞としての性質を
・・・名詞としての性質
・・・名詞としての性質を持つもの
指向・・・1 ある目的を目指して向かうこと。
指向・・・1.ある目的を目指して向かうこと。
・・・ 目的 して
ある特定 方向を指定すること
特定の すること。
2.ある特定の方向を指定すること。
ある方向に けること。
ある方向に向けること。
ある方向
、もしくはプログラム 世界で
プログラムの
(Java、もしくはプログラムの世界で言う)
オブジェクト指向とは?
指向とは
オブジェクト指向とは?
⇒「モノ」を大切にする考え方
モノ」 大切にする考
にする
2012/06/02 4/20
- 6. オブジェクトの
オブジェクトの要素
オブジェクトには以下の つの要素が まれる。
オブジェクトには以下の二つの要素が含まれる。
には以下 要素
○属性=状態(データ)
属性=状態(データ)
○ふるまい=操作(機能)
ふるまい=操作(機能)
ヒトの :「属性(状態)」・・・目
ヒトの例:「属性(状態)」・・・目が2つ、耳が2つ、口が一つ etc.
属性 )」・・・
⇒ モノを構成する「データ」
⇒ モノを構成する「データ」
する
「ふるまい(操作)」・・・見る、聞く、話す etc.
ふるまい(操作)」・・・見
)」・・・
⇒ データを使用して果たす「機能」
データを使用して果たす「機能」
して
2012/06/02 6/20
- 7. オブジェクト「ヒト」
オブジェクト「ヒト」の例:
属性・・・目
属性・・・目が2つ、口が一つ etc.
・・・
ヒト ふるまい・・・見
ふるまい・・・見る、話す etc.
・・・
オブジェクトは メッセージ」 受信して仕事を開始する
オブジェクトは「メッセージ」を受信して仕事を開始する
して仕事
メッセージ
「目」で
ヒト ヒト
「授業を
授業を 「見て」
⇒
始めます」
めます」 「耳」で
2012/06/02 「聞く」 7/20
- 8. つまり「オブジェクト」とは「属性」 ふるまい・操作」
つまり「オブジェクト」とは「属性」と「ふるまい・操作」を
持ち、「メッセージ」を受信して仕事をするモノである。
、「メッセージ」 受信して仕事をするモノである
メッセージ して仕事をするモノである。
(※注・・・Java言語においては「属性」を「フィールド」、
・・・ 言語においては「属性」 フィールド」、
言語においては
「ふるまい
「ふるまい」を「メソッド」という。 )
ふるまい」 メソッド」という。 )
ということは・・・
ということは・・・
世の中オブジェクトだらけである!
オブジェクトだらけである!
だらけである
それぞれを個別に認識していったら、
それぞれを個別に認識していったら、頭がスグに
個別 していったら スグに
パンクしてしまう!そこで・・・
パンクしてしまう!そこで・・・
してしまう
抽象化」 モデリング」
オブジェクトを集めて「抽象化」⇒「モデリング」
オブジェクトを
ない、 クラス」 作成する
を行ない、「クラス」を作成する!
する!
2012/06/02 8/20
- 9. 次は「クラス」ってヤツを語ろうか
クラス」ってヤツを
ヤツ
現実の世界 コンピュータの世界
概 日本語で表現したら?
日本語で表現したら?
したら モ
デ
Car クラス 「ク
ク
念 リ ラ
の ン ス
車( or 自動車)
自動車) グ
」
世
(
設
界 計
)
実 「オ
オ 「イ
イ
体 ブ ン
CarA
CarB
CarC
の ジ ス
ェ ココの話ね タ
世 ク ン
界 ト ス
」 」
2012/06/02 9/20
- 10. クラスとは?
クラスとは?
とは
世の中には沢山の「モノ」があるので
には沢山の モノ」
沢山
抽象化して捉えよう!
抽象化して 「クラス
クラス」
抽象化して捉えよう! ⇒ 「クラス」の考え方
B C D
A
ヒト
2012/06/02 10/20
- 11. Java言語のクラスは?
言語のクラスは
言語
(Javaの基本的なクラス構造)
の基本的なクラス構造
構造)
「クラス」
クラス」
「フィールド」
フィールド」
Javaのクラスは
のクラスは
4つのメンバー
つのメンバー 「メソッド」
メソッド」
要素)
(要素)を持つ
「コンストラクタ」
コンストラクタ」
初心者向けなので、
static イニシャライザとか、
アノテーションとかは華麗にスルー
クラス」
「inner クラス」
2012/06/02 11/20
- 12. 最後に インスタンス」ってヤツね
最後に「インスタンス」ってヤツね
ヤツ
現実の世界 コンピュータの世界
概 日本語で表現したら?
日本語で表現したら?
したら モ
デ
Car クラス 「ク
ク
念 リ ココの話ね ラ
の ン ス
車( or 自動車)
自動車) グ
」
世
(
設
界 計
)
実 「オ
オ 「イ
イ
体 ブ ン
CarA
CarB
CarC
の ジ ス
ェ タ
世 ク ン
界 ト ス
」 」
2012/06/02 12/20
- 13. インスタンスとは?
インスタンスとは?
とは
クラスはオブジェクト(実体)から創製されたが、
クラスはオブジェクト(実体)から創製されたが、
創製されたが
クラスから生成された実体を インスタンス」
から生成された実体
逆にクラスから生成された実体を「インスタンス」
という
※注・・・「オブジェクト」と「インスタンス」は同義で
・・・「オブジェクト」 インスタンス」 同義で
使用される場合が
使用される場合が多い。
使用される場合
「オブジェクト」 、「クラス」、「インスタンス」の
オブジェクト」 、「クラス」、「インスタンス
クラス」、「インスタンス」
言葉のニュアンスの いに注意!
言葉のニュアンスの違いに注意! 注意
2012/06/02 13/20
- 15. ヒトの
ヒトの例:新しいヒトを作ってみよう!
しいヒト
ヒトを ってみよう!
複製(コピー) 場合:
複製(コピー)の場合:
A A
A A A A
複製(コピー)
複製(コピー)
作成の場合:
作成の場合: F F
A
作成
F F
2012/06/02 15/20
- 16. インスタンスの
インスタンスの例:自動販売機
「クラス」は
「自動販売機クラス」 「インスタン
ス」を作る為
○品物を入れる空間がある の「型」とも
○お金を入れてボタンを押すと 言える
品物が出てくる
酒 ジュース タバコ
イ 菊正宗 ファンタ マイルド7
ン ラガー オレンジ キャビン
ス モンラッシェ コカ・コーラ キャスター
タ カクテル・バー ファンタ
アップル
ン
ス
2012/06/02 16/20
- 17. Javaの場合は・・・?
の場合は・・・?
Javaにおける「クラス」「インスタンス」の考え方も同様
における「クラス」「インスタンス」
における 」「インスタンス
Javaの場合は「new」演算子を用いて、クラスから
の場合は 」演算子を いて、クラスから
インスタンスを作成する
インスタンスを作成する
:「 」クラスからインスタンス「 」 作成するとき
からインスタンス
例:「Test」クラスからインスタンス「t」を作成するとき
Test t = new Test( );
作成したインスタンスを
作成したインスタンスを
したインスタンス インスタンスを
インスタンスを作成
2012/06/02 格納する為
格納する為の変数
格納する 17/20
- 18. まとめ
「オブジェクト」・・・
オブジェクト」 実際に存在する モノ」
する「
実際に存在する「モノ」
クラス」
「クラス」・・・・・・・・ 「モノ」を抽象化して作った「型」
モノ」 抽象化して った「
して作
インスタンス」
「インスタンス」・・ 「クラス」を元にして作られた「実体」
クラス」 にして作られた「実体」
(「オブジェクト」
(「オブジェクト」≒「インスタンス」
オブジェクト インスタンス」
では「 」演算子を いて生成
生成)
Javaでは「new」演算子を用いて生成)
では
ここで触れていない点:「クラス間 関係」
ここで触れていない点:「クラス間の関係」
クラス
「コンストラクタ」
「コンストラクタ」
コンストラクタ
「カプセル化
「カプセル化」 etc.etc…
2012/06/02
カプセル 18/20
- 19. おまけ
応用編・・・「オブジェクト指向の再定義」
応用編・・・「オブジェクト指向の再定義」 by 平鍋さん
・・・ 指向 平鍋さん
http://objectclub.jp/technicaldoc/object-orientation/OO_redefine
2012/06/02 19/20
- 20. おまけ
応用編・・・「
応用編・・・「TDDについて」
・・・ について」
について
http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615
⇒ 上記サイトは shuji_w6e さんのサイトです
2012/06/02 20/20