SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

よろずプログラマーのためのPython導入ガイド

Java meets Python - 第7回 ハリウッドの原則

よろずプログラマーのためのPython導入ガイド (9)

  • X ポスト
  • このエントリーをはてなブックマークに追加

部品を合成する

 複雑なシステムを構築するときに、既存の部品の再利用は重要です。

部品の合成
部品の合成

 他のインスタンスを結合する作業は、既存の部品を組み合わせてシステムを構築する点から、部品の「合成」と見なせます。単純なものから複雑なものを構築する様子は、インスタンス間の「委譲」によって説明できます。組立関係で結ばれるインスタンスは「全体/部分」構造を実現します。

事例: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)とが「メッセージを送受信」することで実現できます。

《Tea Break》補助輪付き vs. ブレーキのない自転車
 補助輪付きの自転車でバランス感覚を養っていくと、やがて補助輪なしで走行できます。むしろ、上達するにつれて、補助輪が自由な走行を邪魔します。競輪用の自転車には、ブレーキが付いていません。同様に、プログラミング言語も、アマ/プログラマーの仕様の棲み分けが必要かもしれません。一般道では必要なブレーキも、競技場では邪魔な存在です。Java/C# の言語仕様には、学習用には適切でも、アジャイル開発下では失速を余儀なくされるものも少なくありません。ステップ単位の開発コストを、他の言語(Ruby/Python 等)と比較してみるのも一興です。

次のページ
部品を抽象化する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
よろずプログラマーのためのPython導入ガイド連載記事一覧

もっと読む

この記事の著者

小泉ひよ子とタマゴ倶楽部(コイズミヒヨコトタマゴクラブ)

http://tamago-club.cocolog-nifty.com/「楽しくなければ仕事じゃない」が私たちのモットー。99%の苦悩の連続も、1%の成功に報われます。だからこそ、この仕事が楽しくて仕方がないのです。楽をするための努力なら惜しみません。何もせず楽をしているのと、努力をしたから楽ができるのと...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

伊藤うさぎ(イトウ ウサギ)

ペンネームの「由来は」と言うと。苗字の方は、セミナー研修で同じチームになった、3人の合体ユニット名 [I:石塚, T:田川, O:尾沢] から来ています。名前の方は、同じ干支(卯:1987 年生)に因んだものです。既に2人は卒業して、残る1人がその名跡を継承しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2253 2008/06/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング