Lập trình hướng khía cạnh

Một phần của tài liệu Luận văn kiểm chứng các thành phần java tương tranh (Trang 35 - 38)

Phương pháp lập trình hướng khía canh (Aspect-Oriented Programming - AOP) [18, 59, 60] là phương pháp lập trình phát triển trên tư duy tách biệt các mối quan

tâm khác nhau thành các môdun khác nhau. Ở đây, một môi quan tâm thường không phải là một chức năng nghiệp vụ cụ thể và có thể được đóng gói mà là một khía cạnh (thuộc fính) chung mà nhiều môdun phần mềm trong cùng hệ thống

nên có, ví dụ như lưu vết thao tác và lỗi (error logging). Với AOP, chúng ta có thể

cài đặt các mối quan tâm chung cất ngang hệ thống bằng các môđun đặc biệt gọi

là khía cạnh (aspeef) thay vì dầu trải chúng trên các môđun nghiệp vụ liên quan, Các khía cạnh sau đó được kết hợp tự động với các môđun nghiệp vụ khác bằng

quá trình gọi là đan (weaving) bing bo bien dich dic biet.

AspectJ [36, 53, 60] là mot cong cu AOP cho ngôn ngữ lập trình Java. Trình biên dich AspeetJ sẽ đan xen chương trình Java chính với các khía cạnh thành các tep mã bytecode chạy trên chính máy ảo Java. Trong mục này chúng tôi trình bày một số khái niệm liên quan về AspeetJ được sử dụng trong các chương 5 và 6 của

luận án.

2.6.1 Thực thi cắt ngang

Trong Aspeet], quá trình trình biên dịch thực thi các qny tie dan để đan kết

cỏc mửđun cắt ngang vào mụđun nghiệp vụ chớnh được gọi là thực thi cất ngang

(or

động và thực thi cit ngang tĩnh : Thực thi cắt ngang dong (dynamic crosscutting)

utfing). AspeetJ định nghĩa hai loại thực thi cắt ngang là thực thi cất ngang

là việc đan các hành vị mới vào quá trình thực thi một chương trình. Trình biên

dich sẽ dựa vào tập các quy tắc đan để xác định điểm đan và chèn thêm hoặc thay

bi

thể luồng thực thi chương trình chính bằng môđun cắt ngang, từ đó làm thay:

hành vị của hệ thống. Hầu hết việc thực thi cất ngang trong AspeetJ đều là thực thi cất ngang động.

Thue thi cit ngang tinh (static crosscutting) la qua trinh đan một sửa đổi vào

cấu trúc tĩnh của lớp, giao diện hay các khía cạnh hệ thống. Chức năng chính của.

thực thi cắt ngang tĩnh là hỗ trợ cho thực thi cat ngang động. Ví dụ như thêm.

dữ liên và phương thức mới vào lớp đã có nhằm định nghĩa trạng thái và hành vi của lớp đó để sử dụng trong các hành vi cắt ngang động. Thực thi cắt ngang tĩnh

Chương 9. Kiến thức cơ sở 37

còn được sử dụng nhằm khai báo các cảnh báo và lỗi tại thời điểm biên dịch cho nhiều môđun.

Trong AOP, mỗi khía cạnh được coi là biểu diễn của một quy tắc đan, nó chỉ ra

môdun cần được đan, vị trí đan trong, mõđun đó, hành vi sẽ được đan vào thông.

qua các định nghĩa của điểm nối, hướng cất và mã hành vi.

2.6.2 Điểm nối

Đì

chương trình, điểm này chính là vị trí mà các hành động thực thi cắt ngang được

néi (joinpoint) la một điểm có thể xác định trong quá trình thực thi mot

dan vào. Trong AspectJ cé một số loại điểm nối được chia thành hai loại thực thi và triệu hồi phương thức sau.

1. Điểm nối thực thi phương thite (method execution jứinpoim) : điểm này nằm.

trên chính phần thân của phương thức thực thi, nó gồm toàn bộ các lệnh nằm trong thân phương thức,

9. Diểm nối triệu gọi phuong thite (method call joinpoint) : điểm này nằm trên phần chương trình gọi phương thức đang xét, nó chính là điểm mà phương.

thức đang xét được gọi.

2.6.3. Hướng cắt

Trong AspeetJ, điểm nối thường được sử dụng trong một hướng cất (poinfeut),

mỗi hướng cất chứa một nhóm các điểm nối cùng với ngữ cảnh của nó. Ta có thể khai báo hướng cất trong một khía cạnh, một lớp hoặc một giao điện. Giống như

phương thức, ¢6 thé sit dung dinh danh truy cap (public, private) dé gidi hạn quyền

truy cập đến hướng eat. Các hướng cất có thể có tên hoặc không tên. Các hướng.

cất không tên, giống như các lớp không tên, được định nghĩa tại nơi sử dụng. Các hướng cắt được đặt tên thì có thể được tham chiếu từ nhiều nơi khác. Cú pháp khai

báo hướng cắt như trong Danh sách 9.4 [61]. Trong đó access_specifier khai bio

định danh truy cập có thể la public hoje private, poinfcut_name khai báo tên của.

hướng cắt, argument list danh sách các tham số, và cuối cing pointeut_definition là định nghĩa hướng cất

c lệnh).

<access_specifier> <pointcut> <pointcut_name>(<argument_list >):

pointcut_definition;

DANH SácH 3.4 - Cấu trúc cơ bản của hướng cất.

Một phần của tài liệu Luận văn kiểm chứng các thành phần java tương tranh (Trang 35 - 38)

Tải bản đầy đủ (PDF)

(143 trang)