SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
PHP講座(6)!
一歩上に行くためのオブジェクト指向




この授業では、現代的なプログラミングの中心的な概念であるオブジェクト指向について学び
ます。
PHPerとして上級者になるためには避けては通れない道です。
2      オブジェクト指向とは?


 オブジェクト指向とは、プログラミングのための          オブジェクト指向プログラミングではないルー
 ルールです。	
                        ルに手続き型プログラミングがあります。	
  
 プログラムの固まりをオブジェクト(物)ととら          これはみなさんがいままでやっていたプログラ
 え、お互いの相互作用がプログラム全体の動きに          ミングで、一連の処理を順番に行っていきます。	
  
 なります。	
  


                                    <?php	
  

          オブジェクト
                                    //アドレスを定義	
  
                                    $to	
  =	
  “hoge@example.com”;	
  
                                    //件名を定義	
  
                        オブジェクト      $sub	
  =	
  “This	
  is	
  a	
  test”;	
  
                                    //本文を定義	
  
                                    $body	
  =	
  “Hello!”;	
  
                                    //メールを送信	
  
                                    if(mail($to,	
  $sub,	
  $body)){	
  
                                    	
  	
  	
  echo	
  “メール送信成功”;	
  
                                    }else{	
  
    オブジェクト                          	
  	
  	
  echo	
  “メール送信失敗”;	
  
                                    }	
  
                   オブジェクト
                                    ?>	
  




10.4.18                                                                           (C) 株式会社破滅派
3        オブジェクト指向を車に例えると…(1)


               オブジェクト指向はそもそも機械工学の世界から誕生しました。	
  
                  あらゆるものをオブジェクト(モノ)と考えます。




                                                オブジェクト:ハン
                                                ドル	
  
          オブジェクト:車	
  
                                                回すことでタイヤの
          移動を便利にしてくれる乗       オブジェクト:タ
                                                向きを変更する
          り物                 イヤ	
  
                             エンジンに伴って
                             回転する




                                                 オブジェクト:フレーム	
  
                                                 車に必要なオブジェクトすべて
                                                 を納めることができる

                              オブジェクト:アクセル	
  
    車が動くのは各部品(オブ              踏み込むことでエンジン
                              を回転させる
    ジェクト)が相互作用によっ
    て動いているからです。

10.4.18                                                        (C) 株式会社破滅派
4      オブジェクト指向を車に例えると…(2)


オブジェクト指向においては、一つ一つのオブジェクトの機能はそのオブジェクト自
身だけが知っています。外部のオブジェクトはその詳細を知らなくても利用すること
ができます。これをオブジェクトの「隠蔽性」または「カプセル化」といいます。



                         自動車期間工は自動車を作ります。	
  
                         しかし、エンジンは作りませんし、エン
                         ジンがどのような仕組みで動いているか
                         も知る必要がありません。	
  
                         タイヤのゴムをどうやって確保するかも
                         知る必要がありません。	
  
                         それでも車を完成させることができます。




          大規模で複雑な物を作るのに、オブジェクト指向の知識は不可欠です。


10.4.18                                   (C) 株式会社破滅派
5           オブジェクトを車にたとえると..


                     クラスはオブジェクトを作るための設計図。	
  
               設計図からオブジェクトを作ることを「インスタンス化」といいます。	
  
                    インスタンスとは、「実体」という意味です。




                      インスタンス:$MyCar          クラス:Car



          <?php	
                            new演算子でCarクラスの
                                             新しいインスタンスを作成
          $MyCar	
  =	
  new	
  Car();	
     し、変数$myCarという名
          ?>                                 前をつけています。


10.4.18                                                (C) 株式会社破滅派
6      変数と関数の復習


          皆さんはすでにPHPで重要な2つのもの「変数」と「関数」を学びました。



          変数…値につける名前	
                                     関数…一連の処理につける名前	
  

          $hoge	
  =	
  “fuga”;	
                          function	
  tenTimes($num){	
  
          $num	
  =	
  10;	
                                     	
  return	
  $num	
  *	
  10;	
  
          $myArr	
  =	
  array(1,	
  2,	
  3,	
  4);	
     }	
  




                     PHPにおけるオブジェクトはこの変数と関数の集合体です。	
  
                         この集合体の設計図を「クラス」と呼びます。


10.4.18                                                                                               (C) 株式会社破滅派
7      設計図(クラス)の書き方


            クラスにはプロパティ(部品)とメソッド(機能)があります。	
  
                 プロパティは変数で、メソッドは関数です。

                             <?php	
  
                             class	
  Car{	
  
                                 	
  //プロパティ	
  
                                 	
  var	
  $handle;	
  
                                 	
  var	
  $break;	
  
                                 	
  var	
  $accel;	
  
                                 	
  var	
  $engine;	
  

                                     	
  //メソッド	
  
          クラス:Car                    	
  function	
  go(){}	
  
  部品:ブレーキ、ハンドル、                      	
  function	
  stop(){}	
  
     アクセル、エンジン	
                     	
  function	
  turn($direction){}	
  
  機能:進む、止まる、曲がる、                     	
  function	
  engine_start(){}	
  
     バックする、エンジンを             }	
  
     かける                     ?>


10.4.18                                                                 (C) 株式会社破滅派
8       クラスの使い方


          クラスは自分で作った物であったり、他人が作ったものだったりします。	
  
               通常は1クラス1ファイルとし、読み込んで使います。	
  

   <?php	
  
   	
  	
  	
  //クラスファイルを読み込む	
  
   	
  	
  	
  //通常は1つのクラスで1つのファイルに分けます	
  
                                                                 index.php    Car.php
   	
  	
  	
  require_once(“./Car.php”);	
  

   	
  	
  	
  //インスタンス化して使えるようにする	
                             index.phpはCar.phpを読み込
   	
  	
  	
  $myCar	
  =	
  new	
  Car();	
                    んでそれを利用します。	
  
                                                                 この場合、Carクラスの機能
   	
  	
  	
  //矢印演算子でプロパティを呼び出す	
                              を利用するだけなので、何か
   	
  	
  	
  echo	
  $myCar-­‐>price;	
  //1,000,000	
  	
     エラーが起きた場合は
                                                                 index.phpに不具合があると
   	
  	
  	
  //メソッドは括弧を付ける	
                                   考えることができます。	
  
   	
  	
  	
  $myCar-­‐>back();	
  //バックします	
                   こうしてプログラムの隠蔽性
   ?>                                                            が保たれます。


10.4.18                                                                        (C) 株式会社破滅派
9      オブジェクト指向はどこまで理解する必要があるか?


            オブジェクト指向は抽象的な概念であり、理解が難しいです。	
  
           単純なメールフォームならオブジェクト指向でなくても作れます。	
  
               しかし、理解しないとできないこともあります。


           オブジェクト指向を理解していないとできないこと	
  
           •  WordPressやXoopsなどのカスタマイズ	
  
           •  CakePHPなどのフレームワークの利用	
  
           •  複雑で高度なシステムの作成	
  




   会社の経理部で働くか?	
  
   公認会計士になるか?   …という違いに似ています
10.4.18                                      (C) 株式会社破滅派

Contenu connexe

Tendances

Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りましたTomoharu ASAMI
 
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門Kazunori Tatsuki
 
JavaScript入門-基礎編
JavaScript入門-基礎編JavaScript入門-基礎編
JavaScript入門-基礎編mactkg
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swiftYuki Asai
 
JPA説明会
JPA説明会JPA説明会
JPA説明会Ryo Asai
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!Yuji Nojima
 
JavaScript超入門 基礎
JavaScript超入門 基礎JavaScript超入門 基礎
JavaScript超入門 基礎tetsu6
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめYuki Ishikawa
 
今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/PrismNaoki Aoyama
 
値渡しと参照渡しの比較
値渡しと参照渡しの比較値渡しと参照渡しの比較
値渡しと参照渡しの比較kitoku_magic
 

Tendances (11)

Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
 
JavaScript入門-基礎編
JavaScript入門-基礎編JavaScript入門-基礎編
JavaScript入門-基礎編
 
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
JPA説明会
JPA説明会JPA説明会
JPA説明会
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
 
JavaScript超入門 基礎
JavaScript超入門 基礎JavaScript超入門 基礎
JavaScript超入門 基礎
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめ
 
今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/Prism
 
値渡しと参照渡しの比較
値渡しと参照渡しの比較値渡しと参照渡しの比較
値渡しと参照渡しの比較
 

En vedette

デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」Hokuto Tateyama
 
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げるWataru Terada
 
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)tadaaki hayashi
 
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~Fujio Kojima
 
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生Satoru Kodaira
 
第3回勉強会 オブジェクト指向
第3回勉強会 オブジェクト指向第3回勉強会 オブジェクト指向
第3回勉強会 オブジェクト指向hakoika-itwg
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数Satoru Kodaira
 
オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版Mao Ohnishi
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会hakoika-itwg
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向Anto Mioyama
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)nomuken
 
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向hakoika-itwg
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-hakoika-itwg
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)VOYAGE GROUP
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門Ryo Miyake
 
