devlog [naru design]

プログラミングやテクニカルな内容の覚え書き。

Flash:継承(OOP)

2012/07/27

category: Flash | tag: , | no comments

いまさらオブジェクト指向プログラミング(OOP)シリーズ、継承のはなし。

様々な図形を描画するクラスを考える。ぱっと思いつく実現方法は2つ。

(a) どんな図形でも描画できるShapeクラスをつくる。
(b) 図形を扱うShapeクラス(スーパークラス)をつくり、図形の種類毎にShapeクラスを継承したクラス(サブクラス)をつくる。

描画する図形が増えた場合には、

(a)の場合は、Shapeクラスを修正する必要があります。テストもデバッグも終了し、正常に動作していたクラスに手を加えたくないですね。
(b)の場合は、新たな図形のためにShapeクラスを継承したサブクラスを作成します。今まで正常に動作していたShapeクラスや既存の他の図形を描画するサブクラスには、手を加える必要がありません。

デバッグやテスト、既存コードの再利用を考えると、継承を使用した(b)の方が良さそうです。

図形の種類ごとにShapeクラスを継承したサブクラスを作成します。サブクラスは、図形を描画するためのメソッド(Draw)をオーバーライドして、各々の図形が描画されるようにします。

新たに、丸を描画する必要が発生した際には、以下のようなCircleクラスを作成します。既存のクラスに手を加える必要はありません。

メインのタイムライン(1フレーム目)に以下のスクリプトを書くことでクラスの動作を見ることができます。

出力パネルには以下のように表示されます。

draw box
draw square
draw circle
———-
draw circle
draw square
draw box

Pocket

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Trackback URL: