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 のどれかを用いて、例題を作成してみよ。


問題4.3

Design Pattern の一つを取り上げ、Perl/Python/Ruby のどれかを用いて、例題を作成してみよ。


Shinji KONO / Mon Jul 8 19:11:27 2013