第1回 モデリング勉強会
第1回 モデリング勉強会第1回 モデリング勉強会
第1回 モデリング勉強会hakoika-itwg
 
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」hakoika-itwg
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 

En vedette (18)

デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」デジタルメディア創作部勉強会「オブジェクト指向入門1」
デジタルメディア創作部勉強会「オブジェクト指向入門1」
 
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる
 
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)
 
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~F流『オブジェクト指向の考え方の基礎の基礎』~ソフトウェア開発の原則編~
F流 『オブジェクト指向の考え方の基礎の基礎』 ~ソフトウェア開発の原則編~
 
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
 
第3回勉強会 オブジェクト指向
第3回勉強会 オブジェクト指向第3回勉強会 オブジェクト指向
第3回勉強会 オブジェクト指向
 
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数
 
オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版オブジェクト指向ワークショップ 201507版
オブジェクト指向ワークショップ 201507版
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会
 
だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向だいたい30分で分かるオブジェクト指向
だいたい30分で分かるオブジェクト指向
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)
 
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)
 
オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門オブジェクト指向プログラミング再入門
オブジェクト指向プログラミング再入門
 
第1回 モデリング勉強会
第1回 モデリング勉強会第1回 モデリング勉強会
第1回 モデリング勉強会
 
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
第8回勉強会 開発プロセス 「計画ゲーム~ふりかえり」
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 

Similaire à 06 オブジェクト指向の基礎

【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトアシアル株式会社
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶShumpei Shiraishi
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングTanUkkii
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門Kohki Miki
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925龍一 田中
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsShogo Sensui
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングkunihikokaneko1
 
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介Shintaro Hosoai
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
「エクストリームエンジニアへの道(Swift編)」
「エクストリームエンジニアへの道(Swift編)」「エクストリームエンジニアへの道(Swift編)」
「エクストリームエンジニアへの道(Swift編)」tech-arts
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話infinite_loop
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1kenjis
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)Masanori Machii
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 

Similaire à 06 オブジェクト指向の基礎 (20)

【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門
 
JSクラス定義
JSクラス定義JSクラス定義
JSクラス定義
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
 
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
「エクストリームエンジニアへの道(Swift編)」
「エクストリームエンジニアへの道(Swift編)」「エクストリームエンジニアへの道(Swift編)」
「エクストリームエンジニアへの道(Swift編)」
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
Unityで覚えるC#
Unityで覚えるC#Unityで覚えるC#
Unityで覚えるC#
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 

Plus de 文樹 高橋

あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ文樹 高橋
 
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする文樹 高橋
 
もう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメ
もう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメもう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメ
もう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメ文樹 高橋
 
マルチパブリッシング プラットフォームとしてのWordPress
マルチパブリッシング プラットフォームとしてのWordPressマルチパブリッシング プラットフォームとしてのWordPress
マルチパブリッシング プラットフォームとしてのWordPress文樹 高橋
 
縄文時代の小説を書く(1)
縄文時代の小説を書く(1)縄文時代の小説を書く(1)
縄文時代の小説を書く(1)文樹 高橋
 
GFLS入門 - GitFlowっぽいアレ-
GFLS入門 - GitFlowっぽいアレ- GFLS入門 - GitFlowっぽいアレ-
GFLS入門 - GitFlowっぽいアレ- 文樹 高橋
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!文樹 高橋
 
WordBench Tokyo Jan 30th, 2015
WordBench Tokyo Jan 30th, 2015WordBench Tokyo Jan 30th, 2015
WordBench Tokyo Jan 30th, 2015文樹 高橋
 
基本契約書ドラフト
基本契約書ドラフト基本契約書ドラフト
基本契約書ドラフト文樹 高橋
 
12 word pressカスタマイズ(プラグイン編)
12 word pressカスタマイズ(プラグイン編)12 word pressカスタマイズ(プラグイン編)
12 word pressカスタマイズ(プラグイン編)文樹 高橋
 
11 word pressカスタマイズ(テーマ編)
11 word pressカスタマイズ(テーマ編)11 word pressカスタマイズ(テーマ編)
11 word pressカスタマイズ(テーマ編)文樹 高橋
 
10 word pressをインストール
10 word pressをインストール10 word pressをインストール
10 word pressをインストール文樹 高橋
 
09 ソーシャルブックマーク(3)
09 ソーシャルブックマーク(3)09 ソーシャルブックマーク(3)
09 ソーシャルブックマーク(3)文樹 高橋
 
