Tải bản đầy đủ (.ppt) (47 trang)

Tìm hiểu kỹ thuật lập trình hướng khía cạnh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 47 trang )




Aspect-Oriented Programming



     !" #$%& '()" *+%& &+(
"," %- '( '. "-/ -0 1234 5(6% 1.
"-7%&#(8%&9():

     ;-<%& &(=( >?@ -AB *,%&
%-C%& %- '( 1(8% >B%  *@% %-(D
*E(FG%&:


"-$3-H3*+%&&+(%-C%& %-'(1(8%
>B%*@%%-(D123:

"-$3-H3;H$-0-()%"-%&"/B'%*D
*B%%-B'.$5I;-E(-B?B 3J"K5LM"-1.1,
N 5O1.1,"!*(>B%-(D123*E(FG%&:

      ," B 3J" -) -E%& "+ -0 -B? *P(4 -85
-$Q"+B17"9(8%LM"-'."+-0,( RLS%&:

-T*FG","-#(8%&%8%'%*D*B%J%L6
;(05 $,-U%:


AOP gm ba bưc pht trin :



-V%W"-","?8"X*0,"*M%-'%*D"-%&
'.'%*D*B%%-B:

YV?LZ%&-0-()%[%&'%*D#(8%&9():

P%&-G3","-0-()%:



Đc t ngôn ng AOP: gm 2 thnh phn

-0-()%'%*D:

\Q"=>?!"*B%;@:
Biên d!ch AOP: Tr#nh biên d!ch AOP th$c hi%n theo
tr#nh t$ hai bưc sau:

@-G3"," %-'(#(8%&1]:

-?0%*P(-<%&(%;@>= B%&LK%&5^-Z"-(:
_`
-=%a%& RLS%&#$%&9=$5bc%&LS%&1.#
12%:d*V?"+5I E","c%&LS%&5.*FG" RLS%&"-$
'()"9=$5be

-Z"-()%*(D;-(0%#?"b35I","-*I"1b3'2(1$&("
c%&LS%&:-B?'f3-=("+",""-J";#g#.%&%-F"-J";""J 
 J##$%&5h( 5%-K?"=549K%"+-0-$.% %-*FG"
'%*D%.?-<%&>B","B 3J"'."-$3-H3",""-?8%&(B

3-,#(0%b3#%&'.$1$&("L$B%-%&-()3:

-Z"-()%",""-W%- ,"-9=$5bc%&LS%&%-F"5% 
1b3 #f%- &i( "," -F '()% jk *I%& 'W LS %-F
JJ"JkJ#?:l"c;-(%.$-F'()%*+*FG"&i(49K%"+
-0 RLS%&B 3J"*0*FB'.$5I%&$K(1)'.&-(5I","-
"-W%-,"*MB*(05-()%","1T(&i(%&?-(05:
mnLo%&&(=(>?@%-C%& %-'(1(8%
>B%*@%%-(D*E(FG%&
BH5I9.($,%"S-0eX%V?LZ%&
5I "-FU%& #f%- 'p -f%- *U% &(=%4 ?8 "X
"/B9.($,%e

,"-f%--i""U9=%e*(054*$K%-q%&4-f%-
"-C%-b4-f%-#r%s

(0%-M","-f%-t","'M#W;-,"%-B#$%&
;-%&'p:

-=("b3%-b1K(-f%-K('M#W52(5h(;-(
L("-?0%4"$&(^%-f%-
mnLo%&&(=(>?@%-C%& %-'(1(8%
>B%*@%%-(D*E(FG%&
mnLo%&&(=(>?@%-C%& %-'(1(8%
>B%*@%%-(D*E(FG%&
 jRLS%&B p5<-f%--+B?8"X %-","*E(
FG%&%-F Be

   23 Shapee 1. 5I 123 Abstract "-cB 3-FU%& -c"
moveBy (int, int) – L("-?0%-f%-:


23Displaye-(0%-M-f%-=%-:

23Pointe5<=5I*(05-f%--i":-cB-B(-I"
W%-1.-B(iB*I4?'.*FG";@-[B[123Shape:

23(%Je5<=*$K%-q%&4"-cB-B(-I"W%-1.-B(
*(05 57 "/B*$B% -q%& '. "u%& *FG" ;@ -[B [ 123
j-B3J:
mnLo%&&(=(>?@%-C%& %-'(1(8%
>B%*@%%-(D*E(FG%&
*(05"/B

<v*%-+B%-C%&'%*D*B%J%%-B:

,( RLS%&5^%&w%E-U%:

n6L.%&3-,#(0%-)-E%&:

(=5-T(&(B%-("<%&-)-E%&:

(=5&(, %-"/B =%3-x5:
-FG"*(05"/B

    -Z" #B ;-<%& &(=( >?@ "," '% *D
52(4 ;-<%& &(=( >?@ *FG" '% *D 'y% "-FB
*FG"&(=(>?@:

;-<%&1."c",%-"-$","-(@;@"x
-=:


3-,'zW%-*+%&&+(:
$%"J#%

#$%&4[{ 3J"|"-W%-1.'%*D
}$%"J#%~ %&FT( 1b3 #f%- >B% V5 '. %+
 -()% #$%& # %-(D "1B  "u%& %-F
%-(D5J-$L;-,"%-B:
$%"J#%
 B-FT%&&Q3-B(1$K({"$%"J#%|e"$#J"$%"J#% '."#$ v
"(%&"$%"J#% e

$#J"$%"J#%e1.#J>(#J5J%"-W%-"/B"-FU%&#f%-4'W
LS%-F31$BL•(1J€•$1LJ#4*i"LB%- ,"- J#4s

#$ v"(%&"$%"J##% e1.%-C%&R1O3-S"X%*FG"
-Z" -()% ;-( {"$#J "$%"J#%| *FG" &i(: #$ v"$%&
"$%"J#% -FT%&=?#B%-(D%U(#$%&"-FU%&#f%-4%+
"+-0=?#B#$%&%-(D1B?J#"/Bc%&LS%&4%-(D"1B 4
%-(D5J-$L•"-q%&-K%%-FW%-$,%-T(&(B%"-K?","
5*i"&-(LBB9B J4&-(1$&1K(5h(1X%"b3%-b-<%&
(% J#4s
$%"J#%

  3J"v#(J%JL #$&#B55(%& "r% *FG" &i( 1.
 3J"v#(J%JL j$•‚B#J nJ'J1$35J% jn 1. 5I
%&?8%!"-(@;@&(73,"-#T(","?8"X-B?","'%*D
*FG">B%V5 J3B#B($%$•"$%"J#% #$%&"-FU%&#f%-
 %-"," %-3-X%*I"1b3'.[*+a%&W%-?0%"-?0%
"-$ "-FU%& #f%-: {jJ3B#B($% $• "$%"J#% | 1. 5I #$%&

%-C%&;ƒ-b*FG">B%V5%-#$%&%&.%-3-X%5D5
$%"J#%

d'B(#r"/B%&FT(-(@;@3-X%5D54"-7%&B
%8% *FB #B "," ","- 1.5*U%&(=% %-: \0 -AB5^%
?8"X"/B"-FU%&#f%-4%&FT(B pK$#B %-3-X%
"-W%- "/B "-FU%& #f%- &w5 ","
"1B €"$53$%J%€5J-$L• "," "-c" %a%& 9P %& %-F
1$&(%&4W%-$,%3J#•$#5B%"J4::"u%& p*FG"J5H
*0K$#B:mfL$",""-c%&%a%&9P%&%.?;-<%&3-=(
1.?8"X"-W%-"/B-)-E%&%8%%&FT(B p"+?8"X
9b!"-7%&-J$O5E%:mb?1.5-@%.$*0"+-0
K$#B"-FU%&#f%-"+-01(%--$K*FG"%-F-@V
#=1T(1.{jJ3B#BJ$•"$%"J#% |
$%"J#%

d'B(#r"/B%&FT(-(@;@3-X%5D54"-7%&B
%8% *FB #B "," ","- 1.5*U%&(=% %-: \0 -AB5^%
?8"X"/B"-FU%&#f%-4%&FT(B pK$#B %-3-X%
"-W%- "/B "-FU%& #f%- &w5 ","
"1B €"$53$%J%€5J-$L• "," "-c" %a%& 9P %& %-F
1$&(%&4W%-$,%3J#•$#5B%"J4::"u%& p*FG"J5H
*0K$#B:mfL$",""-c%&%a%&9P%&%.?;-<%&3-=(
1.?8"X"-W%-"/B-)-E%&%8%%&FT(B p"+?8"X
9b!"-7%&-J$O5E%:mb?1.5-@%.$*0"+-0
K$#B"-FU%&#f%-"+-01(%--$K*FG"%-F-@V
#=1T(1.{jJ3B#BJ$•"$%"J#% |
„„…

†$(%3$(%e"+-01.9;‡*(05%.$"+-0,"*M%-*FG";-(-Z"-()%"-FU%&#f%-:+

-01.1T(&i(*@%5I3-FU%&-c"-$Q"5I1)%-&,%"-$5I9(@%"/B*E(FG%&:

-V%1$K(e

join point tại các phương thức

join point tại hàm dựng (contructor)

join point tại điểm truy cập các thuộc tính

join point tại điểm điều khiển ngoại lệ: được biểu diễn trong khối điều khiển ngoại lệ.
„„…
mWLSe
public class Account
{

void credit(float amount)
{
balance + = amount;

}
}
„„…

$(%"e1.5I"#7""-FU%&#f%-5.%+"-i%
","ˆ$(%3$(%'.%&C"=%-K(","ˆ$(%3$(%*+:mWLS
5I3$(%""+-0"-i%5Iˆ$(%3$(%1.5I1T(&i(
*@%5I3-FU%&-c"'.1?-<%&(%%&C"=%-"/B
3-FU%&-c"*+%-F*E(FG%&"-cB3-FU%&-c"4","
*E( E"/B3-FU%&-c"*+


mWLSe
execution(void Account.creadit(float))
„„…

L'("Je.5^*FG"-Z"-()%K(5Iˆ$(%3$(%5.
*^*FG""-i%9t(3$(%":
L'("J*FG""-(B %-‰1$K( Be

9J•$#J: Được thực hiện trước join point

B•J#: Được thực hiện sau join point

B#$%L: Bao quanh sự thực hiện join point, advice này
có thể thực hiện vòng, thực hiện tiếp của mã nguồn ban
đầu hoặc thực hiện thay đổi ngữ cảnh (tham số của
hàm, …)
„„…
Ví dụ

×