SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
オブジェクト指向概論
           オブジェクト指向概論
              その1
            ― その1.
              クラス オブジェクトと
              クラスと
              クラスとオブジェクトと
              インスタンス
              インスタンスについて
              インスタンスについて ―

                             Ver.1.0




2012/6/3                          1/20
この資料は
この資料は・・・
  資料

             「クラス」「オブジェクト」「インスタンス」
             3つの単語を軸に、「オブジェクト指向の
             概要」についてまとめてあります。




2012/06/02                       2/20
オブジェクト指向の前に・・・
オブジェクト指向の
      指向                                           Javaの世界
                  現実の世界              コンピュータの世界
     概            日本語で表現したら?
                  日本語で表現したら?
                        したら      モ
                                 デ
                                       Car クラス            「ク
                                                          ク
     念                           リ                        ラ
     の                           ン                        ス
                    車( or 自動車)
                          自動車)   グ
                                                          」
     世




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



                                 )
                                            具象化
     実       「オ
             オ                                            「イ
                                                          イ
     体       ブ                                            ン


                                     CarA

                                            CarB

                                                   CarC
     の       ジ                                            ス
             ェ                                            タ
     世       ク                                            ン
     界       ト                                            ス
             」                                            」

2012/06/02                                                     3/20
オブジェクト指向
オブジェクト指向(Object Oriented)とは?
                         とは?
                   オブジェクト・・・1 英文法で
                   オブジェクト・・・1.英文法で目的語
                         ・・・
                             2.対象、客観 ⇒ 客体
                               対象、客観 

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

              実世界に存在する事物
              実世界に存在する事物
                       する
                  ・・・名詞としての性質を
                  ・・・名詞としての性質
                  ・・・名詞としての性質を持つもの
                  指向・・・1 ある目的を目指して向かうこと。
                  指向・・・1.ある目的を目指して向かうこと。
                     ・・・   目的   して
                          ある特定 方向を指定すること
                            特定の      すること。
                        2.ある特定の方向を指定すること。
                          ある方向に けること。
                          ある方向に向けること。
                          ある方向

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

             ⇒「モノ」を大切にする考え方 
               モノ」 大切にする考
                     にする
2012/06/02                                   4/20
オブジェクト指向における「オブジェクト」ってヤツを
オブジェクト指向における「オブジェクト」ってヤツを語ろうか
      指向における          ヤツ

                  現実の世界              コンピュータの世界
     概            日本語で表現したら?
                  日本語で表現したら?
                        したら      モ
                                 デ
                                       Car クラス            「ク
                                                          ク
     念                           リ                        ラ
     の                           ン                        ス
                    車( or 自動車)
                          自動車)   グ
                                                          」
     世                               ココの話ね




                                 (
                                 設
     界                           計




                                 )
     実       「オ
             オ                                            「イ
                                                          イ
     体       ブ                                            ン


                                     CarA

                                            CarB

                                                   CarC
     の       ジ                                            ス
             ェ                                            タ
     世       ク                                            ン
     界       ト                                            ス
             」                                            」

2012/06/02                                                     5/20
オブジェクトの
      オブジェクトの要素

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

             ○属性=状態(データ)
              属性=状態(データ)
             ○ふるまい=操作(機能)
              ふるまい=操作(機能)
  ヒトの :「属性(状態)」・・・目
  ヒトの例:「属性(状態)」・・・目が2つ、耳が2つ、口が一つ etc.
        属性   )」・・・
               ⇒ モノを構成する「データ」
               ⇒ モノを構成する「データ」
                      する
             「ふるまい(操作)」・・・見る、聞く、話す etc.
              ふるまい(操作)」・・・見
                     )」・・・
              ⇒ データを使用して果たす「機能」
                データを使用して果たす「機能」
                      して

2012/06/02                                6/20
オブジェクト「ヒト」
   オブジェクト「ヒト」の例:
                       属性・・・目
                       属性・・・目が2つ、口が一つ etc.
                         ・・・
             ヒト        ふるまい・・・見
                       ふるまい・・・見る、話す etc.
                           ・・・




  オブジェクトは メッセージ」 受信して仕事を開始する
  オブジェクトは「メッセージ」を受信して仕事を開始する
                   して仕事
   メッセージ
                                     「目」で
                  ヒト           ヒト
  「授業を
   授業を                               「見て」
                         ⇒
   始めます」
    めます」                             「耳」で