07 ソーシャルブックマーク(2)
07 ソーシャルブックマーク(2)07 ソーシャルブックマーク(2)
07 ソーシャルブックマーク(2)文樹 高橋
 
06 ソーシャルブックマーク(1)
06 ソーシャルブックマーク(1)06 ソーシャルブックマーク(1)
06 ソーシャルブックマーク(1)文樹 高橋
 
05 はじめてのmy sql
05 はじめてのmy sql05 はじめてのmy sql
05 はじめてのmy sql文樹 高橋
 
04 filesystem include
04 filesystem include04 filesystem include
04 filesystem include文樹 高橋
 
03 var array_flow_func
03 var array_flow_func03 var array_flow_func
03 var array_flow_func文樹 高橋
 
02 はじめてのメール送信
02 はじめてのメール送信02 はじめてのメール送信
02 はじめてのメール送信文樹 高橋
 
05 再利用のためのインクルード
05 再利用のためのインクルード05 再利用のためのインクルード
05 再利用のためのインクルード文樹 高橋
 

Plus de 文樹 高橋 (20)

あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
 
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 
もう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメ
もう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメもう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメ
もう自分で考えるのはやめよう! クリエイティブ・アウトソーシングのススメ
 
マルチパブリッシング プラットフォームとしてのWordPress
マルチパブリッシング プラットフォームとしてのWordPressマルチパブリッシング プラットフォームとしてのWordPress
マルチパブリッシング プラットフォームとしてのWordPress
 
縄文時代の小説を書く(1)
縄文時代の小説を書く(1)縄文時代の小説を書く(1)
縄文時代の小説を書く(1)
 
GFLS入門 - GitFlowっぽいアレ-
GFLS入門 - GitFlowっぽいアレ- GFLS入門 - GitFlowっぽいアレ-
GFLS入門 - GitFlowっぽいアレ-
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
 
WordBench Tokyo Jan 30th, 2015
WordBench Tokyo Jan 30th, 2015WordBench Tokyo Jan 30th, 2015
WordBench Tokyo Jan 30th, 2015
 
基本契約書ドラフト
基本契約書ドラフト基本契約書ドラフト
基本契約書ドラフト
 
12 word pressカスタマイズ(プラグイン編)
12 word pressカスタマイズ(プラグイン編)12 word pressカスタマイズ(プラグイン編)
12 word pressカスタマイズ(プラグイン編)
 
11 word pressカスタマイズ(テーマ編)
11 word pressカスタマイズ(テーマ編)11 word pressカスタマイズ(テーマ編)
11 word pressカスタマイズ(テーマ編)
 
10 word pressをインストール
10 word pressをインストール10 word pressをインストール
10 word pressをインストール
 
09 ソーシャルブックマーク(3)
09 ソーシャルブックマーク(3)09 ソーシャルブックマーク(3)
09 ソーシャルブックマーク(3)
 
07 ソーシャルブックマーク(2)
07 ソーシャルブックマーク(2)07 ソーシャルブックマーク(2)
07 ソーシャルブックマーク(2)
 
06 ソーシャルブックマーク(1)
06 ソーシャルブックマーク(1)06 ソーシャルブックマーク(1)
06 ソーシャルブックマーク(1)
 
05 はじめてのmy sql
05 はじめてのmy sql05 はじめてのmy sql
05 はじめてのmy sql
 
04 filesystem include
04 filesystem include04 filesystem include
04 filesystem include
 
03 var array_flow_func
03 var array_flow_func03 var array_flow_func
03 var array_flow_func
 
02 はじめてのメール送信
02 はじめてのメール送信02 はじめてのメール送信
02 はじめてのメール送信
 
05 再利用のためのインクルード
05 再利用のためのインクルード05 再利用のためのインクルード
05 再利用のためのインクルード
 

