ダウンロード サンプルファイル (45.1 KB)
-
- Page 3
部品を合成する
複雑なシステムを構築するときに、既存の部品の再利用は重要です。

他のインスタンスを結合する作業は、既存の部品を組み合わせてシステムを構築する点から、部品の「合成」と見なせます。単純なものから複雑なものを構築する様子は、インスタンス間の「委譲」によって説明できます。組立関係で結ばれるインスタンスは「全体/部分」構造を実現します。
事例:GUI コンポーネント
新たなクラスを定義するときには、インスタンス属性を定義します。属性には基本データ型の値のほかに、任意のクラスのインスタンスを指定できます。

Swingではフレーム内に任意の部品を配置して、複雑なアプリケーションを作成します。新規のLifeGameFrameを構築するときには、既存のJButtonを再利用します。また、既存のJPanelを拡張した、新規のLifeGamePanelを利用します。このように新旧の部品を合成して、新規の部品LifeGameFrameを構築します。
#------ after --------------------------------
class LifeGameFrame(DefaultFrame):
def initialize(self):
self.panel = LifeGamePanel()
self.button = JButton("Next Generation",
actionPerformed=self.actionPerformed)
def actionPerformed(self, e):
self.panel.nextGeneration()
メソッドactionPerformedは、パネルLifeGamePanelのインスタンスpanelに対して、メソッドnextGenerationの呼び出しを行います。すると、ボタンbuttonをクリックしたときに、パネルに生命体を表示します。つまり、メソッドの利用者が要求するサービスを提供するために、役割の一部を他のインスタンスに委譲します。これは、サービスを要求する側(送信者 sender)と、サービスを提供する側(受信者 receiver)とが「メッセージを送受信」することで実現できます。
この記事は参考になりましたか?
- よろずプログラマーのためのPython導入ガイド連載記事一覧
-
- Java meets Python - 第7回 ハリウッドの原則
- Java meets Python - 第6回 配列と別れる50の方法(3) ライフゲーム
- Java meets Python - 第5回 二分木と辞書
- この記事の著者
-
小泉ひよ子とタマゴ倶楽部(コイズミヒヨコトタマゴクラブ)
http://tamago-club.cocolog-nifty.com/「楽しくなければ仕事じゃない」が私たちのモットー。99%の苦悩の連続も、1%の成功に報われます。だからこそ、この仕事が楽しくて仕方がないのです。楽をするための努力なら惜しみません。何もせず楽をしているのと、努力をしたから楽ができるのと...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
伊藤うさぎ(イトウ ウサギ)
ペンネームの「由来は」と言うと。苗字の方は、セミナー研修で同じチームになった、3人の合体ユニット名 [I:石塚, T:田川, O:尾沢] から来ています。名前の方は、同じ干支(卯:1987 年生)に因んだものです。既に2人は卒業して、残る1人がその名跡を継承しています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