2012/06/02                           「聞く」 7/20
つまり「オブジェクト」とは「属性」 ふるまい・操作」
 つまり「オブジェクト」とは「属性」と「ふるまい・操作」を
 持ち、「メッセージ」を受信して仕事をするモノである。
    、「メッセージ」 受信して仕事をするモノである
      メッセージ     して仕事をするモノである。
 (※注・・・Java言語においては「属性」を「フィールド」、
     ・・・   言語においては「属性」 フィールド」、
           言語においては
      「ふるまい
      「ふるまい」を「メソッド」という。    )
        ふるまい」 メソッド」という。    )

 ということは・・・
 ということは・・・
             世の中オブジェクトだらけである!
                オブジェクトだらけである!
                      だらけである
     それぞれを個別に認識していったら、
     それぞれを個別に認識していったら、頭がスグに
          個別   していったら   スグに
     パンクしてしまう!そこで・・・
     パンクしてしまう!そこで・・・
        してしまう
               抽象化」 モデリング」
    オブジェクトを集めて「抽象化」⇒「モデリング」
    オブジェクトを
       ない、 クラス」 作成する
     を行ない、「クラス」を作成する!
                  する!
2012/06/02                      8/20
次は「クラス」ってヤツを語ろうか
   クラス」ってヤツを
         ヤツ

                  現実の世界              コンピュータの世界
     概            日本語で表現したら?
                  日本語で表現したら?
                        したら      モ
                                 デ
                                       Car クラス            「ク
                                                          ク
     念                           リ                        ラ
     の                           ン                        ス
                    車( or 自動車)
                          自動車)   グ
                                                          」
     世




                                 (
                                 設
     界                           計




                                 )
     実       「オ
             オ                                            「イ
                                                          イ
     体       ブ                                            ン


                                     CarA

                                            CarB

                                                   CarC
     の       ジ                                            ス
             ェ                          ココの話ね             タ
     世       ク                                            ン
     界       ト                                            ス
             」                                            」

2012/06/02                                                     9/20
クラスとは?
 クラスとは?
    とは
    世の中には沢山の「モノ」があるので
        には沢山の モノ」
          沢山
     抽象化して捉えよう!
     抽象化して         「クラス
                    クラス」
     抽象化して捉えよう! ⇒ 「クラス」の考え方

                 B        C   D
             A




                     ヒト

2012/06/02                        10/20
Java言語のクラスは?
      言語のクラスは
      言語
    (Javaの基本的なクラス構造)
         の基本的なクラス構造
                 構造)
        「クラス」
         クラス」
                       「フィールド」
                        フィールド」
Javaのクラスは
    のクラスは
4つのメンバー
 つのメンバー                 「メソッド」
                         メソッド」
 要素)
(要素)を持つ

                        「コンストラクタ」
                         コンストラクタ」
      初心者向けなので、
   static イニシャライザとか、
 アノテーションとかは華麗にスルー

                               クラス」
                        「inner クラス」


 2012/06/02                           11/20
最後に インスタンス」ってヤツね
最後に「インスタンス」ってヤツね
             ヤツ

                  現実の世界              コンピュータの世界
     概            日本語で表現したら?
                  日本語で表現したら?
                        したら      モ
                                 デ
                                       Car クラス            「ク
                                                          ク
     念                           リ      ココの話ね             ラ
     の                           ン                        ス
                    車( or 自動車)
                          自動車)   グ
                                                          」
     世




                                 (
                                 設
     界                           計




                                 )
     実       「オ
             オ                                            「イ
                                                          イ
     体       ブ                                            ン


                                     CarA

                                            CarB

                                                   CarC
     の       ジ                                            ス
             ェ                                            タ
     世       ク                                            ン
     界       ト                                            ス
             」                                            」

2012/06/02                                                     12/20
インスタンスとは?
  インスタンスとは?
        とは
        クラスはオブジェクト(実体)から創製されたが、
        クラスはオブジェクト(実体)から創製されたが、
                        創製されたが
          クラスから生成された実体を インスタンス」
             から生成された実体
        逆にクラスから生成された実体を「インスタンス」
        という

        ※注・・・「オブジェクト」と「インスタンス」は同義で
           ・・・「オブジェクト」 インスタンス」 同義で
              使用される場合が
              使用される場合が多い。
               使用される場合
             「オブジェクト」 、「クラス」、「インスタンス」の
              オブジェクト」 、「クラス」、「インスタンス
                        クラス」、「インスタンス」
             言葉のニュアンスの いに注意!
             言葉のニュアンスの違いに注意! 注意

2012/06/02                               13/20
でも、なぜインスタンスなんて必要なの?
  でも、なぜインスタンスなんて必要なの?
       インスタンスなんて必要なの
       ワザワザ、「抽象化」して「クラス」 って~
       ワザワザ、「抽象化」して「クラス」作って~という
           、「抽象化
         をしなくてもいいんじゃね?
        事をしなくてもいいんじゃね?

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




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

