AOAD勉強会(第2回)
基本情報
- Day/Time: 2005/07/24 Sun. 10:00 - 12:00
- Place: 912 Training−Room @ OGIS-RI
- Person: 9(▲1yyamano)
勉強会の内容
今日の範囲(Chapter2: The Object-Oriented Way)
- a. 要件定義 pp27-32 まで
- (The Object-Oriented Way 〜 Describing Objects の直前まで)
- b. オブジェクトの定義 pp32-35 まで
- (Describing Objects 〜 Expressions Example の直前まで)
- c. 式評価システム pp35-38 まで
- (Expressions Example〜Object-Oriented Design の直前まで)
- d. 式評価システムのオブジェクト指向設計の例pp38-45 まで
- (Object-Oriented Design〜Accommodating Evolutionの直前まで)
- e. オブジェクト指向による拡張性への対応 pp45-51 まで
- (Accommodating Evolution 〜 第二章の最後まで)
本日選択された項目は、c. とe.でした。
c. 式評価システム
Requirements# | Descriotion |
---|---|
R1 | 式を評価できること(式の結果を決定できること) |
R2 | (解析した)式を表示できること |
R3 | 構文上・意味上、式が正しいかどうか構文チェックできること |
R4 | 操作は全て(R1、R2、R3)ログを撮ること |
あまりに荒い要求なので、d.をかじってみる事にした。(以下に続く)
d.式評価システムのオブジェクト指向設計の例
e. オブジェクト指向による拡張性への対応(Accommodation Evelution)
追加要件の整理(Table2-6)
Requirements# | Descriotion |
---|---|
R12 | 使われている変数が定義されているかどうか定義されている変数が使われているかどうか |
R13 | (ユーザが定義可能な)命名規約に従っているか |
R14 | R3,R12,R13を使用するかどうかを任意に選択できる注:構文チェックは必須だろう |
R15 | R12とR13はログに残す |
□ デザインパターンを適用してもなぜ問題が残るのか
- ここでの議論に登場するパターン
- Vistor
- Observer
- Decorator
Design Pattern | motivation | Good! | Bad! |
---|---|---|---|
Visitor | 構文チェック用に適用(R12,R13)今回新しい追加要求に対して、チャックメソッドを新たに追加しなければならないのかp46 | 新しいチェック機能を追加しやすいチェックのために必要な情報は異なるそれぞれのチェック内容はそれぞれのvistorクラスが知っていれば良いチェックさせる側(acceptor)は、チェック内容の詳細は知らなくてよくなるチェックメソッドを変更せずに新しい機能を実現できる新しいチェックメソッドの追加は避けたいそれぞれのチェック内容はクラスが知っていれば良い 新しいチェックを追加しやすい[拡張可能性] | 評価対象の式が拡張されたら対応しにくい(acceptor)例) *や/とか参考演算子とか |
Observer | ログの呼び出しに適用(R4,R15)適用前はログ出力を意識した呼び出しをしていた(依存関係による強い結合度) | ロガーがいつ、誰から呼び出されるか知らなくて良い?⇒・・・ロガーとAST(抽象構文木)クラスの結合度を減らす(p.49)オペレーションの前後のログの呼び出しにobserverのメソッド呼び出しを行うことで、ログ呼び出しを隠蔽した | observerの呼び出しが局所化されていない(相変わらずを呼び出すコードが散らばっている)ASTメソッドがobserverを知っている必要がある |
Decorator | ログに適用()Observerの代替案として | 結合度を下げる点ではObserverと同様(p50, l4)ログ通知に関するコードをメソッド呼び出しで各必要がなくなった(observerの呼び出しが不要になった) | Observerパターンより悪化オブジェクト精神分裂症(多重人格のオブジェクト(several roles)のため、オブジェクトは自身のパーソナリティを自覚していなければならない(multiple personalities)???) |
オブジェクト精神分裂症(Object schizophrenia)についての異なる意見
- (解釈1)一つのインスタンス(decorator)が、
- Expressionのチェックと
- ログの仕事もしないといけないこと(MM氏)
- (解釈2)使う側がDecoratorが存在するのかを知っている必要があること
- FactoryMethodで解決できるはず(I氏)
DI コンテナの AOP 機能については、Decorator、FactoryMethod で実現されているようだ(伊藤さん)
Observerは使ってないかも・・・。
その他
Table2-2(p31)
Term | Definition |
---|---|
View | 対象のことを行っている? |
Perspective | 対象がどう見えるか?視野、視座、視点と関係があるのか? |
Role | 役割 |
視野、視座、視点について
-
- 視野: スコープ
- 視座: どこから(誰が)見ているか, 例) Actor(利用者)
- 視点: 対象。
- 視野と視点は同じに感じる(I氏)
- 雑誌の記事に掲載されていた(Akapon)
次回の予定
- #3回
- 8/7 Sun. 10:00~12:00 , 進行役:Akapon
- #4回
- 8/28 Sun. 10:00~12:00
リンク
- GLAD!!さんのメモ