20120602 javaoo道場 オブジェクト指向概論

20
2012/6/3 1/20 オブジェクト オブジェクト オブジェクト オブジェクト指向概論 指向概論 指向概論 指向概論 ― その その その その1 1. クラス クラス クラス クラスと とオブジェクト オブジェクト オブジェクト オブジェクトと インスタンス インスタンス インスタンス インスタンスについて について について について ― Ver.1.0

Upload: skowata

Post on 02-Jul-2015

1.640 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: 20120602 JavaOO道場 オブジェクト指向概論

2012/6/3 1/20

オブジェクトオブジェクトオブジェクトオブジェクト指向概論指向概論指向概論指向概論――――そのそのそのその1111....

        クラスクラスクラスクラスととととオブジェクトオブジェクトオブジェクトオブジェクトとととと

        インスタンスインスタンスインスタンスインスタンスについてについてについてについて――――

Ver.1.0

Page 2: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 2/20

このこのこのこの資料資料資料資料はははは・・・・・・・・・・・・

「クラス」「オブジェクト」「インスタンス」

3つの単語を軸に、「オブジェクト指向の

概要」についてまとめてあります。

Page 3: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 3/20

オブジェクトオブジェクトオブジェクトオブジェクト指向指向指向指向のののの前前前前にににに・・・・・・・・・・・・

実体の世界

概念の世界

現実の世界 コンピュータの世界

車車車車車車車車(((((((( or or 自動車自動車自動車自動車))))自動車自動車自動車自動車))))

Javaの世界

Car Car クラスクラスクラスクラスクラスクラスクラスクラス日本語日本語日本語日本語でででで表現表現表現表現したらしたらしたらしたら???? 「「「「クラス

クラス

クラス

クラス」」」」

「「「「インスタンス

インスタンス

インスタンス

インスタンス」」」」

「「「「オブジェクト

オブジェクト

オブジェクト

オブジェクト」」」」

CarA

CarB

CarC

モデリング

モデリング

モデリング

モデリング(

設計設計設計設計)

抽象化抽象化抽象化抽象化((((コンピュータコンピュータコンピュータコンピュータ世界世界世界世界におけるにおけるにおけるにおける))))

具象化具象化具象化具象化

Page 4: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 4/20

オブジェクトオブジェクトオブジェクトオブジェクト指向指向指向指向(Object Oriented)とはとはとはとは????� オブジェクトオブジェクトオブジェクトオブジェクト・・・・・・・・・・・・1111....英文法英文法英文法英文法でででで目的語目的語目的語目的語

2222....対象対象対象対象、、、、客観客観客観客観    ⇒⇒⇒⇒    客体客体客体客体

((((Java、、、、もしくはもしくはもしくはもしくはプログラムプログラムプログラムプログラムのののの世界世界世界世界でででで言言言言うううう))))

    オブジェクトオブジェクトオブジェクトオブジェクト指向指向指向指向とはとはとはとは? ? ? ? 

⇒⇒⇒⇒「「「「モノモノモノモノ」」」」をををを大切大切大切大切にするにするにするにする考考考考ええええ方方方方 

((((Java,もしくはもしくはもしくはもしくはプログラムプログラムプログラムプログラムのののの世界世界世界世界でででで言言言言うううう))))オブジェクトオブジェクトオブジェクトオブジェクトとはとはとはとは????

�指向指向指向指向・・・・・・・・・・・・1111....あるあるあるある目的目的目的目的をををを目指目指目指目指してしてしてして向向向向かうことかうことかうことかうこと。。。。

                         2222....あるあるあるある特定特定特定特定のののの方向方向方向方向をををを指定指定指定指定することすることすることすること。。。。

                                    あるあるあるある方向方向方向方向にににに向向向向けることけることけることけること。。。。

実世界実世界実世界実世界にににに存在存在存在存在するするするする事物事物事物事物                ・・・・・・・・・・・・名詞名詞名詞名詞としてのとしてのとしてのとしての性質性質性質性質をををを持持持持つものつものつものつもの

Page 5: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 5/20

オブジェクトオブジェクトオブジェクトオブジェクト指向指向指向指向におけるにおけるにおけるにおける「「「「オブジェクトオブジェクトオブジェクトオブジェクト」」」」ってってってってヤツヤツヤツヤツをををを語語語語ろうかろうかろうかろうか

実体の世界

概念の世界

現実の世界 コンピュータの世界

車車車車車車車車(((((((( or or 自動車自動車自動車自動車))))自動車自動車自動車自動車))))

Car Car クラスクラスクラスクラスクラスクラスクラスクラス日本語日本語日本語日本語でででで表現表現表現表現したらしたらしたらしたら???? 「「「「クラス

クラス

クラス

クラス」」」」

「「「「インスタンス

インスタンス

インスタンス

インスタンス」」」」

「「「「オブジェクト

オブジェクト

オブジェクト

オブジェクト」」」」

CarA

CarB

CarC

モデリング

モデリング

モデリング

モデリング(

設計設計設計設計)

ココの話ね

Page 6: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 6/20

オブジェクトオブジェクトオブジェクトオブジェクトのののの要素要素要素要素

� オブジェクトオブジェクトオブジェクトオブジェクトにはにはにはには以下以下以下以下のののの二二二二つのつのつのつの要素要素要素要素がががが含含含含まれるまれるまれるまれる。。。。

○○○○属性属性属性属性====状態状態状態状態((((データデータデータデータ))))

○○○○ふるまいふるまいふるまいふるまい====操作操作操作操作((((機能機能機能機能))))

ヒトヒトヒトヒトのののの例例例例:「:「:「:「属性属性属性属性((((状態状態状態状態)」)」)」)」・・・・・・・・・・・・目目目目がががが2222つつつつ、、、、耳耳耳耳がががが2222つつつつ、、、、口口口口がががが一一一一つつつつ etc.

「「「「ふるまいふるまいふるまいふるまい((((操作操作操作操作)」)」)」)」・・・・・・・・・・・・見見見見るるるる、、、、聞聞聞聞くくくく、、、、話話話話すすすす etc.

        ⇒⇒⇒⇒    モノモノモノモノをををを構成構成構成構成するするするする「「「「データデータデータデータ」」」」

⇒⇒⇒⇒    データデータデータデータをををを使用使用使用使用してしてしてして果果果果たすたすたすたす「「「「機能機能機能機能」」」」

Page 7: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 7/20

オブジェクトオブジェクトオブジェクトオブジェクトはははは「「「「メッセージメッセージメッセージメッセージ」」」」をををを受信受信受信受信してしてしてして仕事仕事仕事仕事をををを開始開始開始開始するするするする

ヒトヒトヒトヒト

属性属性属性属性・・・・・・・・・・・・目目目目がががが2222つつつつ、、、、口口口口がががが一一一一つつつつ etc.

ふるまいふるまいふるまいふるまい・・・・・・・・・・・・見見見見るるるる、、、、話話話話すすすす etc.

ヒトヒトヒトヒト「「「「授業授業授業授業をををを

    始始始始めますめますめますめます」」」」

メッセージメッセージメッセージメッセージ

⇒⇒⇒⇒

ヒトヒトヒトヒト「「「「目目目目」」」」でででで

「「「「見見見見てててて」」」」

「「「「耳耳耳耳」」」」でででで

「「「「聞聞聞聞くくくく」」」」

オブジェクトオブジェクトオブジェクトオブジェクト「「「「ヒトヒトヒトヒト」」」」のののの例例例例::::

Page 8: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 8/20

つまりつまりつまりつまり「「「「オブジェクトオブジェクトオブジェクトオブジェクト」」」」とはとはとはとは「「「「属性属性属性属性」」」」とととと「「「「ふるまいふるまいふるまいふるまい・・・・操作操作操作操作」」」」をををを

持持持持ちちちち、「、「、「、「メッセージメッセージメッセージメッセージ」」」」をををを受信受信受信受信してしてしてして仕事仕事仕事仕事をするをするをするをするモノモノモノモノであるであるであるである。。。。

((((※※※※注注注注・・・・・・・・・・・・Java言語言語言語言語においてはにおいてはにおいてはにおいては「「「「属性属性属性属性」」」」をををを「「「「フィールドフィールドフィールドフィールド」、」、」、」、

     「     「     「     「ふるまいふるまいふるまいふるまい」」」」をををを「「「「メソッドメソッドメソッドメソッド」」」」というというというという。    )。    )。    )。    )

ということはということはということはということは・・・・・・・・・・・・

世世世世のののの中中中中オブジェクトオブジェクトオブジェクトオブジェクトだらけであるだらけであるだらけであるだらけである!!!!それぞれをそれぞれをそれぞれをそれぞれを個別個別個別個別にににに認識認識認識認識していったらしていったらしていったらしていったら、、、、頭頭頭頭ががががスグスグスグスグにににに

パンクパンクパンクパンクしてしまうしてしまうしてしまうしてしまう!!!!そこでそこでそこでそこで・・・・・・・・・・・・

オブジェクトオブジェクトオブジェクトオブジェクトをををを集集集集めてめてめてめて「「「「抽象化抽象化抽象化抽象化」」」」⇒⇒⇒⇒「「「「モデリングモデリングモデリングモデリング」」」」    をををを行行行行ないないないない、、、、「「「「クラスクラスクラスクラス」」」」をををを作成作成作成作成するするするする!!!!