2012/06/02                        14/20
ヒトの
ヒトの例:新しいヒトを作ってみよう!
      しいヒト
        ヒトを ってみよう!
   複製(コピー) 場合:
   複製(コピー)の場合:
                                   A       A
             A                 A       A        A
                 複製(コピー)
                 複製(コピー)



     作成の場合:
     作成の場合:                        F           F
             A
                   作成
                           F           F
2012/06/02                                     15/20
インスタンスの
    インスタンスの例:自動販売機
                                            「クラス」は
                           「自動販売機クラス」       「インスタン
                                            ス」を作る為
                           ○品物を入れる空間がある     の「型」とも
                           ○お金を入れてボタンを押すと     言える

                            品物が出てくる


                 酒         ジュース       タバコ

イ                菊正宗            ファンタ         マイルド7
ン                ラガー             オレンジ        キャビン
ス                モンラッシェ         コカ・コーラ       キャスター
タ                カクテル・バー        ファンタ
                                 アップル
ン
ス
    2012/06/02                                 16/20
Javaの場合は・・・?
    の場合は・・・?
 Javaにおける「クラス」「インスタンス」の考え方も同様
     における「クラス」「インスタンス」
     における    」「インスタンス

    Javaの場合は「new」演算子を用いて、クラスから
        の場合は    」演算子を いて、クラスから
    インスタンスを作成する
    インスタンスを作成する

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

                    
               Test t = new   Test( );

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

2012/06/02       格納する為
                 格納する為の変数
                 格納する                    17/20
まとめ
 「オブジェクト」・・・
  オブジェクト」       実際に存在する モノ」
                      する「
                実際に存在する「モノ」
  クラス」
 「クラス」・・・・・・・・ 「モノ」を抽象化して作った「型」
                モノ」 抽象化して った「
                       して作
  インスタンス」
 「インスタンス」・・ 「クラス」を元にして作られた「実体」
               クラス」  にして作られた「実体」
                (「オブジェクト」
                (「オブジェクト」≒「インスタンス」
                  オブジェクト   インスタンス」
                     では「   」演算子を いて生成
                                   生成)
                 Javaでは「new」演算子を用いて生成)
                     では


      ここで触れていない点:「クラス間 関係」
      ここで触れていない点:「クラス間の関係」
                  クラス
                    「コンストラクタ」
                    「コンストラクタ」
                     コンストラクタ
                    「カプセル化
                    「カプセル化」 etc.etc…
2012/06/02
                     カプセル              18/20
おまけ
  応用編・・・「オブジェクト指向の再定義」
  応用編・・・「オブジェクト指向の再定義」 by 平鍋さん
     ・・・       指向         平鍋さん
  http://objectclub.jp/technicaldoc/object-orientation/OO_redefine




2012/06/02                                                           19/20
おまけ
  応用編・・・「
  応用編・・・「TDDについて」
     ・・・    について」
            について
    http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615
   ⇒ 上記サイトは shuji_w6e さんのサイトです




2012/06/02                                                20/20

Mais conteúdo relacionado

Destaque

F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~Fujio Kojima
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数Satoru Kodaira
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会hakoika-itwg
 
06 オブジェクト指向の基礎
06 オブジェクト指向の基礎06 オブジェクト指向の基礎
06 オブジェクト指向の基礎文樹 高橋
 
オブジェクト指向最強
オブジェクト指向最強オブジェクト指向最強
オブジェクト指向最強haganemetal
 
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生Satoru Kodaira
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向Anto Mioyama
 
第6回勉強会 はじめてのデータベース
第6回勉強会 はじめてのデータベース第6回勉強会 はじめてのデータベース
第6回勉強会 はじめてのデータベースhakoika-itwg
 
ドラえもんの世界をオブジェクト指向で
ドラえもんの世界をオブジェクト指向でドラえもんの世界をオブジェクト指向で
ドラえもんの世界をオブジェクト指向でyaju88
 
デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」Hokuto Tateyama
 
第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティー第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティーhakoika-itwg
 
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」hakoika-itwg
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)nomuken
 
擬人化で考えるオブジェクト指向
擬人化で考えるオブジェクト指向擬人化で考えるオブジェクト指向
擬人化で考えるオブジェクト指向yamada28go
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後Tomoki Hasegawa
 
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向hakoika-itwg
 
インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計Akineko Shimizu
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-hakoika-itwg
 
デザパタ勉強会(基礎編)
デザパタ勉強会(基礎編)デザパタ勉強会(基礎編)
デザパタ勉強会(基礎編)kaz3391
 

