p Aspect J Graphics draw Logger log aspect Slides: 20 Download presentation アスペクト指向の利用 p Aspect. J: 代表的なアスペクト指向言語のひとつ Graphics クラスの draw メソッド呼び出し前に Logger. log メソッドを実行 アスペクト aspect Log. Aspect { ポイントカット pointcut logged() : call(void Graphics. draw()); アドバイス before() : logged() { //ログ出力 Logger. log(“log"); } } class Canvas { Image img; : void paint(Graphics g) { : g. draw(img); : } } class Graphics { : void draw(Image img) { : }} 4 within、cflow ポイントカット p 条件的な拡張とみなす after(): call(void Point. set. X(int)) && within(Line) { Display. update(); } 条件付き拡張 12 具体例1: Observer アスペクト p Setter メソッドが呼び出されるときにアドバイスが実 Display 行される Shape * 1 … … Lineクラスのset. P 1メソッド内 でset. Xメソッドが呼ばれると きにはアドバイスは実行しな い。 Line Point set. P 1(Point p 1) set. P 2(Point P 2) … set. X(int x) set. Y(int y) … update() … pointcut change() : call(void Shape+. set*(. . )); after(): change() && !cflowbelow(change()) { Display. update(); } Rectangle … … … 15 具体例2: Loggingアスペクト p Canvas クラス内で Graphics クラスの draw メソッ ドを呼び出すときにログを出力する class Canvas { Image image; : void paint(Graphics g) { : g. draw(image); : } aspect Logging. Aspect { before(): call(* Graphics. draw(. . )) && within(Canvas) { System. out. println(“log”); } } 17 Aspect. Scope vs. AJDT Aspect. Scope AJDTエディタ AJDTは呼び出し側のどの箇 所でログ出力が行われるかを 表示する Aspect. Scopeは呼ばれる側が どう拡張されるかを表示する before() : call(void Graphics. draw(Image)) && within(Canvas) { System. out. println(…); } 18 Fungsi persamaan dan pertidaksamaan logaritmaAkar pangkat 2 dari 674Log 3=0 477 dan log 2=0 301 nilai log 18=699 artinya3 log 81 + 3 log 243 - 3 log 27Nilai dari 5 log 10 + 5 log 50 - 5 log 4 adalahJika log 3 = 0 477 dan log 5 = 0 699 nilai dari log 45 =Diketahui log 3 = 0 477Texte expressif structureData loggers vfcN0uk eme loggerLoggerOpc data logger freeProbe echoPerl loggerArcsight logger and bsm integrationData logger advantagesSave a logger eat an owlArduino obd2 data loggerKey stroke loggerSutron data logger