ObjectSquare [1999 年 2 月号]

[Happy Squeaking!!]


4.Squeak 演習:抽象クラスのある継承の作成

4.3 具象クラス Parrot のブラウズ


Animalや、Birdはどちらも抽象クラスであり、動物園アプリケーションでは実際にそのインスタンスが作られて使われることはありません。しかしこうすることで概念の整理ができアプリケーションの構造がわかりやすくなります。また、これらのクラスの中で属性や操作が定義、実装されているからこそ、Parrotといった具象クラスで、大幅にコードの量を減らすことができます。

Parrotでは、新たにvocabraryという属性が付け加わりました。
操作としては、initialize、talkのオーバーライドを行っています。

initialize
	super initialize.
	knowledge := 30.
	habitat := 'bird cage'.
	vocablary := ''
talk
	vocablary = ''
		ifTrue: [super talk]
		ifFalse: [self display: vocablary]

initializeにしてもtalkにしてもsuperを使い、有功なコードの再利用ができています。

抽象クラスにおいて、うまく属性、操作を定義し、実装しておくことができたのであれば、それを継承した具象クラスは、自らの性質として付け加わった最小限の部分だけを記述していけばいいということが確認できるでしょう。

それでは、実際にオウムのオタケさんを生成し、しゃべらせてみます。

| otake |
otake := Parrot new initialize.
otake name: 'otake'.
otake talk.
otake vocablary: 'Hello...'.
otake talk.
otake fly

トランスクリプトの出力結果は以下のようになります。

Parrot:otake"...cannot talk..."
Parrot:otake"Hello..."
Parrot:otake"*** FLYING ***"

© 1999-2001 OGIS-RI Co., Ltd.

Prev.

Index

Next