OOP & Design Patterns  Iii_SGMI #5 “Pattern Language”          Ryohei SUZUKI
OOP – Object Oriented Programmingオブジェクト指向プログラミングとは?
プログラムとは?• 計算機が解釈、実行することの出来るデータ• 計算機のモデル – ラムダ計算, 帰納的関数, チューリングマシン, etc…• 一般的には – 実行ファイルはバイナリデータ(機械語) – ソースコードはテキストデータ• プログ...
プログラミングとは?• プログラム – 機械語に翻訳される記号列 – プログラミング言語:単一の記号体系• プログラミングとは、プログラムを書くこと – トートロジーのようではあるが… – 形式的な記号列であれば形態は問われない   • (記号...
プログラミング言語のパラダイム• プログラミング言語は多数存在する – C/C++, Java, Ruby, Haskell, PHP, Lisp, asm, Ocaml, … – 数学的にはおよその言語は等価(チューリング完   全)• 言語...
プログラミング言語のパラダイム• パラダイムって? – 言語の備える性質, 必ずしも背反ではない – 基本的には、何らかの「抽象化」に対応する – 手続き型プログラミング – 関数型プログラミング – 論理型プログラミング – オブジェクト指向...
プログラミング言語のパラダイム• 手続き型プログラミング – C, C++など普及した言語はほとんどが採用 – 逐次的に機械が行う処理を記述する• 関数型プログラミング – Haskell, OCamlなどが採用 – 数学的な記法によるプログラ...
オブジェクト指向プログラミン      グ• プログラムを構造的に抽象化するアプローチ – cf. 関数型言語:数学的抽象化 – 計算機上の実体(メモリ上のデータ)を概念構造として  解釈 – 概念間の関係性、やり取りの記述によるプログラミング...
具体例
OOPの利点• 構造化・モジュール化が進む – メンテナンス性の向上 – 再利用性の向上• 構造の理解が容易になる – UMLなどのインターフェイスの存在• 設計が容易になり、生産性が向上する – ノウハウの蓄積が推進
Design Patterns: Elements of Reusable Object-Oriented Softwareデザインパターン
デザインパターン• 「オブジェクト指向における再利用のためのデザインパ ターン」• OOPのプラクティスをまとめたもの – OOP設計=プログラム上の概念の構造化 – プログラムに内在するオントロジーの公約数集合• 絶対のものではない – 亜種...
デザインパターンの実際• 業務プログラミングでの生産性向上のための活用• 言語設計において強く意識される – 糖衣構文の容易など – ex) Iteratorパターン → foreach構文の導入• プログラムの共通言語としての存在 – ライブ...
パタン・ランゲージとの関係性• 非OOPコード, 図面 – 還元論的には全部入っている – 専門的な知識があればイメージを起こせる – イメージとは?• プロジェクトの目的 – 住みたい家, 満たすべき条件 = プログラムの仕様書 – これだけ...
パタン・ランゲージとの関係性• パタン・ランゲージ – 要求と図面の媒介 – 建築物のセマンティックな分節、形式化• デザインパターン – 目的動作とプログラムの媒介 – プログラム上の概念のセマンティックな分節、形式化• 柔軟性+目的と向かい...
Let’s learn the Design Patterns!デザインパターンを知ろう
生成に関するパターン• Abstract Factory• Builder• Factory Method• Prototype• Singleton
構造に関するパターン• Adapter     • Facade• Bridge      • Flyweight• Composite   • Proxy• Decorator
振る舞いに関するパターン• Chain of Responsibility • Observer• Command                • State• Interpreter            • Strategy• Itera...
Upcoming SlideShare
Loading in …5
×

iii_SGMI #5 "OOP & Design Patterns"

590 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
590
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