06 オブジェクト指向の基礎

  • 2. 2 オブジェクト指向とは? オブジェクト指向とは、プログラミングのための オブジェクト指向プログラミングではないルー ルールです。   ルに手続き型プログラミングがあります。   プログラムの固まりをオブジェクト(物)ととら これはみなさんがいままでやっていたプログラ え、お互いの相互作用がプログラム全体の動きに ミングで、一連の処理を順番に行っていきます。   なります。   <?php   オブジェクト //アドレスを定義   $to  =  “hoge@example.com”;   //件名を定義   オブジェクト $sub  =  “This  is  a  test”;   //本文を定義   $body  =  “Hello!”;   //メールを送信   if(mail($to,  $sub,  $body)){        echo  “メール送信成功”;   }else{   オブジェクト      echo  “メール送信失敗”;   }   オブジェクト ?>   10.4.18 (C) 株式会社破滅派
  • 3. 3 オブジェクト指向を車に例えると…(1) オブジェクト指向はそもそも機械工学の世界から誕生しました。   あらゆるものをオブジェクト(モノ)と考えます。 オブジェクト:ハン ドル   オブジェクト:車   回すことでタイヤの 移動を便利にしてくれる乗 オブジェクト:タ 向きを変更する り物 イヤ   エンジンに伴って 回転する オブジェクト:フレーム   車に必要なオブジェクトすべて を納めることができる オブジェクト:アクセル   車が動くのは各部品(オブ 踏み込むことでエンジン を回転させる ジェクト)が相互作用によっ て動いているからです。 10.4.18 (C) 株式会社破滅派
  • 4. 4 オブジェクト指向を車に例えると…(2) オブジェクト指向においては、一つ一つのオブジェクトの機能はそのオブジェクト自 身だけが知っています。外部のオブジェクトはその詳細を知らなくても利用すること ができます。これをオブジェクトの「隠蔽性」または「カプセル化」といいます。 自動車期間工は自動車を作ります。   しかし、エンジンは作りませんし、エン ジンがどのような仕組みで動いているか も知る必要がありません。   タイヤのゴムをどうやって確保するかも 知る必要がありません。   それでも車を完成させることができます。 大規模で複雑な物を作るのに、オブジェクト指向の知識は不可欠です。 10.4.18 (C) 株式会社破滅派
  • 5. 5 オブジェクトを車にたとえると.. クラスはオブジェクトを作るための設計図。   設計図からオブジェクトを作ることを「インスタンス化」といいます。   インスタンスとは、「実体」という意味です。 インスタンス:$MyCar クラス:Car <?php   new演算子でCarクラスの 新しいインスタンスを作成 $MyCar  =  new  Car();   し、変数$myCarという名 ?> 前をつけています。 10.4.18 (C) 株式会社破滅派
  • 6. 6 変数と関数の復習 皆さんはすでにPHPで重要な2つのもの「変数」と「関数」を学びました。 変数…値につける名前   関数…一連の処理につける名前   $hoge  =  “fuga”;   function  tenTimes($num){   $num  =  10;    return  $num  *  10;   $myArr  =  array(1,  2,  3,  4);   }   PHPにおけるオブジェクトはこの変数と関数の集合体です。   この集合体の設計図を「クラス」と呼びます。 10.4.18 (C) 株式会社破滅派
  • 7. 7 設計図(クラス)の書き方 クラスにはプロパティ(部品)とメソッド(機能)があります。   プロパティは変数で、メソッドは関数です。 <?php   class  Car{    //プロパティ    var  $handle;    var  $break;    var  $accel;    var  $engine;    //メソッド   クラス:Car  function  go(){}   部品:ブレーキ、ハンドル、  function  stop(){}   アクセル、エンジン    function  turn($direction){}   機能:進む、止まる、曲がる、  function  engine_start(){}   バックする、エンジンを }   かける ?> 10.4.18 (C) 株式会社破滅派
  • 8. 8 クラスの使い方 クラスは自分で作った物であったり、他人が作ったものだったりします。   通常は1クラス1ファイルとし、読み込んで使います。   <?php        //クラスファイルを読み込む        //通常は1つのクラスで1つのファイルに分けます   index.php Car.php      require_once(“./Car.php”);        //インスタンス化して使えるようにする   index.phpはCar.phpを読み込      $myCar  =  new  Car();   んでそれを利用します。   この場合、Carクラスの機能      //矢印演算子でプロパティを呼び出す   を利用するだけなので、何か      echo  $myCar-­‐>price;  //1,000,000     エラーが起きた場合は index.phpに不具合があると      //メソッドは括弧を付ける   考えることができます。        $myCar-­‐>back();  //バックします   こうしてプログラムの隠蔽性 ?> が保たれます。 10.4.18 (C) 株式会社破滅派
  • 9. 9 オブジェクト指向はどこまで理解する必要があるか? オブジェクト指向は抽象的な概念であり、理解が難しいです。   単純なメールフォームならオブジェクト指向でなくても作れます。   しかし、理解しないとできないこともあります。 オブジェクト指向を理解していないとできないこと   •  WordPressやXoopsなどのカスタマイズ   •  CakePHPなどのフレームワークの利用   •  複雑で高度なシステムの作成   会社の経理部で働くか?   公認会計士になるか?   …という違いに似ています 10.4.18 (C) 株式会社破滅派