Page 9: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 9/20

次次次次はははは「「「「クラスクラスクラスクラス」」」」ってってってってヤツヤツヤツヤツをををを語語語語ろうかろうかろうかろうか

実体の世界

概念の世界

現実の世界 コンピュータの世界

車車車車車車車車(((((((( or or 自動車自動車自動車自動車))))自動車自動車自動車自動車))))

Car Car クラスクラスクラスクラスクラスクラスクラスクラス日本語日本語日本語日本語でででで表現表現表現表現したらしたらしたらしたら???? 「「「「クラス

クラス

クラス

クラス」」」」

「「「「インスタンス

インスタンス

インスタンス

インスタンス」」」」

「「「「オブジェクト

オブジェクト

オブジェクト

オブジェクト」」」」

CarA

CarB

CarC

モデリング

モデリング

モデリング

モデリング(

設計設計設計設計)

ココの話ね

Page 10: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 10/20

クラスクラスクラスクラスとはとはとはとは????

� 世世世世のののの中中中中にはにはにはには沢山沢山沢山沢山のののの「「「「モノモノモノモノ」」」」があるのでがあるのでがあるのでがあるので

        抽象化抽象化抽象化抽象化してしてしてして捉捉捉捉えようえようえようえよう!!!!    ⇒⇒⇒⇒ 「 「 「 「クラスクラスクラスクラス」」」」のののの考考考考ええええ方方方方

CB D

ヒトヒトヒトヒト

A

Page 11: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 11/20

Java言語言語言語言語ののののクラスクラスクラスクラスはははは????        ((((Javaのののの基本的基本的基本的基本的ななななクラスクラスクラスクラス構造構造構造構造))))

「「「「クラスクラスクラスクラス」」」」「「「「フィールドフィールドフィールドフィールド」」」」

「「「「メソッドメソッドメソッドメソッド」」」」

「「「「コンストラクタコンストラクタコンストラクタコンストラクタ」」」」

「「「「inner    クラスクラスクラスクラス」」」」

Javaののののクラスクラスクラスクラスはははは

4444つのつのつのつのメンバーメンバーメンバーメンバー((((要素要素要素要素))))をををを持持持持つつつつ

初心者向けなので、static イニシャライザとか、

アノテーションとかは華麗にスルー

Page 12: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 12/20

最後最後最後最後にににに「「「「インスタンスインスタンスインスタンスインスタンス」」」」ってってってってヤツヤツヤツヤツねねねね

実体の世界

概念の世界

現実の世界 コンピュータの世界

車車車車車車車車(((((((( or or 自動車自動車自動車自動車))))自動車自動車自動車自動車))))

Car Car クラスクラスクラスクラスクラスクラスクラスクラス日本語日本語日本語日本語でででで表現表現表現表現したらしたらしたらしたら???? 「「「「クラス

クラス

クラス

クラス」」」」

「「「「インスタンス

インスタンス

インスタンス

インスタンス」」」」

「「「「オブジェクト

オブジェクト

オブジェクト

オブジェクト」」」」

CarA

CarB

CarC

モデリング

モデリング

モデリング

モデリング(

設計設計設計設計)

ココの話ね

Page 13: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 13/20

インスタンスインスタンスインスタンスインスタンスとはとはとはとは????

クラスクラスクラスクラスははははオブジェクトオブジェクトオブジェクトオブジェクト((((実体実体実体実体))))からからからから創製創製創製創製されたがされたがされたがされたが、、、、

逆逆逆逆ににににクラスクラスクラスクラスからからからから生成生成生成生成されたされたされたされた実体実体実体実体をををを「「「「インスタンスインスタンスインスタンスインスタンス」」」」

というというというという

※※※※注注注注・・・・・・・・・・・・「「「「オブジェクトオブジェクトオブジェクトオブジェクト」」」」とととと「「「「インスタンスインスタンスインスタンスインスタンス」」」」はははは同義同義同義同義でででで

                        使用使用使用使用されるされるされるされる場合場合場合場合がががが多多多多いいいい。。。。

「「「「オブジェクトオブジェクトオブジェクトオブジェクト」」」」 、「、「、「、「クラスクラスクラスクラス」、「」、「」、「」、「インスタンスインスタンスインスタンスインスタンス」」」」のののの

言葉言葉言葉言葉ののののニュアンスニュアンスニュアンスニュアンスのののの違違違違いにいにいにいに注意注意注意注意!!!!

Page 14: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 14/20

でもでもでもでも、、、、なぜなぜなぜなぜインスタンスインスタンスインスタンスインスタンスなんてなんてなんてなんて必要必要必要必要なのなのなのなの????

