倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

SimulationComponent#setDataManager() メソッド

前回に定義した SimulaitionComponent#getChildComponents() メソッドを用いて、IterativeSimulator に DataManager オブジェクトをセットするだけで、それが所持する SimulationComponent オブジェクトにも DataManager オブジェクトがセットされるような実装を施しましょう。

setDataManager() メソッドは DataAccessor に定義したメソッドでしたが、これまた「インタータイプ宣言」を用いて SimulationComponent に setDataManager() メソッドを付加しましょう:

public aspect DataAccessorAspect {

    public void SimulationComponent.setDataManager(DataManager data){
        for(SimulationComponent child: getChildComponents())
            child.setDataManager(data);
    }
}

前々回にインタータイプ宣言を用いて定義した setDataManager() メソッドは、SimulationComponent のサブインターフェースに定義されているので上記のアスペクトによる実装は上書きされます(たぶん)。

この方法だと DataAccessor を実装していないクラスにも setDataManager() メソッドが付加されるので、少々実装が分かり難くなってしまうかもしれません。 したがって、あまりこの方法は多用しすぎない方が良いかと思います。

算数・数学が得意になる本 (講談社現代新書)

算数・数学が得意になる本 (講談社現代新書)