Design Pattern と ruby
Menu Menu
Design Pattern
ソフトウェア・パターン
オブジェクトは、このようなオブジェクトの組み合わせ(Object Composition) で作られていく。これを、一つの知識体系としてまとめたものの一つが、デザイン・パターンあるいは、ソフトウェア・パターンと呼ばれるものである。オブジェクト指向プログラミングでは、GoF パターンと呼ばれるものが有名である。(Gang of Four)
デザイン・パターン (ソフトウェア・パターン)
作成するプログラムが複雑になって来ると、単一のデータ構造とアルゴリズムを使用する方法では対処できない。データ構造は、必然的に、それを処理するアルゴリズム(メソッド)と対応し、オブジェクトを構成する。オブジェクトの構成法には「こつ」があり、それを自分で習得すると供に、プログラムを作っているグループ、あるいは、弟子や学生に伝えていくこと(共有していくこと、知識として集約していくこと、発展させていくこと) が重要である。それは、従来、「ソースを読むこと」によってでしか学習することは出来なかった。もちろん、それは、今でも重要であるが、これらを記述する方法の一つとして「ソフトウェア・パターン」がある。
ソフトウェア・パターンは、建築技術をルールの集合として記述する手法を提案してきたアレキサンダーと、GoF (Gang of Four)として知られる「デザイン・パターン」を設計した E. Gamma, R. Helm, R. Johnson, J, Vlissides によって90年代に確立した手法である。UML記法と組み合わせることにより、ソフトウェア業界での共通言語となっているといえる。
GoF本の関する注意
読みづらいです。自分で使ってみるのがかかせない。使ってみるしかない。
Factory Pattern
同じ機能を持つが、異なる表現を生成するオブジェクトがあった場合に、アプリケーションが直接、その「異なる表現の対応するオブジェクト」を生成するようにすると、その表現を変えることが難しくなってしまう。そこで、その機能を指定するインスタンスを一つ作り、そのインスタンスに、インスタンスの生成を依頼する。
State Pattern
状態遷移を、状態に対応するオブジェクトを作成することにより実現する。
Ruby
新しい言語を勉強する時には、まず、Documentを手元に置く。Tutorial をひと通りやってくる。Tutorial Tutorialを固めたもの 元は、WWW server 経由で読むようになっているらしい。
Ruby 1.9 を使う
EasyPackageにはないので、自分で入れる必要がある。/usr/local/bin に入るので注意。Ruby 1.8 との互換性の問題があるので、重ならないようにする。(またですか...)
Ruby は、必ずFile経由で実行する。必要なら irb を使う。
関数定義
fib.rb問題4.1
Ruby版 Logic Node の問題 Ruby版 Logic Node信号器
点滅する信号器をState Patternを使わずに書いてみる。1 点滅する信号器をState Patternを使って書いてみる。
2 点滅する信号器のStateをFactory Patternを使って書いてみる。
3 3は、Factory Pattern になってない。
問題4.2
GUI version に移行するには、どうすれば良いか? Abstract Factory を用いて、Text version と GUI version を両立させてみよう。Perl/Python/Ruby のどれかを用いて、例題を作成してみよ。