オブジェクト指向って自然な文法だな 2 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0657デフォルトの名無しさん
2017/03/30(木) 09:01:46.72ID:Y2Gx9wEv"ドアにドアストッパーを設置(traitを使用)"
bドア := aドア as: ドア newSubclass.
bドア class rename: #ストッパー付きドア.
bドア addInstanceVarNamed: #ストッパー withValue: #解除.
ストッパー付きドア compile: 'ストッパー ^ストッパー'.
ストッパー付きドア compile: 'ストッパー: 固定か解除 ストッパー := 固定か解除'.
"bドア ストッパー: #解除 => compile error: Private messages may only be sent to self"
Trait named: #Tドアストッパー uses: #() category: 'UserObjects'.
Tドアストッパー compile: 'ストッパーを外す self ストッパー: #解除'.
Tドアストッパー compile: 'ストッパーをかける self ストッパー: #固定'.
Tドアストッパー compile: 'ストッパーかかっている? ^self ストッパー == #固定'.
Tドアストッパー compile: '押す self ストッパーを外す. super 押す'.
Tドアストッパー compile: '引く self ストッパーかかっている? ifFalse: [super 引く]'.
ストッパー付きドア uses: Tドアストッパー.
bドア ノブ 回す. bドア 押す; 開いている?. "=> true "
bドア ストッパーをかける; 引く; 閉じている?. "=> false "
bドア ストッパーを外す; 引く; 閉じている?. "=> true "
bドア ノブ 回す. bドア 押す; 開いている?. "=> true "
bドア ストッパーをかける; 引く; 閉じている?. "=> false "
bドア 押す; 引く; 閉じている?. "=> true "
■ このスレッドは過去ログ倉庫に格納されています