リファクタリング

for VisualWorks 7.8 / 7.7 / 7.6 with Jun793

色のGUIの抽象化

「赤・緑・青(加法混色)」と「シアン・マゼンタ・イエロー(減法混色)」そして「色相・彩度・明度」を用いたアプリケーション(色のGUI)を抽象化してみましょう。リファクタリング(オブジェクト指向デザインとオブジェクト指向プログラミングの真髄)への導きになります。

ColorRGB1
ColorCMY1
ColorHSB1

どうぞ次のプログラムを実行してください。作成のための準備が整います。

| aCollection |
(aCollection := OrderedCollection new)
	add: #url: -> 'http://www.cc.kyoto-su.ac.jp/~atsushi/Programs/VisualWorks/ColorAbstract/ColorAbstract.st';
	add: #comment: -> 'Copyright 2008-2011 KSU (Kyoto Sangyo University). All Rights Reserved.';
	add: #bundle: -> #KSU;
	add: #package: -> 'KSU-Template';
	add: #nameSpace: -> #KSU;
	add: #category: -> 'KSU-Template';
	add: #class: -> #{KSU.ColorAbstract};
	add: #protocol: -> #'interface specs';
	add: #selector: -> #windowSpec;
	add: #execute: -> [];
	yourself.
JunSystem
	perform: ((aCollection collect: [:each | each key]) inject: String new
			into: [:selector :key | selector , key]) asSymbol
	withArguments: (aCollection collect: [:each | each value]) asArray
ColorAbstract1

リファクタリングを施すと…

以下のオブジェクト指向デザイン(UMLのクラス図)に基づいて、改善のためのオブジェクト指向プログラミング(抽象と具象の階梯の上り下り)を行い、リファクタリングを施してみると…。

ColorAbstract2

すべてこしらえると、約1,000行になり、大きく構造変化をしているにもかかわらず、いままでの機能がそのまま維持されます。回帰テストを施せば、以前と同様な結果(動作状況)が得られます。

ColorRGB3
ColorCMY3
ColorHSB3

約1,000行のプログラミング(このドックレット出力を見ながら)、おきばりやしとくれやす!

for VisualWorks 7.8 / 7.7 / 7.6 with Jun793


Updated: 2015/11/08 (Created: 2008/11/15) KSU AokiHanko