iii_SGMI #5 "OOP & Design Patterns"

  1. 1. OOP & Design Patterns Iii_SGMI #5 “Pattern Language” Ryohei SUZUKI
  2. 2. OOP – Object Oriented Programmingオブジェクト指向プログラミングとは?
  3. 3. プログラムとは?• 計算機が解釈、実行することの出来るデータ• 計算機のモデル – ラムダ計算, 帰納的関数, チューリングマシン, etc…• 一般的には – 実行ファイルはバイナリデータ(機械語) – ソースコードはテキストデータ• プログラムは形式的な記述
  4. 4. プログラミングとは?• プログラム – 機械語に翻訳される記号列 – プログラミング言語:単一の記号体系• プログラミングとは、プログラムを書くこと – トートロジーのようではあるが… – 形式的な記号列であれば形態は問われない • (記号列は文字列である必要もない) – コーディングは必要条件ではない
  5. 5. プログラミング言語のパラダイム• プログラミング言語は多数存在する – C/C++, Java, Ruby, Haskell, PHP, Lisp, asm, Ocaml, … – 数学的にはおよその言語は等価(チューリング完 全)• 言語同士の差とは? – 採用するパラダイム – 記法 – 動作する環境 – 標準的な用途
  6. 6. プログラミング言語のパラダイム• パラダイムって? – 言語の備える性質, 必ずしも背反ではない – 基本的には、何らかの「抽象化」に対応する – 手続き型プログラミング – 関数型プログラミング – 論理型プログラミング – オブジェクト指向プログラミング – etc.
  7. 7. プログラミング言語のパラダイム• 手続き型プログラミング – C, C++など普及した言語はほとんどが採用 – 逐次的に機械が行う処理を記述する• 関数型プログラミング – Haskell, OCamlなどが採用 – 数学的な記法によるプログラミング – 圏論など抽象数学との直接的対応がある
  8. 8. オブジェクト指向プログラミン グ• プログラムを構造的に抽象化するアプローチ – cf. 関数型言語:数学的抽象化 – 計算機上の実体(メモリ上のデータ)を概念構造として 解釈 – 概念間の関係性、やり取りの記述によるプログラミング – 日常的な概念操作をプログラミングに持ち込む – クラスベースとプロトタイプベースに分けられる • 今回はクラスベースを扱う
  9. 9. 具体例
  10. 10. OOPの利点• 構造化・モジュール化が進む – メンテナンス性の向上 – 再利用性の向上• 構造の理解が容易になる – UMLなどのインターフェイスの存在• 設計が容易になり、生産性が向上する – ノウハウの蓄積が推進
  11. 11. Design Patterns: Elements of Reusable Object-Oriented Softwareデザインパターン
  12. 12. デザインパターン• 「オブジェクト指向における再利用のためのデザインパ ターン」• OOPのプラクティスをまとめたもの – OOP設計=プログラム上の概念の構造化 – プログラムに内在するオントロジーの公約数集合• 絶対のものではない – 亜種、派生も多数存在する – 技術的要請によって新たなパターンが生じる
  13. 13. デザインパターンの実際• 業務プログラミングでの生産性向上のための活用• 言語設計において強く意識される – 糖衣構文の容易など – ex) Iteratorパターン → foreach構文の導入• プログラムの共通言語としての存在 – ライブラリ設計など – 分野に関わらずデザインパターンが意識されている
  14. 14. パタン・ランゲージとの関係性• 非OOPコード, 図面 – 還元論的には全部入っている – 専門的な知識があればイメージを起こせる – イメージとは?• プロジェクトの目的 – 住みたい家, 満たすべき条件 = プログラムの仕様書 – これだけではプログラムを作れない
  15. 15. パタン・ランゲージとの関係性• パタン・ランゲージ – 要求と図面の媒介 – 建築物のセマンティックな分節、形式化• デザインパターン – 目的動作とプログラムの媒介 – プログラム上の概念のセマンティックな分節、形式化• 柔軟性+目的と向かい合った設計を実現する
  16. 16. Let’s learn the Design Patterns!デザインパターンを知ろう
  17. 17. 生成に関するパターン• Abstract Factory• Builder• Factory Method• Prototype• Singleton
  18. 18. 構造に関するパターン• Adapter • Facade• Bridge • Flyweight• Composite • Proxy• Decorator
  19. 19. 振る舞いに関するパターン• Chain of Responsibility • Observer• Command • State• Interpreter • Strategy• Iterator • Template Method• Mediator • Visitor• Memento

×