Soumettre la recherche
Mettre en ligne
iii_SGMI #5 "OOP & Design Patterns"
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
698 vues
Ryohei Suzuki
Suivre
Signaler
Partager
Signaler
Partager
1 sur 19
Télécharger maintenant
Recommandé
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#
ssusera3d157
プロ生Lt20130622
プロ生Lt20130622
erthejp
プログラミング言語は怖くない
プログラミング言語は怖くない
Shoichi Matsuda
Cap01
Cap01
遼太郎 浦郷
楽しいプログラミング
楽しいプログラミング
明洋 庄司
Rのコードをキレイに見せたい
Rのコードをキレイに見せたい
mangantempy
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima
C言語について
C言語について
Katsuro-u
Recommandé
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#
ssusera3d157
プロ生Lt20130622
プロ生Lt20130622
erthejp
プログラミング言語は怖くない
プログラミング言語は怖くない
Shoichi Matsuda
Cap01
Cap01
遼太郎 浦郷
楽しいプログラミング
楽しいプログラミング
明洋 庄司
Rのコードをキレイに見せたい
Rのコードをキレイに見せたい
mangantempy
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima
C言語について
C言語について
Katsuro-u
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
ど素人向け エンジニア勉強会
ど素人向け エンジニア勉強会
YukiIwasaki2764
括弧を使わないLispプログラミング
括弧を使わないLispプログラミング
Yuta Mizushima
Lt python腕試しネタ
Lt python腕試しネタ
kiwofusi
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
Kohei Taniguchi
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪
Naoki Kitora
OpenCAPI meetup 20180702
OpenCAPI meetup 20180702
Yutaka Kawai
Ruby Introduction
Ruby Introduction
YushiroDodo
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
新人プログラマーが気に入ったPythonの基礎の基礎
新人プログラマーが気に入ったPythonの基礎の基礎
iPride Co., Ltd.
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料
Takumi Murano
Lt1
Lt1
HirotoYamashita1
並列プログラミング入門!&おさらい!
並列プログラミング入門!&おさらい!
道化師 堂華
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
Preferred Networks
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Yuki Ishikawa
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
Wataru Terada
先端技術 関数型プログラミング
先端技術 関数型プログラミング
聡 中川
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
Keisuke Umezawa
母語方式Coq
母語方式Coq
Kiyoshi Ogawa
Lucene/Solr 用形態素解析システムのご紹介 ベイシス・テクノロジー
Lucene/Solr 用形態素解析システムのご紹介 ベイシス・テクノロジー
Basis Technology K.K.
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
Hiroshi Yamashita
Contenu connexe
Tendances
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
ど素人向け エンジニア勉強会
ど素人向け エンジニア勉強会
YukiIwasaki2764
括弧を使わないLispプログラミング
括弧を使わないLispプログラミング
Yuta Mizushima
Lt python腕試しネタ
Lt python腕試しネタ
kiwofusi
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
Kohei Taniguchi
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪
Naoki Kitora
OpenCAPI meetup 20180702
OpenCAPI meetup 20180702
Yutaka Kawai
Ruby Introduction
Ruby Introduction
YushiroDodo
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
新人プログラマーが気に入ったPythonの基礎の基礎
新人プログラマーが気に入ったPythonの基礎の基礎
iPride Co., Ltd.
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料
Takumi Murano
Lt1
Lt1
HirotoYamashita1
並列プログラミング入門!&おさらい!
並列プログラミング入門!&おさらい!
道化師 堂華
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
Preferred Networks
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Yuki Ishikawa
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
Wataru Terada
先端技術 関数型プログラミング
先端技術 関数型プログラミング
聡 中川
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
Keisuke Umezawa
母語方式Coq
母語方式Coq
Kiyoshi Ogawa
Tendances
(20)
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
ど素人向け エンジニア勉強会
ど素人向け エンジニア勉強会
括弧を使わないLispプログラミング
括弧を使わないLispプログラミング
Lt python腕試しネタ
Lt python腕試しネタ
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
第一回関数型言語勉強会 大阪
第一回関数型言語勉強会 大阪
OpenCAPI meetup 20180702
OpenCAPI meetup 20180702
Ruby Introduction
Ruby Introduction
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
新人プログラマーが気に入ったPythonの基礎の基礎
新人プログラマーが気に入ったPythonの基礎の基礎
金大アルゴリズム勉強会#007資料
金大アルゴリズム勉強会#007資料
Lt1
Lt1
並列プログラミング入門!&おさらい!
並列プログラミング入門!&おさらい!
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
先端技術 関数型プログラミング
先端技術 関数型プログラミング
プログラミング言語として考えたTensor flow
プログラミング言語として考えたTensor flow
母語方式Coq
母語方式Coq
En vedette
Lucene/Solr 用形態素解析システムのご紹介 ベイシス・テクノロジー
Lucene/Solr 用形態素解析システムのご紹介 ベイシス・テクノロジー
Basis Technology K.K.
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
Hiroshi Yamashita
J 4共通 XCITE秋2014-開発者の可能性を際限なく広げる高性能クラウドSoftLayer
J 4共通 XCITE秋2014-開発者の可能性を際限なく広げる高性能クラウドSoftLayer
Maho Takara
20140222 はじめてのオープンストリートマップ
20140222 はじめてのオープンストリートマップ
Taichi Furuhashi
Landing Teams within Linaro
Landing Teams within Linaro
JamieBennett
VIOPS04: Intel VT ~仮想化を支える基礎技術~
VIOPS04: Intel VT ~仮想化を支える基礎技術~
VIOPS Virtualized Infrastructure Operators group ARCHIVES
つぶやかないでTwitterをビジネスに活用する秘訣セミナー
つぶやかないでTwitterをビジネスに活用する秘訣セミナー
新潟コンサルタント横田秀珠
ITを活用した販売促進セミナー前編in三条商工会議所
ITを活用した販売促進セミナー前編in三条商工会議所
新潟コンサルタント横田秀珠
OSC名古屋2014 使えるクラウド SoftLayer
OSC名古屋2014 使えるクラウド SoftLayer
Maho Takara
VIOPS07: アプリケーションサービスの自動化
VIOPS07: アプリケーションサービスの自動化
VIOPS Virtualized Infrastructure Operators group ARCHIVES
ごちうさ Advent Calendar
ごちうさ Advent Calendar
yaplus
SoftLayer見積もり作成Tips
SoftLayer見積もり作成Tips
softlayerjp
YAPC::Asia 2014 前夜祭
YAPC::Asia 2014 前夜祭
Hon Dallica
PC88時代のシューティングゲーム [概要]
PC88時代のシューティングゲーム [概要]
IGDA Japan
Irish Planning Institute (IPI) Autumn Conference 2016
Irish Planning Institute (IPI) Autumn Conference 2016
Justin Gleeson
2014 JOI春合宿 行列の基礎とその応用
2014 JOI春合宿 行列の基礎とその応用
Hiroshi Yamashita
子どもとスマホ 中間成果物
子どもとスマホ 中間成果物
NAGATA Chihiro
Practical Bug Reporting
Practical Bug Reporting
charsbar
GTMF 2015: BISHAMON v1.8 最新事情 | マッチロック株式会社
GTMF 2015: BISHAMON v1.8 最新事情 | マッチロック株式会社
Game Tools & Middleware Forum
Rails 速度改善結果レポート
Rails 速度改善結果レポート
Masaru Gushiken
En vedette
(20)
Lucene/Solr 用形態素解析システムのご紹介 ベイシス・テクノロジー
Lucene/Solr 用形態素解析システムのご紹介 ベイシス・テクノロジー
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説
J 4共通 XCITE秋2014-開発者の可能性を際限なく広げる高性能クラウドSoftLayer
J 4共通 XCITE秋2014-開発者の可能性を際限なく広げる高性能クラウドSoftLayer
20140222 はじめてのオープンストリートマップ
20140222 はじめてのオープンストリートマップ
Landing Teams within Linaro
Landing Teams within Linaro
VIOPS04: Intel VT ~仮想化を支える基礎技術~
VIOPS04: Intel VT ~仮想化を支える基礎技術~
つぶやかないでTwitterをビジネスに活用する秘訣セミナー
つぶやかないでTwitterをビジネスに活用する秘訣セミナー
ITを活用した販売促進セミナー前編in三条商工会議所
ITを活用した販売促進セミナー前編in三条商工会議所
OSC名古屋2014 使えるクラウド SoftLayer
OSC名古屋2014 使えるクラウド SoftLayer
VIOPS07: アプリケーションサービスの自動化
VIOPS07: アプリケーションサービスの自動化
ごちうさ Advent Calendar
ごちうさ Advent Calendar
SoftLayer見積もり作成Tips
SoftLayer見積もり作成Tips
YAPC::Asia 2014 前夜祭
YAPC::Asia 2014 前夜祭
PC88時代のシューティングゲーム [概要]
PC88時代のシューティングゲーム [概要]
Irish Planning Institute (IPI) Autumn Conference 2016
Irish Planning Institute (IPI) Autumn Conference 2016
2014 JOI春合宿 行列の基礎とその応用
2014 JOI春合宿 行列の基礎とその応用
子どもとスマホ 中間成果物
子どもとスマホ 中間成果物
Practical Bug Reporting
Practical Bug Reporting
GTMF 2015: BISHAMON v1.8 最新事情 | マッチロック株式会社
GTMF 2015: BISHAMON v1.8 最新事情 | マッチロック株式会社
Rails 速度改善結果レポート
Rails 速度改善結果レポート
Similaire à iii_SGMI #5 "OOP & Design Patterns"
Python勉強会 2015-12-02
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
Ryo Higashigawa
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
No Bu
2015LETシンポジウム 最大増加語数のモデリング
2015LETシンポジウム 最大増加語数のモデリング
WritingMaetriX
プログラミングのことはじめ 互助会 20160507 バージョン
プログラミングのことはじめ 互助会 20160507 バージョン
Manabu Murakami
勉強会 - 1
勉強会 - 1
KenjiYamasaki5
2011年10月21日
2011年10月21日
nukaemon
自由なデータ
自由なデータ
Takatsugu Nokubi
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
千紘 佐野
大阪工大プログラミング言語の標準化
大阪工大プログラミング言語の標準化
Toshiaki Kurokawa
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Hironori Washizaki
アプリデザインの共通言語
アプリデザインの共通言語
Hiroki Akiyama
Pyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
Php development efficiency improvement
Php development efficiency improvement
伸幸 茂木
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
PHPカンファレンス2015
PHPカンファレンス2015
Daisuke Kasuya
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
TATSUYA HAYAMIZU
CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
金沢アプリ塾デザインパターンとオープンデータ
金沢アプリ塾デザインパターンとオープンデータ
Masayuki KaToH
Similaire à iii_SGMI #5 "OOP & Design Patterns"
(20)
Python勉強会 2015-12-02
Python勉強会 2015-12-02
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
2015LETシンポジウム 最大増加語数のモデリング
2015LETシンポジウム 最大増加語数のモデリング
プログラミングのことはじめ 互助会 20160507 バージョン
プログラミングのことはじめ 互助会 20160507 バージョン
勉強会 - 1
勉強会 - 1
2011年10月21日
2011年10月21日
自由なデータ
自由なデータ
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
ノーコード・ローコード開発の意義
ノーコード・ローコード開発の意義
大阪工大プログラミング言語の標準化
大阪工大プログラミング言語の標準化
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
アプリデザインの共通言語
アプリデザインの共通言語
Pyconjp2014_implementations
Pyconjp2014_implementations
Php development efficiency improvement
Php development efficiency improvement
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
PHPカンファレンス2015
PHPカンファレンス2015
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
CodingTips+ 基礎編
CodingTips+ 基礎編
金沢アプリ塾デザインパターンとオープンデータ
金沢アプリ塾デザインパターンとオープンデータ
Plus de Ryohei Suzuki
Transformer based approaches for visual representation learning
Transformer based approaches for visual representation learning
Ryohei Suzuki
Paper memo: persistent homology on biological problems
Paper memo: persistent homology on biological problems
Ryohei Suzuki
Paper memo: Optimal-Transport Analysis of Single-Cell Gene Expression Identif...
Paper memo: Optimal-Transport Analysis of Single-Cell Gene Expression Identif...
Ryohei Suzuki
Basic Concepts of Entanglement Measures
Basic Concepts of Entanglement Measures
Ryohei Suzuki
Disentangled Representation Learning of Deep Generative Models
Disentangled Representation Learning of Deep Generative Models
Ryohei Suzuki
論文紹介: "MolGAN: An implicit generative model for small molecular graphs"
論文紹介: "MolGAN: An implicit generative model for small molecular graphs"
Ryohei Suzuki
Report: "MolGAN: An implicit generative model for small molecular graphs"
Report: "MolGAN: An implicit generative model for small molecular graphs"
Ryohei Suzuki
等号と不等号の物理学
等号と不等号の物理学
Ryohei Suzuki
Wolf et al. "Graph abstraction reconciles clustering with trajectory inferen...
Wolf et al. "Graph abstraction reconciles clustering with trajectory inferen...
Ryohei Suzuki
コンピュータは知恵熱を出すか?
コンピュータは知恵熱を出すか?
Ryohei Suzuki
身体の中の小宇宙:免疫研究の最前線
身体の中の小宇宙:免疫研究の最前線
Ryohei Suzuki
Single-cell pseudo-temporal ordering 近年の技術動向
Single-cell pseudo-temporal ordering 近年の技術動向
Ryohei Suzuki
Collaborative 3D Modeling by the Crowd
Collaborative 3D Modeling by the Crowd
Ryohei Suzuki
汝は計算機なりや?
汝は計算機なりや?
Ryohei Suzuki
アナログとはなんだろう。―古くて新しい、もう一つの計算―
アナログとはなんだろう。―古くて新しい、もう一つの計算―
Ryohei Suzuki
AnnoTone (CHI 2015)
AnnoTone (CHI 2015)
Ryohei Suzuki
色字共感覚と書記素学習
色字共感覚と書記素学習
Ryohei Suzuki
AnnoTone: 高周波音の映像収録時埋め込みによる編集支援
AnnoTone: 高周波音の映像収録時埋め込みによる編集支援
Ryohei Suzuki
立体音響とインタラクション
立体音響とインタラクション
Ryohei Suzuki
SIGGRAPH 2014 Preview -"Shape Collection" Session
SIGGRAPH 2014 Preview -"Shape Collection" Session
Ryohei Suzuki
Plus de Ryohei Suzuki
(20)
Transformer based approaches for visual representation learning
Transformer based approaches for visual representation learning
Paper memo: persistent homology on biological problems
Paper memo: persistent homology on biological problems
Paper memo: Optimal-Transport Analysis of Single-Cell Gene Expression Identif...
Paper memo: Optimal-Transport Analysis of Single-Cell Gene Expression Identif...
Basic Concepts of Entanglement Measures
Basic Concepts of Entanglement Measures
Disentangled Representation Learning of Deep Generative Models
Disentangled Representation Learning of Deep Generative Models
論文紹介: "MolGAN: An implicit generative model for small molecular graphs"
論文紹介: "MolGAN: An implicit generative model for small molecular graphs"
Report: "MolGAN: An implicit generative model for small molecular graphs"
Report: "MolGAN: An implicit generative model for small molecular graphs"
等号と不等号の物理学
等号と不等号の物理学
Wolf et al. "Graph abstraction reconciles clustering with trajectory inferen...
Wolf et al. "Graph abstraction reconciles clustering with trajectory inferen...
コンピュータは知恵熱を出すか?
コンピュータは知恵熱を出すか?
身体の中の小宇宙:免疫研究の最前線
身体の中の小宇宙:免疫研究の最前線
Single-cell pseudo-temporal ordering 近年の技術動向
Single-cell pseudo-temporal ordering 近年の技術動向
Collaborative 3D Modeling by the Crowd
Collaborative 3D Modeling by the Crowd
汝は計算機なりや?
汝は計算機なりや?
アナログとはなんだろう。―古くて新しい、もう一つの計算―
アナログとはなんだろう。―古くて新しい、もう一つの計算―
AnnoTone (CHI 2015)
AnnoTone (CHI 2015)
色字共感覚と書記素学習
色字共感覚と書記素学習
AnnoTone: 高周波音の映像収録時埋め込みによる編集支援
AnnoTone: 高周波音の映像収録時埋め込みによる編集支援
立体音響とインタラクション
立体音響とインタラクション
SIGGRAPH 2014 Preview -"Shape Collection" Session
SIGGRAPH 2014 Preview -"Shape Collection" Session
iii_SGMI #5 "OOP & Design Patterns"
1.
OOP & Design
Patterns Iii_SGMI #5 “Pattern Language” Ryohei SUZUKI
2.
OOP – Object
Oriented Programming オブジェクト指向プログラミングと は?
3.
プログラムとは? • 計算機が解釈、実行することの出来るデータ • 計算機のモデル
– ラムダ計算, 帰納的関数, チューリングマシン, etc… • 一般的には – 実行ファイルはバイナリデータ(機械語) – ソースコードはテキストデータ • プログラムは形式的な記述
4.
プログラミングとは? • プログラム –
機械語に翻訳される記号列 – プログラミング言語:単一の記号体系 • プログラミングとは、プログラムを書くこと – トートロジーのようではあるが… – 形式的な記号列であれば形態は問われない • (記号列は文字列である必要もない) – コーディングは必要条件ではない
5.
プログラミング言語のパラダイム • プログラミング言語は多数存在する –
C/C++, Java, Ruby, Haskell, PHP, Lisp, asm, Ocaml, … – 数学的にはおよその言語は等価(チューリング完 全) • 言語同士の差とは? – 採用するパラダイム – 記法 – 動作する環境 – 標準的な用途
6.
プログラミング言語のパラダイム • パラダイムって? –
言語の備える性質, 必ずしも背反ではない – 基本的には、何らかの「抽象化」に対応する – 手続き型プログラミング – 関数型プログラミング – 論理型プログラミング – オブジェクト指向プログラミング – etc.
7.
プログラミング言語のパラダイム • 手続き型プログラミング –
C, C++など普及した言語はほとんどが採用 – 逐次的に機械が行う処理を記述する • 関数型プログラミング – Haskell, OCamlなどが採用 – 数学的な記法によるプログラミング – 圏論など抽象数学との直接的対応がある
8.
オブジェクト指向プログラミン
グ • プログラムを構造的に抽象化するアプローチ – cf. 関数型言語:数学的抽象化 – 計算機上の実体(メモリ上のデータ)を概念構造として 解釈 – 概念間の関係性、やり取りの記述によるプログラミング – 日常的な概念操作をプログラミングに持ち込む – クラスベースとプロトタイプベースに分けられる • 今回はクラスベースを扱う
9.
具体例
10.
OOPの利点 • 構造化・モジュール化が進む –
メンテナンス性の向上 – 再利用性の向上 • 構造の理解が容易になる – UMLなどのインターフェイスの存在 • 設計が容易になり、生産性が向上する – ノウハウの蓄積が推進
11.
Design Patterns: Elements
of Reusable Object-Oriented Software デザインパターン
12.
デザインパターン • 「オブジェクト指向における再利用のためのデザインパ ターン」 •
OOPのプラクティスをまとめたもの – OOP設計=プログラム上の概念の構造化 – プログラムに内在するオントロジーの公約数集合 • 絶対のものではない – 亜種、派生も多数存在する – 技術的要請によって新たなパターンが生じる
13.
デザインパターンの実際 • 業務プログラミングでの生産性向上のための活用 • 言語設計において強く意識される
– 糖衣構文の容易など – ex) Iteratorパターン → foreach構文の導入 • プログラムの共通言語としての存在 – ライブラリ設計など – 分野に関わらずデザインパターンが意識されている
14.
パタン・ランゲージとの関係性 • 非OOPコード, 図面
– 還元論的には全部入っている – 専門的な知識があればイメージを起こせる – イメージとは? • プロジェクトの目的 – 住みたい家, 満たすべき条件 = プログラムの仕様書 – これだけではプログラムを作れない
15.
パタン・ランゲージとの関係性 • パタン・ランゲージ –
要求と図面の媒介 – 建築物のセマンティックな分節、形式化 • デザインパターン – 目的動作とプログラムの媒介 – プログラム上の概念のセマンティックな分節、形式化 • 柔軟性+目的と向かい合った設計を実現する
16.
Let’s learn the
Design Patterns! デザインパターンを知ろう
17.
生成に関するパターン • Abstract Factory •
Builder • Factory Method • Prototype • Singleton
18.
構造に関するパターン • Adapter
• Facade • Bridge • Flyweight • Composite • Proxy • Decorator
19.
振る舞いに関するパターン • Chain of
Responsibility • Observer • Command • State • Interpreter • Strategy • Iterator • Template Method • Mediator • Visitor • Memento
Télécharger maintenant