ワザワザワザワザワザワザワザワザ、「、「、「、「抽象化抽象化抽象化抽象化」」」」してしてしてして「「「「クラスクラスクラスクラス」」」」作作作作ってってってって~~~~というというというという事事事事をしなくてもいいんじゃねをしなくてもいいんじゃねをしなくてもいいんじゃねをしなくてもいいんじゃね????

こんなまどろっこしい事をせずに

オブジェクトから直接作ったら?

Page 15: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 15/20

ヒトヒトヒトヒトのののの例例例例::::新新新新しいしいしいしいヒトヒトヒトヒトをををを作作作作ってみようってみようってみようってみよう!!!!

複製複製複製複製((((コピーコピーコピーコピー))))

A A

A

A

A

A

複製複製複製複製((((コピーコピーコピーコピー))))のののの場合場合場合場合::::

作成作成作成作成のののの場合場合場合場合::::

A

作成作成作成作成

F

FF

F

Page 16: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 16/20

インスタンス

インスタンス

インスタンス

インスタンス

インスタンスインスタンスインスタンスインスタンスのののの例例例例::::自動販売機自動販売機自動販売機自動販売機「自動販売機クラス」

○品物を入れる空間がある

○お金を入れてボタンを押すと

 品物が出てくる

ジュースジュースジュースジュース タバコタバコタバコタバコ酒酒酒酒

菊正宗ラガーモンラッシェカクテル・バー

ファンタ オレンジコカ・コーラファンタ アップル

マイルド7

キャビンキャスター

「クラス」は「インスタンス」を作る為の「型」とも言える

Page 17: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 17/20

Javaのののの場合場合場合場合はははは・・・・・・・・・・・・????

Javaにおけるにおけるにおけるにおける「「「「クラスクラスクラスクラス」「」「」「」「インスタンスインスタンスインスタンスインスタンス」」」」のののの考考考考ええええ方方方方もももも同様同様同様同様

Javaのののの場合場合場合場合はははは「「「「new」」」」演算子演算子演算子演算子をををを用用用用いていていていて、、、、クラスクラスクラスクラスからからからから

インスタンスインスタンスインスタンスインスタンスをををを作成作成作成作成するするするする

例例例例:「:「:「:「Test」」」」クラスクラスクラスクラスからからからからインスタンスインスタンスインスタンスインスタンス「「「「t」」」」をををを作成作成作成作成するときするときするときするとき

Test    t = new Test( );

インスタンスインスタンスインスタンスインスタンスをををを作成作成作成作成作成作成作成作成したしたしたしたインスタンスインスタンスインスタンスインスタンスをををを

                格納格納格納格納するするするする為為為為のののの変数変数変数変数

Page 18: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 18/20

まとめまとめまとめまとめ

「「「「オブジェクトオブジェクトオブジェクトオブジェクト」」」」・・・・・・・・・・・・

「「「「クラスクラスクラスクラス」」」」・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

「「「「インスタンスインスタンスインスタンスインスタンス」」」」・・・・・・・・

実際実際実際実際にににに存在存在存在存在するするするする「「「「モノモノモノモノ」」」」

「「「「モノモノモノモノ」」」」をををを抽象化抽象化抽象化抽象化してしてしてして作作作作ったったったった「「「「型型型型」」」」

「「「「クラスクラスクラスクラス」」」」をををを元元元元にしてにしてにしてにして作作作作られたられたられたられた「「「「実体実体実体実体」」」」

(「(「(「(「オブジェクトオブジェクトオブジェクトオブジェクト」」」」≒≒≒≒「「「「インスタンスインスタンスインスタンスインスタンス」」」」

    Javaではではではでは「「「「new」」」」演算子演算子演算子演算子をををを用用用用いていていていて生成生成生成生成))))

ここでここでここでここで触触触触れていないれていないれていないれていない点点点点:「:「:「:「クラスクラスクラスクラス間間間間のののの関係関係関係関係」」」」

              「              「              「              「コンストラクタコンストラクタコンストラクタコンストラクタ」」」」

              「              「              「              「カプセルカプセルカプセルカプセル化化化化」」」」 etc.etc…

Page 19: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 19/20

おまけおまけおまけおまけ応用編応用編応用編応用編・・・・・・・・・・・・「「「「オブジェクトオブジェクトオブジェクトオブジェクト指向指向指向指向のののの再定義再定義再定義再定義」」」」 by 平鍋平鍋平鍋平鍋さんさんさんさんhttp://objectclub.jp/technicaldoc/object-orientation/OO_redefine

Page 20: 20120602 JavaOO道場 オブジェクト指向概論

2012/06/02 20/20

おまけおまけおまけおまけ応用編応用編応用編応用編・・・・・・・・・・・・「「「「TDDについてについてについてについて」」」」

http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615

    ⇒⇒⇒⇒    上記サイトは shuji_w6e さんのサイトです