Báo cáo lập trình hướng khía cạnh

36 12 3
Báo cáo lập trình hướng khía cạnh

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mục đích bài báo cáo Tổng quan về phương pháp luận lập trình Giớ thiệu và khái quát về phương pháp lập trình hướng lát cắt mục lục 1Mục đích bài báo cáo 2mục lục 3CHƯƠNG I LỊCH SỬ HÌNH THÀNH VÀ PHÁT T.

MỤC ĐÍCH BÀI BÁO CÁO: -Tổng quan phương pháp luận lập trình -Giớ thiệu khái quát phương pháp lập trình hướng lát cắt MỤC LỤC Chương II Lập trình hướng khía cạnh - AOP (Aspect-oriented programming) .14 2.1.Giới thiệu 14 14 2.1.1.Các thuật ngữ 15 2.1.2 Hạn chế phương pháp lập trình 16 2.2.Các đặc điểm AOP 18 2.2.1.Quản lý concern hệ thống 18 2.2.2.Phương pháp luận AOP 22 *Ưu điểm AOP 23 *Những nhược điểm 23 2.2.3.Một số công cụ hỗ trợ làm việc với AOP 23 2.3.Giới thiệu AspectJ 24 2.3.1.Giới thiệu 24 2.3.2.Một số khái niệm 24 1.Join point 24 2.Pointcut 26 3.Advice 26 4.Introduction 28 5.Aspect 28 6.Static crosscutting 29 2.4.Một số ứng dựng AOP 31 Chương III Demo lập trình hướng khía cạnh - AOP (Aspect-oriented programming) .33 Kết luận 35 KẾT QUẢ TÌM ĐƯỢC 35 - Tìm kiếm ứng dụng sử dụng lập trình hướng lát cắt 35 tài liệu tham khảo 36 CHƯƠNG I LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN CỦA LẬP TRÌNH 1.1 Lịch sử hình thành phát triển 1.1.1 Kỹ thuật lập trình giai đoạn thứ MTĐT Lập trình, hay nói xác học lập trình cơng việc nặng nhọc, xuất thấp Có thể nói xuất lập trình đứng cuối bảng so với hoạt động trí tuệ khác Cho đến nay, xuất lập trình viên dao động khoảng 4-5 lệnh/ngày Một sản phẩm phần mềm thiết kế cài đặt khoảng tháng với lao động Nhưng để kiểm tra tiếp tục tìm lỗi, hồn thiện sản phẩm phải thêm chừng năm Hiện tượng phổ biến tin học, người ta khắc phục mẹo nhỏ có tính chất thương mại sau: Thay sửa sản phẩm, người ta cơng bố sửa dạng phiên Ví dụ: Ta thấy hệ điều hành DOS 4.0, tồn thời gian ngắn thay bẳng DOS 5.0, .tương tự cho hệ điều hành Window Trong thời kỳ đầu tin học, khoảng năm 50, người ta lập trình ngơn ngữ bậc thấp o Việc nạp theo dõi hoạt động chương trình cách trực chế độ trực tuyến (on-line), tìm & diệt lỗi (debugging) ta hay làm ngày khơng thể o => Lập trình viên làm việc thận trọng ngày nhiều Trước năm 60, người ta coi lập trình hoạt động nghệ thuật, nhuốm màu sắc tài nghệ cá nhân khoa học Một người nắm ngơn ngữ lập trình số mẹo vặt tận dụng cấu hình phần cứng cụ thể máy tính xem chun gia nắm bắt bí mật “nghệ thuật lập trình” 1.1.2 Cuộc khủng hoảng PM năm 60 Những năm 60 bùng nổ “ khủng hoảng đảm bảo phần mềm” đặc trưng hai tượng sau đây: - Chi phí cho tin học lớn, chi phí cho phần mềm chiếm tỉ lệ cao ngày tăng so với chi phí cho kỹ thuật tin học (phần cứng) o Năm 1965 tổng chi phí cho tin học Thế giới chiếm 250 tỉ Franc o Rất nhiều đề án lớn nhằm ứng dụng tin học bị thất bại liên tiếp Nguyên nhân thất bại chủ yếu phần đảm bảo sản phẩm - Để giải vướng mắc kỹ thuật lập trình, nhà tin học lý thuyết sâu vào nghiên cứu, tìm hiểu chất ngơn ngữ, thuật tốn hoạt động lập trình nâng nội dung lên thành nguyên lý khoa học Các kết nghiên cứu điển hình như: + Dijkstra nghiên cứu rằng: “động thái chương trình đánh giá cách tường minh qua cấu trúc lặp, rẽ nhành, gọi đề quy ” ” tay nghề lập trình viên tỷ lệ nghịch với tốn tử goto mà viết chương trình” + Gues báo phân tích sâu sắc nguyên nhân dẫn đên tình trọng lập trình dùng goto bừa bãi biến chương trình thành mớ rối rắm mì sợi + Gries phê phán trường đại học, người ta dạy ngơn ngữ lập trình khơng dạy kỹ thuật lập trình, người ta dạy mẹo để lập trình không quan tâm đến nguyên lý & phương pháp luận lập trình 1.1.3 Những tư tưởng cách mạng lập trình Tính cách mạng quan điểm khoa học nẩy nở giai đoạn thể điểm sau đây: o Chương trình máy tính lập trình viên trở thành đối tượng nghiên cứu lý thuyết lập trình o Vấn đề đặt lý thuyết lập trình “làm làm chủ phức tạp hoạt động lập trình” Do trí tuệ cá nhân lập trình viên có hạn mà vấn để thực tiễn cần giải công cụ tin học lớn phức tạp Vấn đề đặt liệu phân tốn lớn thành tốn nhỏ có độ phức tạp thấp để giải riêng, sau tổng hợp kết lại không? Các kết nghiên cứu đạt được: + Năm 1969, Hoere phát biểu tiên đề phục vụ cho việc chứng minh tính đắn chương trình phát tính chất bất biến vịng lặp Sau Dijkstra Hoere phát triển ngơn ngữ lập trình có cấu trúc + Để triển khai nguyên lý lập trình Wirth thiết kế cài đặt ngôn ngữ ALGOL W – biến thể ALGOL – 60 Sau ALGOL W tiếp tục hồn thiện để trở thành ngơn ngữ lập trình Pascal Đây ngôn ngữ giản dị, sáng cú pháp, dễ minh họa tư tưởng lập trình đại => Rất phù hợp giảng dạy + Năm 1978, Kernighan Ritchie thiết kế ngơn ngữ lập trình C Cuộc cách mạng lập trình diễn năm 60 – 70 đem lại cho nhận thức sau đây: o Lập trình lĩnh vực khó tốn học ứng dụng Có thể coi lập trình khoa học nhằm đề xuất nguyên lý phương pháp nâng cao hiệu xuất lao động cho lập trình viên Năng xuất cần định hướng trước hết đến:  Tính đắn chương trình  Tính dễ đọc, dễ hiểu, dễ thực chương trình  Tính dễ sửa đổi chương trình  Tận dụng tối đa khả thiết bị mà khơng phụ thuộc vào thiết bị o Tóm lại: Kỹ thuật lập trình hay mức độ rộng CNPM nhằm hướng đến mục tiêu cuối “Sử dụng tối ưu phối hợp người máy” o Người ta kiểm sốt tính đắn đối tượng kiến trúc cách đơn giản sáng  Lập trình viên phải khỏi ràng bc cụ thể văn phạm ngơn ngữ lập trình, phải diễn đạt cách sáng đắn thị (chứ biết ngôn ngữ) – tiêu chuẩn số  Trong lập trình, số lập trình viên hay bị cột chặt vào ngơn ngữ lập trình cụ thể Thực chất q trình lập trình “người ta khơng lập trình ngơn ngữ cụ thể mà lập trình hướng đến nó” 1.1.4 Triển khai chương trình theo sắc thái công nghệ Công nghệ sản xuất sản phẩm phần mềm thường bao gồm giai đoạn sau: Tìm hiểu nhu cầu khách hàng Đây bước hình thành nên tốn Xác định chức cần có sản phẩm Chia nhỏ chức thành nhóm độc lập tương Mỗi nhóm ứng với phần hợp thành sản phẩm Ví dụ: Để sản xuất hộp bia, người ta phân chia công nghệ thành giai đoạn (nhóm chức năng) sau đây: a Chuẩn bị nguyên liệu b Lên men d Ướp hương liệu e Đóng hộp f Đóng thùng g Nhập kho Chú ý rằng, công đoạn bao gồm nhiều chức khác nhỏ Ví dụ: + Cơng đoạn a) chuẩn bị nguyên liệu bao gồm:  Chuẩn bị lúa đại mạch,  Chuấn bị hoa bia,  + Cơng đoạn c) làm hộp gồm:  Cắt nhôm,  Dập hộp,  In nhãn Giao việc thiết kế sản xuất sản phần sản phẩm cho người nhóm người Các nhóm triển khai cơng việc: Thực bước thiết kế, sản xuất, thử nghiệm Trong q trình này, nhóm thường xun liên hệ với nhằm hạn chế tối đa công việc trùng lặp đảm bảo tính tương thích ghép nối phận Ghép nối phận/chi tiết thành phẩm Thử nghiệm sản phẩm, sửa cần Bán giao lô sản phẩm cho khách hàng Thu thập thông tin phản hồi từ phía người sử dụng Quyết định sửa lại sản phẩm, cải tiến hủy bỏ việc sản xuất sản phẩm Trên quy trình sản xuất sản phẩm nói chung Nhóm làm phần mềm thực ngần nhiệm vụ giai đoạn tương ứng Trong nhóm cách chuyên viên cho nhiệm vụ - Phân tích viên + lãnh đạo nhóm: Đảm nhận nhiệm vụ từ 1- o Sản phẩm thu sau giai đoạn phần đầu hồ sơ phần mềm gồm:  Các đặc tả yêu cầu  Các đặc tả chức phần mềm module tương ứng - Giai đoạn 5: Dành cho nhóm triển khai cơng việc o Các nhóm trưởng lại tiếp tục phát triển hồ sơ = cách bổ sung thêm đặc tả chi tiết, tinh chế dần bước nhận chương trình viết ngơn ngữ lập trình cụ thể o Các lập trình viên tham gia vào việc:  Phân tích nhiệm vụ  Đặc tả khối chức nhóm mình, đặc tả tốt giao nhiệm vụ mã hóa cho máy tính  Mã hóa: Chuyển biểu diễn thuật toán từ dạng đặc tả sang dạng mã nguồn (sử dụng ngơn ngữ lập trình cụ thể) Khi mã hóa nên tận dụng quỹ thuật tốn quỹ chương trình: + Vì thời gian giao nộp sản phẩm hạn hẹp, nên tìm sử dụng lại mơ đun, thủ tục thuật tốn có sẵn + Để thực điều khơng phải dễ, địi hỏi ý thức trách nhiệm cao thành viên tập thể Ở đây, nguyên tắc “mình người, người mình” coi đắc dụng Khi viết phần mềm đó, dù nhỏ, bạn ln có ý thức viết cho nhiều người dùng Có ý thức đó, ngồi lợi bạn thận trọng cho sản phẩm mình, bạn cịn thực đóng góp quan trọng vào quỹ thuật tốn quỹ chương trình, mà đó, bạn có quyền khai thác sản phẩm trí tuệ người khác + Có thể nói, khơng có lĩnh vực người phung phí chất xám nhiều tin học Với xuất thảm hại 4-5 lệnh/ngày, người ta làm hàng vạn, hàng triệu module, chương trình, hệ thống để thực công việc * Trao đổi với nhóm khác để: nhận thủ tục dùng chung thông hiểu lẫn nhau: * Muốn hiểu biết tốt nên: - Dùng thứ ngôn ngữ đặc tả, nhằm mô tả yếu tố sau chương trình: - Các phép biến đổi - Các kết cần đạt điểm chương trình - Hành động theo nguyên tắc: Nguyên tắc hành động đảm bảo tính sang, dễ hiểu triển khai chương trình theo cấu trúc từ xuống tinh chế dần -Hướng dẫn cách sử dụng chi tiết sản phẩm nhóm phát triển - Giai đoạn 6: Do chuyên viên trưởng lập trình thực hiện, chuyên viên cần: + Trực tiếp tham gia vào hoạt động 1-4 + Theo dõi tiến độ hoạt đông + Bám sát hoạt động giai đoạn - Nhiệm vụ 7: Do chuyên viên kiểm thử thực - Nhiệm vụ 8+9: Do chuyên gia Marketing + lãnh đạo nhóm thực Chuyên gia cần tham gia vào hoạt động từ 1-4 Các nhóm cần có tư vấn + Các chuyên gia đảm bảo toán học chuyên gia thuật toán + Các cố vấn kỹ thuật: Tư vấn, trợ giúp nhóm lựa chọn thiết bị (phần cứng), thuật toán, phầm mềm trợ giúp 1.2 Các phương pháp luận 1.2.1 Phương pháp luận ? Phương pháp luận cách tiếp cận để giải vấn đề Phương pháp luận lập trình cách tiếp cận để viết chương trình (theo quan điểm lý thuyết) Theo quan điểm kỹ thuật, phương pháp luận lập trình cịn gọi kỹ thuật lập trình 1.2.2 Các phương pháp triển khai chương trình • Triển khai chương trình từ xuống từ lên Khi vận dụng nguyên lý phân mức toán theo cấp độ trừu tượng hóa, làm quen với hai cách tiếp cận từ xuống từ lên Cách tiếp cận thứ (Top – Down) tác giải ngôn ngữ Pascal đề xuất vào thập kỷ 70 đặt tên làm mịn dần Điều quan trọng q trình làm mịn dần/hay xác dần chương trình phải tiến hành đồng thời với xác hóa liệu Cách tiếp cận giúp ta xuất phát từ máy giải trừu tượng dần đến máy giải cụ thể trang bị ngôn ngữ lập trình cụ thể Cách tiếp cận thứ (Bottom - up) xuất phát từ viên gạch để thiết kế móng, tầng, tầng nhận kiến trúc hồn chỉnh (ví dụ vận dụng giáo dục, đào tạo) Cách tiếp cận thường vận dụng trường hợp chiến lược giải toán chưa nghiên cứu Quá trình trừu tượng hóa chia làm nhiều mức Mỗi mức nói chung xác định cơng cụ: Ngôn ngữ, Cấu trúc liệu, Các thao tác, Máy giải.Trong đó: + Ngơn ngữ: cơng cụ dùng để mô tả CTDL thao tác cần thiết Ngôn ngữ mức trừu tượng mức ngơn ngữ tự nhiên ngơn ngữ tự nhiên có cấu trúc (phi hình thức bán hình thức) + Máy giải: Ở mức cao, máy giải máy trừu tượng (máy giả định) Càng mức mức độ trừu tượng cao theo nguyên tắc “thấy chưa quan trọng thấy rừng” Quá trình trừu tượng hóa xác dần mịn dần mức nhận chương trình hồn chỉnh viết ngơn ngữ lập trình cụ thể để chạy ngơn ngữ cụ thể • Làm mịn dần (tinh chế dần bước) Năm 1956, chuyên gia tâm lý học George Miller rằng: Tại thời điểm, có khả tập trung vào khoảng vấn đề khó khăn cần giải Phát biểu gọi luật Miller (Miller’s Law) [Miller, 1956] Tuy nhiên, vấn đề cần giải lại chia thành nhiều vấn đề cần giải quyết, để hạn chế lượng thông tin/các vấn đề giải thời điểm ta sử dụng kỹ thuật “tinh chế bước” – “stepwise refinement” Tinh chế bước kỹ thuật giải vấn đề định nghĩa công cụ để cắt tỉa định chi tiết đến giai đoạn sau để tập trung vào vấn đề quan trọng/các vấn đề Như luật Miller đưa ra, thời điểm ta tập trung giải khoảng khó khăn Tinh chế bước vận dụng nhiều kỹ thuật kỹ nghệ phần mềm như, kỹ thuật phân tích, thiết kế, cài đặt, kiểm thử tích hợp 1.2.3 Các phương pháp luận lập trình Phương pháp luận lập trình biểu diễn mơ hình lập trình Một mơ hình lập trình thể quan điểm/một cách tiếp cận lập trình Mỗi mơ hình hỗ trợ tập khái niệm, kỹ thuật ngun tắc thiết kế Các mơ hình lập trình khác có mức độ diễn đạt khác nhau, kỹ thuật lập 10 Hình 6: Giải concern hệ thống phương pháp AOP 2.2.2.Phương pháp luận AOP Việc phát triển hệ thống sử dụng AOP tương tự phát triển hệ thống sử dụng phương thức khác: xác đinh concern, thực chúng, kết hợp lại để thành hệ thống cuối Tuy nhiên cộng đồng nghiên cứu AOP đề xuất ba bước thực sau: Aspectual decomposition: Trong bước phân tách yêu cầu nhằm xác định concern lõi concern đan xen Các concern lõi tách khỏi concern đan xen Concern Implementation: Thực thi concern cách độc lập Aspectual Recomposotion: Trong bước quy lật kết hợp cách tạp aspect Q trình cịn gọi q trình dệt mã, sử dụng thông tin aspect để cấu thành hệ thống đích 22 Hình 7: Các giai đoạn phát triển sử dụng phương pháp AOP *Ưu điểm AOP Khi sử dụng AOP để giải toán cần suy nghĩ thiết kế thi công hệ thống theo phương thức mới, với AOP ta có ưu điểm sau Tách biệt chức module độc lập Tính module hố cao Phát triển hệ thống dễ dàng Kết nối muộn thiết kế Tăng khả sử dụng lại mã Giảm thời gian thi công hệ thống Giảm giá thành sản phẩm *Những nhược điểm Mặc dù AOP có ưu điểm thiết kế thi công hệ thống,nhưng thực tế AOP có vài đặc điểm gay trở ngại sau AOP thực không giải vấn đề mới, không giải vấn đề chưa giải AOP giải toán theo cách tốt AOP không cứu cánh cho thiết kế cẩu thả AOP phá vỡ tính đóng gói (encapsulation) 2.2.3.Một số công cụ hỗ trợ làm việc với AOP AOP nghiên cứu áp dụng vào hầu hết ngôn ngữ Java, C, C#, Python, PHP Tên dự án AspectJ Địa Aspectj.org 23 AspectWerkz Jboss AOP Sping AOP Aspect# AspectC++ JAC Aspectwerkz.codehaus.org Jboss.org www.spring framework.org Aspectsharp.sourceforge.net Aspectc.org Jac.objectweb.org 2.3.Giới thiệu AspectJ 2.3.1.Giới thiệu AspectJ mở rộng theo mơ hình AOP ngơn ngữ Java, với mở rộng mã chương trình viết Java tương thích với chương trình viết AspectJ AspectJ bao gồm hai phần: đặc tả ngôn ngữ phần thực thi Phần đặc tả ngôn ngữ cách viết code, với AspectJ concern viết Java, concern hệ thống thực AspectJ AspectJ plugin vào công cụ phát triển Eclipse (eclipse.org) đánh giá sản phẩm tốt AOP 2.3.2.Một số khái niệm Như biết mục đích AOP module hố concern đan xen AspectJ định nghĩa loại concern: concern đan xen tĩnh (static crosscutting): Là gắn kết thay đổi cấu trúc tĩnh (class, interface, aspect) Nghĩa thực thay đổi đến cấu trúc liệu tĩnh để đáp ứng yêu cầu toán concern đan xen động (dynamic crosscutting): gắn kết hành vi vào chương trình, hầu hết concern đan xen AspectJ concern đan xen động AspectJ sử dụng dự mở rộng Java để luật gắn kết cho concern tĩnh concern động 1.Join point Join point khái niệm cở AspectJ, Join point điểm xác định thực chương trình Có thể lời gọi đến 24 phương thức lệnh gán cho biến đối tượng Trong AspectJ thứ xoay quanh join point public class Account { void credit(float amount) { balance + = amount; } } Join point phân loại sau • join point phương thức • join point hàm dựng (contructor) • join point điểm truy cập thuộc tính • join point điểm điều khiển ngoại lệ: Được biểu diễn khối điều khiển ngoại lệ try { account.debit(amount); } catch (InsufficientBalanceException ex) { postMessage(ex); OverdraftManager.applyOverdraftProtection(account, amount); } • join point advice: public aspect MannersAspect { before() : deliverMessage() { System.out.print("Hello! "); 25 } } public aspect LoggingAspect { after() : loggedOperations() { _logger.log( ); } } 2.Pointcut Pointcut cấu trúc chương trình mà chọn join point ngữ cảnh joint point Ví dụ pointcut chọn join point lời gọi đến phương thức lấy thơng tin ngữ cảnh phương thức đối tượng chứa phương thức, đối số phương thức Cú pháp pointcut khai báo sau: [access specifier] pointcut pointcut-name([args]) : pointcut-definition Ví dụ: execution(void Account.creadit(float)) Bảng ánh xạ join point chọn cho point cut Thực phương thức Gọi phương thức Thực hàm dựng Gọi hàm dựng Khởi tạo class Đọc thuộc tính Ghi thuộc tính Thực điều khiển ngoại lệ Khởi tạo đối tượng Tiền khởi tạo đối tượng Thực advice execution(MethodSignature) call(MethodSignature) execution(ConstructorSignature) call(ConstructorSignature) staticinitialization(TypeSignature) get(FieldSignature) set(FieldSignature) execution handler(TypeSignature) initialization(ConstructorSignature) preinitialization(ConstructorSignature) adviceexecution() 3.Advice 26 Là mã thực join point mà chọn pointcut Advice tương tự cấu trúc hàm cung cấp thức hành động đan xen join point mà chọn point cut Pointcut advice hình thành nên luật đan kết quan hệ đan xen Advice chia thành loại sau before: Được thực trước join point after: Được thực sau join point around: Bao quanh thực join point, advice thực vịng, thực tiếp mã nguồn ban đầu thực thay đổi ngữ cảnh (tham số hàm, …) Giả sử ta có pointcut khai báo sau pointcut connectionOperation(Connection connection) : call(* Connection.*( ) throws SQLException)&& target(connection); Ta xây dựng advice sau: before(Connection connection):connectionOperation (connection) { System.out.println("Performing operation on " + connection); } Object around(Connection connection) throws SQLException : connectionOperation (connection) { System.out.println("Operation " + thisJoinPoint + " on " + connection+ " started at " + System.currentTimeMillis()); proceed(connection); System.out.println("Operation " + thisJoinPoint + " on " + connection + " completed at " + System.currentTimeMillis()); } Nếu around advice muốn thực thao tác join point, phải sử dụng từ khoá proceed() 27 4.Introduction Introduction lệnh thay đổi đến class, interface, aspect Nó tạo thay đổi tĩnh đến module mà không trực tiếp ảnh hưởng đến hành vi module Ví dụ thêm phương thức trường vào lớp sửa đổi cấu trúc thừa kế đối tượng Ví dụ khai báo sau sửa đổi cấu trúc thừa kế đối tượng Account declare parents: Account implements BankingEntity; Introduction khái niệm sinh để can thiệp vào cấu trúc tĩnh, AOP dùng để xử lý quan hệ đan xen tĩnh (static crosscutting) Chúng ta đề cập đến vấn đề phần static crosscutting 5.Aspect Aspect phần tử tập trung AspectJ, giống class Java Aspect chứa mã thể luật đan kết cho concern Join point, pointcut, advice, introduction kết hợp aspect Aspect khai báo theo mẫu sau [access specification] aspect [extends class-or-aspect-name] [implements interface-list] [(Pointcut)] { aspect body } Ví dụ sau khai báo aspect: public aspect ExampleAspect { before() : execution(void Account.credit(float)) { System.out.println("About to perform credit operation"); } declare parents: Account implements BankingEntity; declare warning : call(void Persistence.save(Object)) : "Consider using Persistence.saveOptimized()"; 28 } Một số tính chất khái niệm aspect tương tự khái niệm class • Aspect chứa thuộc tính phương thức • Aspect chứa thuộc tính truy cập: private, public, protected • Aspect khai báo aspect trừu tượng: public abstract aspect AbstractLogging { public abstract pointcut logPoints(); public abstract Logger getLogger(); before() : logPoints() { getLogger().log(Level.INFO, "Before: " + thisJoinPoint); } } • Aspect thừa kế class, abstract aspect thi công interface public aspect BankLogging extends AbstractLogging { public pointcut logPoints() : call(* banking *( )); public Logger getLogger() { return Logger.getLogger("banking"); } } • Aspect nhúng class interface aspect nằm Ngồi tính chất tương tự class trên, aspect có số đặc điểm khác so với class sau: • Aspect khơng thể khởi tạo trực tiếp • Aspect thừa kế từ aspect khác (khơng phải trừu tượng) • Aspect đánh dấu quyền 6.Static crosscutting Trong AOP thường xuyên can thiệp vào quan hệ đan xen động 29 sử dụng advice, cần thiết hành động can thiệp vào cấu trúc tĩnh Trong concern đan xen động sửa đổi thực thủ tục chương trình đan xen tĩnh sửa đổi cấu trúc class, interface, aspect khác hành vi điểm dịch chương trình •Giới thiệu thành viên Aspect thường xun giới thiệu thành viên phương thức vào lớp aspect AspectJ cung cấp có chế gọi introduction để giới thiệu thành viên vào class interface Đoạn mã mô tả cách giới thiệu thành viên thuộc tính minimumBalance phương thức getAvailable() vào lớp Account Các thành viên giới thiệu vào lớp quyền truy nhập khai báo thành viên lớp Ví dụ từ khoá private thành viên truy cập từ aspect giới thiệu public aspect MinimumBalanceRuleAspect { private float Account._minimumBalance; public float Account.getAvailableBalance() { return getBalance() - _minimumBalance; } after(Account account) : execution(SavingsAccount.new( )) && this(account) { account._minimumBalance = 25; } before(Account account, float amount)throws InsufficientBalanceException : execution(* Account.debit())&& this(account) && args(amount) { if (account.getAvailableBalance() < amount) { throw new InsufficientBalanceException( "Insufficient available balance"); } } 30 •Sửa đổi cấu trúc thừa kế Khi thực thi quan hệ đan xen thường xuyên cần tác động đến tập class interface mà chúng có chung kiểu sở AspectJ sửa đổi thừa kế lớp tồn để khai báo lớp cha interface lớp miễn không ảnh hưởng đến qui luật thừa kế Java Mẫu khai báo sau: declare parents : [ChildTypePattern] implements [InterfaceList]; declare parents : [ChildTypePattern] extends [Class or InterfaceList]; Ví dụ : Aspect khai báo tất class interface gói entities thực thi Identifiable interface aspect AccountTrackingAspect { declare parents : banking entities.* implements Identifiable; tracking advices } 2.4 Một số ứng dựng AOP Dưới số ứng dụng điển hình sử dụng ưu điểm AOP việc thiết kế triển khai Các kỹ thuật điều khiển, giám sát (monitor): Các kỹ thuật điều khiển, giám sát logging, tracing, profiling kỹ thuật chung để hiểu hành vi xảy hệ thống Ví dụ hệ thống nhà băng người quản trị muốn theo dõi thông tin giao dịch hệ thống tên tài khoản, thời gian giao dịch Vì chức xuyên suốt qua module ứng dụng nên triển khai kỹ thuật với AOP cách tiếp cận tốt Tăng cường sách (policy enforcement): Là chế bảo đảm thành phần hệ thống phải theo quy tắc lập trình thực tế, tuân theo số luật cụ thể Ví dụ bạn khơng thể gọi đến thư viên xử lý giao diện AWT mã EJB Tối ưu hóa (resource pooling caching): Khái niệm resource pooling caching thường xuyên phải sử dụng tình muốn tối ưu hóa 31 ứng dụng 32 CHƯƠNG III DEMO LẬP TRÌNH HƯỚNG KHÍA CẠNH - AOP (ASPECTORIENTED PROGRAMMING) 3.1 Microsoft Transaction Server (MTS) Microsoft Transaction Server (MTS) phần mềm cung cấp dịch vụ cho thành phần phần mềm Mơ hình Đối tượng Thành phần (COM) , để giúp tạo ứng dụng phân tán lớn dễ dàng Các dịch vụ MTS cung cấp quản lý giao dịch tự động , quản lý phiên (hoặc kích hoạt thời gian ) bảo mật dựa vai trò MTS coi phần mềm lớn thực lập trình hướng khía cạnh 3.2 Jakarta Enterprise Beans (EJB ; trước Enterprise JavaBeans) Jakarta Enterprise Beans ( EJB ; trước Enterprise JavaBeans) 33 số API Java để xây dựng mô-đun phần mềm doanh nghiệp EJB thành phần phần mềm phía máy chủ đóng gói logic nghiệp vụ ứng dụng Một vùng chứa web EJB cung cấp môi trường thời gian chạy cho thành phần phần mềm liên quan đến web, bao gồm bảo mật máy tính , quản lý vòng đời dịch vụ Java , xử lý giao dịch dịch vụ web khác Đặc tả EJB tập đặc tả Java EE 34 KẾT LUẬN KẾT QUẢ TÌM ĐƯỢC - Tìm hiểu khái niệm bản, tính chất, đặc điểm lập trình hướng lát cắt - Tìm hiểu thêm AspectJ - Ứng dụng lập trình hướng lát cắt(AOP) - Tìm kiếm ứng dụng sử dụng lập trình hướng lát cắt 35 TÀI LIỆU THAM KHẢO Elements of Reusable Object-Oriented Software Addison Wesley - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides - Addison Wesley, 1995 AspectJ CookBook- Russell Miles - O'Reilly 2004 AspectJ in Action-RAMNIVAS LADDAD-Manning publishing - 2004 Mastering AspectJ-Joseph D Gradecki, Nicholas Lesiecki -Wiley publishing http://eclipse.org/aspectj/ http://theserverside.com http://aosd.net/ - Aspect Oreinted Software development community & conference https://en.wikipedia.org/wiki/Aspect-oriented_programming#cite_note-20 36 ... Các mơ hình lập trình liệt kê bảng sau: Phương thức lập trình Lập trình hướng thiết bị - Gear Oriented Programming Lập trình hướng cơng tắc- Switch Oriented Programming Lập trình hướng thủ tục... Programming Lập trình hướng đối tượng – Object Oriented Programming Lập trình hướng lát cắt – Aspect Oriented Programming Mệnh lệnh Lập trình hướng cấu phần – Component Oriented Programming Lập trình hướng. .. ngữ lập trình, phải diễn đạt cách sáng đắn thị (chứ biết ngôn ngữ) – tiêu chuẩn số  Trong lập trình, số lập trình viên hay bị cột chặt vào ngơn ngữ lập trình cụ thể Thực chất trình lập trình

Ngày đăng: 11/12/2022, 16:07

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan