Soumettre la recherche
Mettre en ligne
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
•
9 j'aime
•
13,132 vues
アシアル株式会社
Suivre
PHP言語によるオブジェクト指向技術利用に関する入門資料です。 デザインパターンを読み解くことでクラス設計について学びます。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 41
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
今から始める Lens/Prism
今から始める Lens/Prism
Naoki Aoyama
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
BIGLOBE RDRA導入後の要件定義の変化
BIGLOBE RDRA導入後の要件定義の変化
BIGLOBE Inc.
Recommandé
今から始める Lens/Prism
今から始める Lens/Prism
Naoki Aoyama
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
BIGLOBE RDRA導入後の要件定義の変化
BIGLOBE RDRA導入後の要件定義の変化
BIGLOBE Inc.
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
kyon mm
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
Fantastic DSL in Python
Fantastic DSL in Python
kwatch
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
RDRA DDD Agile
RDRA DDD Agile
増田 亨
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
kenjis
Contenu connexe
Tendances
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
増田 亨
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
kyon mm
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
Fantastic DSL in Python
Fantastic DSL in Python
kwatch
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
増田 亨
RDRA DDD Agile
RDRA DDD Agile
増田 亨
Tendances
(20)
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
ドメイン駆動設計入門
ドメイン駆動設計入門
Fantastic DSL in Python
Fantastic DSL in Python
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
RDRA DDD Agile
RDRA DDD Agile
Similaire à 【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
kenjis
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
アシアル株式会社
Getting started MySQL as Document Data Store
Getting started MySQL as Document Data Store
Chihiro Ito
【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
アシアル株式会社
Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
Tom Hayakawa
はじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
Cakephp
Cakephp
Yusuke Ando
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
kenjis
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
アシアル株式会社
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
HTML5プロフェッショナル認定試験対策講座
HTML5プロフェッショナル認定試験対策講座
アシアル株式会社
開発初心者のためのMoodleプラグインの開発と利用(第二部) for Moodle Moot 2015
開発初心者のためのMoodleプラグインの開発と利用(第二部) for Moodle Moot 2015
Shigeharu Yamaoka
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
初めてのPadrino
初めてのPadrino
Takeshi Yabe
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Atsuhiro Kubo
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
Masao Maeda
Similaire à 【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
(20)
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
CodeIgniter 〜 2008年大躍進のPHPフレームワーク
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
Getting started MySQL as Document Data Store
Getting started MySQL as Document Data Store
【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
【アシアル塾】PHPオブジェクト指向再入門・第二回クラスの継承と委譲
Eclipse xtext 紹介
Eclipse xtext 紹介
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
はじめてのCodeIgniter
はじめてのCodeIgniter
Cakephp
Cakephp
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
HTML5プロフェッショナル認定試験対策講座
HTML5プロフェッショナル認定試験対策講座
開発初心者のためのMoodleプラグインの開発と利用(第二部) for Moodle Moot 2015
開発初心者のためのMoodleプラグインの開発と利用(第二部) for Moodle Moot 2015
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
初めてのPadrino
初めてのPadrino
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
PHPカンファレンス関西2012 Silex
PHPカンファレンス関西2012 Silex
Plus de アシアル株式会社
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で学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
アシアル株式会社
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を活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
アシアル株式会社
HTML5ハイブリッドアプリ開発で拓くビジネスチャンス
HTML5ハイブリッドアプリ開発で拓くビジネスチャンス
アシアル株式会社
Plus de アシアル株式会社
(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で学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
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を活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
HTML5ハイブリッドアプリ開発で拓くビジネスチャンス
HTML5ハイブリッドアプリ開発で拓くビジネスチャンス
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
1.
PHPオブジェクト指向再入門 デザインパターンに学ぶクラス設計 1回3,000円のWeb技術教育・アシアル塾
http://www.asial.co.jp/school/juku.php URL : http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 1
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 „ デザインパターンとは • オブジェクト指向設計(Object-Oriented Design: OOD)の達人たちが、優れたクラス設 計から共通のパターンを見出し、名前を付けてカタログ化したもの。 „ 代表的なデザインパターン • GoF (Gang of Four)によるデザインパターン 9 最も有名 – デザインパターンという考え方を初めにソフトウェア開発の世界に持ち込んだのもGoF 9 23のパターンが紹介されている – パターンは3つのカテゴリに分類されている » 生成に関するパターン » 構造に関するパターン » 振る舞いに関するパターン
5.
GoF ‒ 生成に関するパターン
URL : http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 5 „ 生成に関するパターン • Abstract Factory:セットで使われるクラスを生成する • Builder:複雑なオブジェクトを組み立てる • Factory Method:生成するクラスを子クラスに決めさせる • Prototype:オブジェクトのクローンを作る • Singleton:一人っ子オブジェクトを作る
6.
GoF ‒ 構造に関するパターン
URL : http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 6 „ 構造に関するパターン • Adapter:好みのインターフェイスでラッピングする • Bridge:インターフェイスと実装を独立して発展させる • Composite:オブジェクトのツリー構造を表現する • Decorator:好きな順で振る舞いにフィルタを施す • Facade:パッケージの利用窓口を設ける • Flyweight:同じデータを持つオブジェクトを生成しない • Proxy:同じインターフェイスを持つクラスで仲介する
7.
GoF ‒ 振る舞いに関するパターン
URL : http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 7 „ 振る舞いに関するパターン • Chain of Responsibility:処理の責任をバトンタッチする • Command:処理実行のリクエストをクラスで表現する • Interpreter:プログラムの文法をクラスで表現する • Iterator:集合の要素に共通のインターフェイスでアクセス • Mediator:多数のオブジェクトのまとめ役をたてる • Memento:思い出を記憶してUndo機構を実現する • Observer:オブジェクトの状態変化を監視する • State:状態によって振る舞いを切り替える • Strategy:処理内容を実行時に切り替えられるようにする • Template Method:ひな型メソッドから抽象メソッドを利用 • Visitor:型が統一されていない集合の要素にアクセスする
8.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 8 【余談】デザインパターン „ システム開発における他のアイディアとの比較 • アルゴリズム 9 問題を解くための手順 – 実装して利用する。あるいは実装済みのものを利用する。 • ライブラリ 9 汎用性の高いプログラムをまとめたもの – 呼び出して利用する。 • フレームワーク 9 アプリケーションの土台・半完成品 – ルールに従いつつ、プログラムを記述して完成品に仕上げていく。 • パターン 9 優れた対処方法を命名してカタログ化したもの – 状況に応じて選択し、実情に適合させつつ利用する „ クラス設計以外のパターン • AWSクラウドデザインパターン 9 AWSのクラウドサーバーでインフラ設計を行う際のパターン集
9.
デザインパターンを理解するために必要な知識 URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 9
10.
デザインパターンを理解するために必要な知識 „ デザインパターンを理解するために必要な知識
URL : http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 10 • 継承 • 委譲 • インタフェース • 抽象クラス • クラス図 • カプセル化 • ポリモーフィズム(多態性・多様性) „ 理由 • デザインパターンはオブジェクト指向の特徴を活用したものが多いため、上記の考え方などを再確認しな がら学習すると理解しやすい。
11.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 11 継承とは „ 継承 • クラスのプロパティ・メソッドを受け継いで新しいクラスを作成する仕組みです 9 元になるクラスを親クラス・基底クラス・スーパークラスなどと呼びます 9 新しいクラスを子クラス・サブクラス・派生クラスなどと呼びます „ 継承のメリット • 親クラスの機能を再利用することができます „ 記述方法 • クラスを定義する際に「extends」で親クラスを指定します „ 注意点 • 単純に機能を再利用したいだけの場合、継承ではなく委譲を検討して下さい
12.
関連(has) URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 12 委譲とは „ 委譲(delegation) • あるクラスの処理の一部を「別のクラスに任せる」こと • 例えばアプリケーション全体を管理するApplicationクラスがあったと仮定 9 「ログを出力する」という処理が必要な場合 – 具体的な処理はApplicationクラス内には直接記述しない – Loggerクラスを実装し、具体的な処理はそのクラスに任せる(委譲する) • ApplicationとLoggerの関連を表したクラス図 „ 委譲のメリット • クラスの役割分担を行うことができる 9 巨大なクラスができてしまうことを防ぐことができる 9 Loggerを別のApplicationで再利用することも可能
13.
インタフェースと抽象メソッド・抽象クラス URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 13 „ インターフェイスとは • 「実装コードを定義せずに、どんなメソッドを持つかだけを定義する」もの 9 抽象メソッドのみもつことができます „ 抽象メソッドとは • 実装コードのない、宣言だけのメソッド „ 抽象クラスとは • 直接インスタンス化できないクラス 9 継承して利用します • プロパティやメソッドは普通のクラスと同じように実装することができます 9 抽象メソッドを持つこともできます
14.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 14 インターフェースの利用例 „ インタフェースの利用例 <?php interface Logger { public function log($message); // インターフェイス内のメソッドは、すべて抽象メソッドとなる } class FileLogger implements Logger // Loggerインターフェイスを実装する { public function log($message) { // ここで実際のログ処理を行う } } FileLogger.php
15.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 15 抽象クラスの利用例 „ 抽象クラスの利用例 <?php abstract class AbstractLogger // 抽象クラス { abstract public function doLog($message); // 抽象メソッド(実装は子クラスにまかせる) public function log($message) // 通常のメソッド { $this->doLog( date('[Y-m-d H:i:s] ') . $message . "¥n" ); } } AbstractLogger.php <?php // FileLogger.php class FileLogger extends AbstractLogger { public function doLog($message) { file_put_contents('app.log', $message, FILE_APPEND); } } FileLogger.php
16.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 16 クラス図の見方1/2
17.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 17 クラス図の見方2/2
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 Strategyパターン
20.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 20 Strategyパターン „ Strategyパターン • Strategyとは 9 戦略・方策 • 特徴 9 特定の処理を別クラスに移譲し、処理ロジックを切り替えできるようにするパターン • 利用例 9 開発環境と本番環境で挙動を変えたい – デバッグ用のメール送信クラスと本番用のメール送信クラスを切り替える 9 データの保存方式を複数対応できるようにしたい – ファイルに保存するクラスやデータベースに保存するクラスを等を用意して切り替える • 鍵となる技術 9 委譲 9 ポリモーフィズム
21.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 21 Strategyパターンの一般形
22.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 22 今回作成するプログラム
23.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 23 【実習】Strategyパターン „ インタフェースで、どんなメソッドを持つか定義 <?php interface IMailSender { public function send($message); } MailSender.php
24.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 24 【実習】Strategyパターン „ インターフェースを実装するためのクラスを作成 class MailSender implements IMailSender { public function send($message) { echo 'メールを送ります: '.$message; } } „ デバッグ用のメール送信クラスも作成 MailSender.php class DebugMailSender implements IMailSender { public function send($message) { echo 'メールを送りません: '.$message; } }
25.
public function setSender(IMailSender
$sender) { $this->sender = $sender; } URL : http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 25 【実習】Strategyパターン „ Mailを送信するクラスを作成 • 実際の送信は別のクラスに委譲します <?php // Mail.php class Mail { private $sender; „ デバッグ用のメール送信クラスも作成 public function send($message) { $this->sender->send($message); } } Mail.php
26.
strategy_client.php URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 26 【実習】Strategyパターン „ クライアント側 <?php require_once('Mail.php'); require_once('MailSender.php'); $mail = new Mail(); $mail->setSender(new DebugMailSender()); $mail->send('Hello, world!'); // 「メールを送りません: Hello, world!」と表示されるはず
27.
strategy_client.php URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 27 Strategyクラスの切り替え „ 実行時にパラメータや設定ファイルの値を読み、生成するStrategyクラスを切り替える <?php require_once('Mail.php'); require_once('MailSender.php'); $mail = new Mail(); $mailer_class = 'DebugMailSender'; // 設定ファイルからクラス名を読み込むとする。 $mail->setSender(new $mailer_class()); $mail->send('Hello, world!');
28.
DI(Dependency Injection)依存性注入 URL
: http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 28 „ Dependency Injectionとは • Mailクラスは「MailSender」か「DebugMailSender」クラスを利用しています 9 この状態が「依存している」状態です • MailクラスはsetSenderを用意しており、どちらのクラスを利用するか選択が可能 9 依存先のオブジェクトを外部から生成し、メソッドの引数として渡す(注入する)ことをDIと呼ぶ – セッターに渡す場合、Setter Injection – コンストラクタに渡す場合、Constructor Injection • メリット 9 クラス間の結びつき(依存度)を弱めることができる „ DIコンテナとは • 設定ファイルを記述するだけで、Dependency Injectionを自動的に行なってくれる仕組みのこと 9 メリット – ソースコードを変更せずにクラスを切り替えることができる
29.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 29 【付録】Compositeパターン
30.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 30 Compositeパターン „ Compositeパターン • Compositeとは 9 混成・複合 • 特徴 9 ファイルとディレクトリのような木構造を表せるパターン – 枝にあたるオブジェクトと葉にあたるオブジェクトを同様に扱うこともできる • 利用例 9 ファイルやディレクトリのような仕組みを実現したい 9 ECの単品商品やセット商品を分かりやすく管理したい • 鍵となる技術 9 委譲 9 ポリモーフィズム
31.
Compositeパターンの一般形 URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 31
32.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 32 今回作成するプログラム
33.
【実習】Compositeパターン URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 33 „ 枝と葉で利用するインタフェースを定義 <?php interface Entry { public function getPrice(); } Entry.php <?php class Item implements Entry { private $price = 0; public function __construct($price) { $this->price = $price; } public function getPrice() { return $this->price; } } Item.php
34.
【実習】Compositeパターン URL :
http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 34 „ 枝は枝と葉を持つことが出来る <?php class CompositeItem implements Entry { private $child_entries = array(); public function addEntry(Entry $entry) { $this->child_entries[] = $entry; } public function getPrice() { $total_price = 0; foreach ($this->child_entries as $entry) { $total_price += $entry->getPrice(); } return $total_price; } } CompositeItem.php
35.
【実習】Compositeパターン „ セット商品もカートも同一のクラスで表現可能
URL : http://www.asial.co.jp/ │ Copyright © Asial Corporation. All Rights Reserved. │ 35 <?php require_once('Entry.php'); require_once('Item.php'); require_once('CompositeItem.php'); // 商品 $mouse = new Item(2000); $note_pc = new Item(1); $wifi_router = new Item(4800); // セット商品 $pc_set = new CompositeItem(); $pc_set->addEntry($note_pc); $pc_set->addEntry($wifi_router); // カートに入れる $cart = new CompositeItem(); $cart->addEntry($mouse); $cart->addEntry($pc_set); // 合計金額を表示 echo $cart->getPrice().'円'; // 6801円と表示されるはず composite_client.php
36.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 36 参考文献
37.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 37 参考文献 „ PHPでGoFデザインパターンを実装したい • PHPによるデザインパターン入門 9 http://www.doyouphp.jp/book/book_phpdp.shtml 9 23のデザインパターンが全てPHPのコードで紹介されています。コードも分かりやすいので学習用におすすめ です。
38.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 38 【CM】アシアルスクール
39.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 39 アシアルスクールのご案内 „ Web関連技術を集中的かつ体系的に学べる研修サービスです • 半日~二日間の集中講義を中心に実施 • PHPやJavaScript、LinuxといったWeb関連技術が学べます „ URL • http://www.asial.co.jp/school/guide.php „ 例:PHP講座の学習ロードマップ
40.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 40 アシアル塾のご案内 „ 1回3,000円でWeb技術を約90分学習できる格安の教育サービスです • 60分の講義+30分の復習&質問タイム „ 主な対象 • IT業界やWeb業界で働いているプロの方の学習を応援します! 9 Webデザイナーの方大歓迎 • 技術を分かりやすく教えます „ 絶対理解保証キャンペーン実施中 • もし講義内容にご満足いただけなかった場合は返金いたします 9 (返金手数料のみ頂戴いたします) „ URL • http://www.asial.co.jp/school/juku.php
41.
URL : http://www.asial.co.jp/
│ Copyright © Asial Corporation. All Rights Reserved. │ 41 企業研修のご案内 „ アシアルではWeb技術に関する企業研修を行っています • 技術職採用の社員に向けた新人研修・中途採用者向け研修 • 総合職向けのWeb技術入門研修 „ 主な実績 • グリー株式会社様 • 株式会社ドワンゴ様 • 株式会社朝日新聞社様 • 他多数(詳しくは、Webサイトをご参照下さい) „ URL • http://www.asial.co.jp/business/training/
Télécharger maintenant