Destaque (20)

F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 
06 オブジェクト指向の基礎
06 オブジェクト指向の基礎06 オブジェクト指向の基礎
06 オブジェクト指向の基礎
 
オブジェクト指向最強
オブジェクト指向最強オブジェクト指向最強
オブジェクト指向最強
 
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向
 
第6回勉強会 はじめてのデータベース
第6回勉強会 はじめてのデータベース第6回勉強会 はじめてのデータベース
第6回勉強会 はじめてのデータベース
 
ドラえもんの世界をオブジェクト指向で
ドラえもんの世界をオブジェクト指向でドラえもんの世界をオブジェクト指向で
ドラえもんの世界をオブジェクト指向で
 
デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」
 
第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティー第9回勉強会 Webセキュリティー
第9回勉強会 Webセキュリティー
 
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)
 
擬人化で考えるオブジェクト指向
擬人化で考えるオブジェクト指向擬人化で考えるオブジェクト指向
擬人化で考えるオブジェクト指向
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後
 
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向
 
インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
デザパタ勉強会(基礎編)
デザパタ勉強会(基礎編)デザパタ勉強会(基礎編)
デザパタ勉強会(基礎編)
 

Mais de skowata

20171107 agile discussionコインws
20171107 agile discussionコインws20171107 agile discussionコインws
20171107 agile discussionコインwsskowata
 
第1回(20170701)内容の振り返り(公開用)
第1回(20170701)内容の振り返り(公開用)第1回(20170701)内容の振り返り(公開用)
第1回(20170701)内容の振り返り(公開用)skowata
 
20170708 java oo道場(ネタのメモ)(公開用)
20170708 java oo道場(ネタのメモ)(公開用)20170708 java oo道場(ネタのメモ)(公開用)
20170708 java oo道場(ネタのメモ)(公開用)skowata
 
(公開用)Agileについて
(公開用)Agileについて(公開用)Agileについて
(公開用)Agileについてskowata
 
Legacy code事件簿
Legacy code事件簿Legacy code事件簿
Legacy code事件簿skowata
 
20120609 java oo道場(ネタのメモ)
20120609 java oo道場(ネタのメモ)20120609 java oo道場(ネタのメモ)
20120609 java oo道場(ネタのメモ)skowata
 
第1回内容の振り返り
第1回内容の振り返り第1回内容の振り返り
第1回内容の振り返りskowata
 

Mais de skowata (7)

20171107 agile discussionコインws
20171107 agile discussionコインws20171107 agile discussionコインws
20171107 agile discussionコインws
 
第1回(20170701)内容の振り返り(公開用)
第1回(20170701)内容の振り返り(公開用)第1回(20170701)内容の振り返り(公開用)
第1回(20170701)内容の振り返り(公開用)
 
20170708 java oo道場(ネタのメモ)(公開用)
20170708 java oo道場(ネタのメモ)(公開用)20170708 java oo道場(ネタのメモ)(公開用)
20170708 java oo道場(ネタのメモ)(公開用)
 
(公開用)Agileについて
(公開用)Agileについて(公開用)Agileについて
(公開用)Agileについて
 
Legacy code事件簿
Legacy code事件簿Legacy code事件簿
Legacy code事件簿
 
20120609 java oo道場(ネタのメモ)
20120609 java oo道場(ネタのメモ)20120609 java oo道場(ネタのメモ)
20120609 java oo道場(ネタのメモ)
 
第1回内容の振り返り
第1回内容の振り返り第1回内容の振り返り
第1回内容の振り返り
 

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
  • 5. オブジェクト指向における「オブジェクト」ってヤツを オブジェクト指向における「オブジェクト」ってヤツを語ろうか 指向における ヤツ 現実の世界 コンピュータの世界 概 日本語で表現したら? 日本語で表現したら? したら モ デ Car クラス 「ク ク 念 リ ラ の ン ス 車( or 自動車) 自動車) グ 」 世 ココの話ね ( 設 界 計 ) 実 「オ オ 「イ イ 体 ブ ン CarA CarB CarC の ジ ス ェ タ 世 ク ン 界 ト ス 」 」 2012/06/02 5/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
  • 14. でも、なぜインスタンスなんて必要なの? でも、なぜインスタンスなんて必要なの? インスタンスなんて必要なの ワザワザ、「抽象化」して「クラス」 って~ ワザワザ、「抽象化」して「クラス」作って~という 、「抽象化 をしなくてもいいんじゃね? 事をしなくてもいいんじゃね? こんなまどろっこ しい事をせずに オブジェクトから 直接作ったら? 2012/06/02 14/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