Submit Search
Upload
【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
•
3 likes
•
2,993 views
アシアル株式会社
Follow
PHP言語によるオブジェクト指向技術利用に関する入門資料です。 クラスの継承と委譲について解説しています。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 25
Download now
Download to read offline
Recommended
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
アシアル株式会社
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
Yuji Otani
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
DQNEO
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
Recommended
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
アシアル株式会社
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
Yuji Otani
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
DQNEO
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
Takanori Hayashi
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
第7回WBAシンポジウム:予測符号化モデルとしての 深層予測学習とロボット知能化
第7回WBAシンポジウム:予測符号化モデルとしての 深層予測学習とロボット知能化
The Whole Brain Architecture Initiative
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
[DL輪読会]A System for General In-Hand Object Re-Orientation
[DL輪読会]A System for General In-Hand Object Re-Orientation
Deep Learning JP
AutoGluonではじめるAutoML
AutoGluonではじめるAutoML
西岡 賢一郎
ロジカルプレゼンテーション
ロジカルプレゼンテーション
Aya Kaino
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
Unity Technologies Japan K.K.
SwiftのDI方法につい て最近考えてた話
SwiftのDI方法につい て最近考えてた話
Yahoo!デベロッパーネットワーク
データベース入門
データベース入門
拓 小林
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
Laravel aspectで関心の分離
Laravel aspectで関心の分離
Kenjiro Kubota
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
PowerApps アプリ開発入門
PowerApps アプリ開発入門
Yoshitaka Seo
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
アシアル株式会社
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
アシアル株式会社
More Related Content
What's hot
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
Takanori Hayashi
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
第7回WBAシンポジウム:予測符号化モデルとしての 深層予測学習とロボット知能化
第7回WBAシンポジウム:予測符号化モデルとしての 深層予測学習とロボット知能化
The Whole Brain Architecture Initiative
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
[DL輪読会]A System for General In-Hand Object Re-Orientation
[DL輪読会]A System for General In-Hand Object Re-Orientation
Deep Learning JP
AutoGluonではじめるAutoML
AutoGluonではじめるAutoML
西岡 賢一郎
ロジカルプレゼンテーション
ロジカルプレゼンテーション
Aya Kaino
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
Unity Technologies Japan K.K.
SwiftのDI方法につい て最近考えてた話
SwiftのDI方法につい て最近考えてた話
Yahoo!デベロッパーネットワーク
データベース入門
データベース入門
拓 小林
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
Laravel aspectで関心の分離
Laravel aspectで関心の分離
Kenjiro Kubota
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
PowerApps アプリ開発入門
PowerApps アプリ開発入門
Yoshitaka Seo
What's hot
(20)
ソフトウェアにおける 複雑さとは何なのか?
ソフトウェアにおける 複雑さとは何なのか?
図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
第7回WBAシンポジウム:予測符号化モデルとしての 深層予測学習とロボット知能化
第7回WBAシンポジウム:予測符号化モデルとしての 深層予測学習とロボット知能化
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
[DL輪読会]A System for General In-Hand Object Re-Orientation
[DL輪読会]A System for General In-Hand Object Re-Orientation
AutoGluonではじめるAutoML
AutoGluonではじめるAutoML
ロジカルプレゼンテーション
ロジカルプレゼンテーション
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
SwiftのDI方法につい て最近考えてた話
SwiftのDI方法につい て最近考えてた話
データベース入門
データベース入門
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
Laravel aspectで関心の分離
Laravel aspectで関心の分離
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
PowerApps アプリ開発入門
PowerApps アプリ開発入門
Viewers also liked
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
アシアル株式会社
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
アシアル株式会社
継続的Webセキュリティテスト PHPカンファレンス関西2015 LT
継続的Webセキュリティテスト PHPカンファレンス関西2015 LT
ichikaway
traitを使って楽したい話
traitを使って楽したい話
infinite_loop
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答
NHN テコラス株式会社
私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました
NHN テコラス株式会社
Viewers also liked
(6)
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第三回Exceptionクラスによる例外処理
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
継続的Webセキュリティテスト PHPカンファレンス関西2015 LT
継続的Webセキュリティテスト PHPカンファレンス関西2015 LT
traitを使って楽したい話
traitを使って楽したい話
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答
機械学習を学ぶための準備 その4 (行列の掛け算について) 試験問題 解答
私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました
Similar to 【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
アシアル株式会社
Clojureコレクションで探るimmutableでpersistentな世界
Clojureコレクションで探るimmutableでpersistentな世界
Kent Ohashi
Reservation
Reservation
Jun Chiba
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
Library login
Library login
Jun Chiba
Active Object
Active Object
y-uti
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
sohta
pi-17. プログラム設計
pi-17. プログラム設計
kunihikokaneko1
Spath for enterprise
Spath for enterprise
Koichiro Sumi
jjugccc2018 app review postmortem
jjugccc2018 app review postmortem
tamtam180
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方
Shunji Konishi
試して学べるクラウド技術! Eucalyptus/AeolusConductor
試して学べるクラウド技術! Eucalyptus/AeolusConductor
Etsuji Nakai
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
GraphQL入門
GraphQL入門
Kent Ohashi
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
David Buck
Fork/Join Framework
Fork/Join Framework
Appresso Engineering Team
Modeling Workshop
Modeling Workshop
You&I
Similar to 【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
(20)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
Clojureコレクションで探るimmutableでpersistentな世界
Clojureコレクションで探るimmutableでpersistentな世界
Reservation
Reservation
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Library login
Library login
Active Object
Active Object
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
pi-17. プログラム設計
pi-17. プログラム設計
Spath for enterprise
Spath for enterprise
jjugccc2018 app review postmortem
jjugccc2018 app review postmortem
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方
試して学べるクラウド技術! Eucalyptus/AeolusConductor
試して学べるクラウド技術! Eucalyptus/AeolusConductor
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
GraphQL入門
GraphQL入門
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Fork/Join Framework
Fork/Join Framework
Modeling Workshop
Modeling Workshop
More from アシアル株式会社
MonacaとEducation活動の紹介
MonacaとEducation活動の紹介
アシアル株式会社
PWA 4 Business
PWA 4 Business
アシアル株式会社
Monacaによるモバイルアプリ開発ことはじめ
Monacaによるモバイルアプリ開発ことはじめ
アシアル株式会社
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験
アシアル株式会社
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
アシアル株式会社
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
アシアル株式会社
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
アシアル株式会社
Onsen UI 2 開発における JS フレームワーク衝突事例集
Onsen UI 2 開発における JS フレームワーク衝突事例集
アシアル株式会社
Web標準技術でiOS、Android両対応アプリを開発
Web標準技術でiOS、Android両対応アプリを開発
アシアル株式会社
Cordovaの特徴と開発手法概要
Cordovaの特徴と開発手法概要
アシアル株式会社
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
アシアル株式会社
Onsen UI の最近とこれから 〜 国内サポートはじめました
Onsen UI の最近とこれから 〜 国内サポートはじめました
アシアル株式会社
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
アシアル株式会社
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
アシアル株式会社
Gartner summit 2016
Gartner summit 2016
アシアル株式会社
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線
アシアル株式会社
Monacaソリューションセミナー20160621
Monacaソリューションセミナー20160621
アシアル株式会社
20160308seminar2
20160308seminar2
アシアル株式会社
Nifty cloud mbaas
Nifty cloud mbaas
アシアル株式会社
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
アシアル株式会社
More from アシアル株式会社
(20)
MonacaとEducation活動の紹介
MonacaとEducation活動の紹介
PWA 4 Business
PWA 4 Business
Monacaによるモバイルアプリ開発ことはじめ
Monacaによるモバイルアプリ開発ことはじめ
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
Onsen UI 2 開発における JS フレームワーク衝突事例集
Onsen UI 2 開発における JS フレームワーク衝突事例集
Web標準技術でiOS、Android両対応アプリを開発
Web標準技術でiOS、Android両対応アプリを開発
Cordovaの特徴と開発手法概要
Cordovaの特徴と開発手法概要
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
Onsen UI の最近とこれから 〜 国内サポートはじめました
Onsen UI の最近とこれから 〜 国内サポートはじめました
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
Gartner summit 2016
Gartner summit 2016
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線
Monacaソリューションセミナー20160621
Monacaソリューションセミナー20160621
20160308seminar2
20160308seminar2
Nifty cloud mbaas
Nifty cloud mbaas
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
1.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 1 PHPオブジェクト指向再入門 クラスの継承と委譲 1回3,000円のWeb技術教育・アシアル塾 http://www.asial.co.jp/school/juku.php
2.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 2 本講座の目的 本講座の目的 • 書籍だけでは理解することが難しいオブジェクト指向の技術や考え方を、ひとつずつ理解していきます。 受講対象者 • プログラミングの基本的な手法である構造化プログラミング(順次・反復・分岐)や変数・関数の仕組みを理 解している方 第二回目(クラスの継承と委譲)の目標 1. クラスの継承について理解する 2. クラス図について理解する 3. 継承ではなく委譲という選択肢があることを理解する
3.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 3 継承とは
4.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 4 継承とは クラスのプロパティ・メソッドを受け継いで新しいクラスを作成する仕組みです • 元になるクラスを親クラス・基底クラス・スーパークラスなどと呼びます • 新しいクラスを子クラス・サブクラス・派生クラスなどと呼びます 継承のメリット • 親クラスの機能を再利用することができます 記述方法 • クラスを定義する際に「extends」で親クラスを指定します プロパティ・メソッドのオーバーライド(上書き) • protectedやpublicなものは子クラスでオーバーライドが可能です • privateなものはオーバーライドすることができません 注意点 • 単純に機能を再利用したいだけの場合、継承ではなく委譲を検討して下さい 詳しくは後半の委譲で解説します
5.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 5 Personを継承してEmployeeを定義する Personクラスを親クラスとして「Employee」という子クラスを作成します • Employeeの仕様 給与を受け取ることができます 給与は勤続年数に応じて昇給します プロパティ名やメソッド名の仕様 – 次に紹介する「クラス図」にて確認します
6.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 6 クラス図とは クラス図とは? • クラスを分かりやすく表現するための設計図 クラスのメソッド名やプロパティ名を表現できます 継承や委譲の関係を表現できます • クラス図はUML(統一モデリング言語)で規定されています モデリングとは? • 対象を分かりやすく表現するための技術 オブジェクト指向の世界ではUMLが利用されています – クラス図はUML2.0で規定された13種類の図の内の一つです データベースのテーブル構造を表現するためのモデルとしてはER図というものが利用されています
7.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 7 PersonとEmployeeのクラス図 記号の意味 • アクセス修飾子 「-」はprivate 「+」はpublicを表します。protectedは「#」になります。 • 継承 継承の関係は矢印で表すことができます 継承 (extends)
8.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 8 【実習】Personクラスの作成 Person.phpを作成します <?php class Person { private $name = ''; public function __construct($name) { $this->setName($name); } public function setName($name) { $this->name = trim($name); } public function getName() { return $this->name; } public function sayHello() { echo 'こんにちは、' . $this->name . 'です。'; } } Person.php
9.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 9 【実習】Employeeクラスの作成 Employeeを作成します <?php class Employee extends Person { private $base_salary = 200000; private $annual_pay_rise = 10000; private $service_years = 0; public function __construct($name, $service_years) { $this->setName($name); $this->setServiceYears($service_years); } public function setServiceYears($service_years) { $this->service_years = $service_years; } public function getSalary() { $salary = $this->base_salary + ($this->annual_pay_rise * $this->service_years); return $salary; } public function displaySalary() { echo $this->getName(). "さんの給与は" . number_format($this->getSalary()) . "円です"; } } Employee.php
10.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 10 【実習】Employeeオブジェクトの作成 Employeeを呼び出します <?php require_once('Person.php'); require_once('Employee.php'); $taro = new Employee('アシアル太郎', 10); $taro->displaySalary(); employee_client.php
11.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 11 継承のポイント 継承のポイント • EmployeeはPersonの機能を利用することができます setName()メソッドを再利用して名前をセットすることができます – $this->nameはprivateのため、Employeeから直接変更することはできません。 • オーバーライド EmployeeはPersonの機能をオーバーライドすることができます 今回は__constructメソッドをオーバーライドしています – 親クラスの__constructは呼ばれなくなります 親クラスのprivateなメソッドはオーバーライドすることができません オーバーライドしていても子クラスから親クラスのメソッドを呼びだすことは可能です – 例えば、子クラスの__construct()中で親クラスの__construct()も呼び出せます » 親クラスのメソッドを呼びたい場合は parent::__construct(); のように記述します。 注意事項 • メソッドから直接echoなどで出力するとエスケープ処理やテストが大変になるので避けましょう。 getXXXのように値をreturnで返すようにします。
12.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 12 委譲とは
13.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 13 委譲とは 委譲(delegation) • あるクラスの処理の一部を「別のクラスに任せる」こと • 例えばアプリケーション全体を管理するApplicationクラスがあったと仮定 「ログを出力する」という処理が必要な場合 – 具体的な処理はApplicationクラス内には直接記述しない – Loggerクラスを実装し、具体的な処理はそのクラスに任せる(委譲する) • ApplicationとLoggerの関連を表したクラス図 委譲のメリット • クラスの役割分担を行うことができる 巨大なクラスができてしまうことを防ぐことができる Loggerを別のApplicationで再利用することも可能 関連(has)
14.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 14 【実習】ApplicationとLoggerを実装しよう Application <?php class Application { private $logger; public function setLogger(FileLogger $logger) { $this->logger = $logger; } public function log($message) { $this->logger->log($message); } } Application.php
15.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 15 【実習】ApplicationとLoggerを実装しよう FileLogger(Logger) <?php class FileLogger { private $path = ''; public function __construct($path) { $this->setPath($path); } public function setPath($path) { $this->path = $path; } public function log($message) { file_put_contents($this->path, $message . PHP_EOL, FILE_APPEND); } } FileLogger.php
16.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 16 【実習】ApplicationとLoggerを実装しよう <?php require_once('FileLogger.php'); require_once('Application.php'); $logger = new FileLogger('/tmp/log.txt'); $app = new Application(); $app->setLogger($logger); $app->log('アプリケーション起動'); $app->log('処理を受け付けました'); $app->log('アプリケーション終了'); application_client.php
17.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 17 継承と委譲の使い分け 継承を使う場合 • 子クラスが親クラスに対して is-a関係になる場合 Employee is a Person • logメソッドを再利用したいという理由だけで継承を利用してはいけない Application is a logger (NG!) 委譲を使う場合 • 再利用したいクラスに対して has-a関係になる場合 Application has a Logger
18.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 18 【発展的な内容】
19.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 19 オブジェクトの型判定 オブジェクトの判定が必要な理由 • 特定のオブジェクトを必要とする処理を行う場合、オブジェクトの型を判定す る必要があります。 判定方法 • instanceof演算子 オブジェクトが特定のクラスに属しているかどうかを判定します • タイプヒンティング 関数やメソッドの引数で受け取ることのできる値を、特定のクラスに属している オブジェクトだけに制限します
20.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 20 オブジェクトの型判定方法 instanceof • instanceof 演算子でクラスを指定する タイプヒンティング • 関数やメソッドを定義する際、引数名とセットでクラス名を指定する public function setLogger(FileLogger $logger) { $this->logger = $logger; } <?php require_once('Person.php'); require_once('Employee.php'); $taro = new Person('太郎'); $hanako = new Employee('花子'); var_dump($taro instanceof Person); var_dump($hanako instanceof Person); // 花子は従業員かつ人間でもあるのでtrueになる var_dump($taro instanceof Employee); // 太郎は従業員ではないのでfalseになる var_dump($hanako instanceof Employee);
21.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 21 【発展課題】継承 EmployeeでsayHello()メソッドをオーバーライドしてみよう Employeeを更に継承して新しいクラスを定義してみましょう • 仕様例:Programmerクラス ソースコードを記述することができる 年功序列ではなく違う指標で給与が決まる クラス図を書いてみよう • 今日利用したクラス図を書いてみる • Employeeを継承した新しいクラスのクラス図を書いてみよう
22.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 22 【CM】アシアルスクール
23.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 23 アシアル塾のご案内 1回3,000円でWeb技術を約90分学習できる格安の教育サービスです • 60分の講義+30分の復習&質問タイム 主な対象 • IT業界やWeb業界で働いているプロの方の学習を応援します! Webデザイナーの方大歓迎 • 技術を分かりやすく教えます 絶対理解保証キャンペーン実施中 • もし講義内容にご満足いただけなかった場合は返金いたします (返金手数料のみ頂戴いたします) URL • http://www.asial.co.jp/school/juku.php
24.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 24 アシアルスクールのご案内 Web関連技術を集中的かつ体系的に学べる研修サービスです • 半日∼二日間の集中講義を中心に実施 • PHPやJavaScript、LinuxといったWeb関連技術が学べます URL • http://www.asial.co.jp/school/guide.php 例:PHP講座の学習ロードマップ
25.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 25 企業研修のご案内 アシアルではWeb技術に関する企業研修を行っています • 技術職採用の社員に向けた新人研修・中途採用者向け研修 • 総合職向けのWeb技術入門研修 主な実績 • グリー株式会社様 • 株式会社ドワンゴ様 • 株式会社朝日新聞社様 URL • http://www.asial.co.jp/business/training/
Download now