1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đồ án môn học nghiên cứu về AOP

66 0 0

Đ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

Nội dung

 ĐỒ ÁN MÔN HỌC NGHIÊN CỨU VỀ AOP GIẢNG VIÊN HƯỚNG DẪN: HUỲNH QUYẾT THẮNG LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Giới thiệu 1.1 Mục đích cấu trúc tài liệu 1.2 Các thuật ngữ 1.3 Hạn chế phương pháp lập trình Các đặc điểm AOP 2.1 Quản lý concern hệ thống 2.2 Phương pháp luận AOP 12 2.2.1 Ưu điểm AOP 13 2.2.2 Những nhược điểm 13 2.3 Một số công cụ hỗ trợ làm việc với AOP 14 Giới thiệu AspectJ 14 3.1 Giới thiệu 14 3.2 Một số khái niệm 14 3.2.1 Join point 15 3.2.2 Pointcut 16 3.2.3 Advice 16 3.2.4 Introduction 17 3.2.5 Aspect 18 3.2.6 Static crosscutting 19 3.3 Một số ứng dựng AOP 20 Giải toán với AOP 21 4.1 Sử dụng AOP bước thiết kế 21 4.2 Sử dụng AOP bước thi công 22 4.3 Sử dụng AOP bước kiếm tra 22 4.4 Sử dụng AOP giai đoạn bảo trì 23 Triển khai số pattern AspectJ 23 5.1 Các mẫu thiết kế cho việc tạo đối tượng 24 5.1.1 Singleton pattern 24 5.1.2 Prototype pattern 26 5.1.3 Abstract Factory pattern 28 5.1.4 Factory Method pattern 30 5.1.5 Builder pattern 31 5.2 Các mẫu thiết kế cho cấu trúc đối tượng 32 5.2.1 Composite pattern 32 5.2.2 Flyweight pattern 35 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 5.2.3 Bridge Pattern 37 5.2.4 Decorator pattern 38 5.2.5 Adapter pattern 39 5.2.6 Proxy Pattern 40 5.3 Các mẫu thiết kế cho hành vi đối tượng 42 5.3.1 Observer pattern 42 5.3.2 Command Pattern 46 5.3.3 Iterator pattern 50 5.3.4 Mediator pattern 51 5.3.5 Chain of Responsibility Pattern 53 5.3.6 Memento Pattern 56 5.3.7 Visitor Pattern 58 5.3.8 Strategy pattern 61 5.3.9 State Pattern 63 Kết luận 64 Tài liệu tham khảo 66 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Mục lục hình ảnh Hình 1: Mơ hình concern mức hệ thống Hình 2: Mơ hình ánh xạ yêu cầu người dùng sử dụng AOP 10 Hình 3: Mơ hình đa chiều phụ thuộc module với 10 Hình 4: Mơ hình ánh xạ từ concern hệ thống sang phương pháp lập trình truyền thống 11 Hình 5: Các module yêu cầu logging phải nhúng đoạn mã để gọi logging API 11 Hình 6: Giải concern hệ thống phương pháp AOP 12 Hình 7: Các giai đoạn phát triển sử dụng phương pháp AOP 13 Hình 8: Cấu trúc aspect trừu tượng với interface hàm định nghĩa để hỗ trợ Singleton pattern 25 Hình 9:Một ứng dụng trước sau tác động Singleton pattern 25 Hình 10: Các bước thực mẫu thiết kế Singleton ứng dụng 26 Hình 11: Cấu trúc PrototypePattern aspect 27 Hình 12:Một ứng dụng trước sau tác động Prototype pattern 28 Hình 13: Sử dụng Prototype pattern ứng dụng 28 Hình 14: Lược đồ UML AbstractFactory Pattern 29 Hình 15: Lược đồ UML factory method pattern 30 Hình 16: Cấu trúc CompositePattern aspect 32 Hình 17: Mơ hình đối tượng trước áp dụng Composite pattern 34 Hình 18: Mơ hình đối tượng sau áp dụng Composite pattern 35 Hình 19: Hoạt động composite pattern ứng dụng 35 Hình 20: Cấu trúc FlyweightPattern aspect 35 Hình 21:Cấu trúc XWindowBridge aspect 37 Hình 22: Sử dụng hành vi lớp Window ứng dụng 38 Hình 23: Cấu trúc DecoratorPattern aspect 38 Hình 24:Lớp TextDisplay trước sau áp dụng DecoratorPattern 39 Hình 25: Áp dụng Adapter pattern 40 Hình 26: Cấu trúc ProxyPattern aspect 40 Hình 27: Cấu trúc ObserverPattern aspect 43 Hình 28: Cấu trúc lớp trước áp dụng ObserverPattern 44 Hình 29:Cấu trúc lớp sau áp dụng ObserverPattern 45 Hình 30:Sử dụng ObserverPattern ứng dụng 45 Hình 31: Cấu trúc CommandPattern hàm hỗ trợ pattern 46 Hình 32: Trước áp dụng CommandPattern 48 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 33:Trước áp dụng CommandPattern 48 Hình 34: Sử dụng CommandPattern ứng dụng 49 Hình 35: IteratorPatternAspect interface định nghĩa vài trị pattern 50 Hình 36: Mơ tả tương tác EmployeeIteration với ứng dụng 51 Hình 37: Cấu trúc MediatorPattern aspect 51 Hình 38: Trước sau áp dụng Mediator pattern 53 Hình 39: Cấu trúc ChainOfResponsibilityPattern aspect 53 Hình 40: Sau áp dụng ChainOfResponsibilityPattern 55 Hình 41:Sử dụng ChainOfResponsibilityPattern ứng dụng 56 Hình 42: Cấu trúc MementoPattern aspect 57 Hình 43: Sử dụng MementoPattern ứng dụng 58 Hình 44: Cấu trúc Visitor pattern aspect 58 Hình 45: Cấu trúc Computeur 60 Hình 46: Cấu trúc Computeur sau áp dụng Visitor pattern 60 Hình 47:Sử dụng VisitorPattern ứng dụng 61 Hình 48:Cấu trúc StrategyPattern aspect 62 Hình 49: Cấu trúc lớp xếp chưa áp dụng StrategyPattern 62 Hình 50: Cấu trúc lớp xếp sau áp dụng StrategyPattern 62 Hình 51: Sử dụng Strategy Pattern ứng dụng 63 Hình 52: Sử dụng state pattern ứng dụng 64 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Giới thiệu Việc chuyển đổi yêu cầu người dùng vào hệ thống phần mềm khó khăn, có nhiều phương pháp tiếp cận lập trình hướng đối tượng, hướng thành phần, design pattern Chúng giải số vấn đề chưa có phương pháp thoả mãn việc giải yêu cầu đan xen mức hệ thống, yêu cầu mô tả khái niệm crosscutting concern Các nhà nghiên cứu lý thuyết đưa mơ hình AOP để giải vấn đề mà mơ hình lập trình chưa đáp ứng đáp ứng việc thực q phức tạp AOP khơng phát minh điều mà giải vấn đề tồn theo cách tốt (How to the bad things in better way) 1.1 Mục đích cấu trúc tài liệu Tài liệu tổng hợp từ nhiều nguồn khác (xem phần tài liệu tham khảo), bao gồm sách, báo, luận văn …về vấn đề nghiên cứu ứng dụng AOP ngành công nghệ phần mềm Tài liệu nhằm mục đích tìm hiểu mơ hình AOP sâu trình bày kỹ thuật quan trọng ngành công nghệ phần mềm design pattern mơ hình AOP Trước đọc tài liệu bạn cần có kiến thức kỹ thuật lập trình hướng đối tượng, mẫu thiết kế, kiến trúc phần mềm, … ngành công nghệ phần mềm Đồng thời cần kinh nghiệm thực tế khó khăn mà phương pháp lập trình gặp Tài liệu chia thành phần sau Phần thứ nhất, từ mục đến 5: Trình bày vấn đề AOP, giới thiệu phiên thi cơng AspectJ, cú pháp khái niệm AspectJ Ngoài phần này, tài liệu đề cập đến ứng dụng thích hợp cho việc áp dụng AOP Phần thứ 2, từ mục đến hết: Trình bày cách triển khai mẫu thiết kế (design pattern) sử dụng mô hình OOP sang mơ hình AOP, cụ thể triển khai cú pháp AspectJ 1.2 Các thuật ngữ Trước vào tìm hiểu AOP (một phương pháp lập trình mới) cần hiểu số thuật ngữ ngành công nghệ phần mềm LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com crosscutting concerns Chỉ quan hệ module hệ thống phần mềm refactoring Refactoring kỹ thuật cơng nghệ phần mềm mà mã nguồn chương trình cấu trúc lại nhằm đảm bảo tính mềm dẻo, mở rộng chức chương trình đồng thời mã chương trình dễ hiểu cho người đọc middleware Là lớp trung gian hệ thống phần mềm Một số middleware tiêu biểu EJB Sun, Net Framework Microsoft AOP Mơ hình lập trình hướng tương quan design pattern Là giải pháp thực thiết kế ứng dụng nhằm đảm bảo chất lượng, tăng tính mềm dẻo, tính sáng mã chương trình Một số pattern hay sử dụng IOC (Inversion of Control), Singleton, Proxy, Abstract Factory Class 1.3 Hạn chế phương pháp lập trình Có lẽ khái niệm AOP nhiều người biết đến, ta trình bày lại ngắn gọn khái niệm đặc điểm AOP Để trả lời câu hỏi AOP gì? Tại phải có AOP? Chúng ta cần bắt đầu tìm hiểu hạn chế của phương pháp lập trình việc đáp ứng yêu cầu ngày phức tạp hệ thống phần mềm Có lẽ câu hỏi thường gặp ngành công nghệ phần mềm là:Thiết kế phần mềm gọi đủ? Các hệ thống tốt cần xem xét đến yêu cầu yêu cầu tiềm tàng tương lai Sự lơ yêu cầu tương lai dẫn đến thay đổi nhiều phần hệ thống phải xây dựng lại Hay nói cách khác, thiết kế có khả đáp ứng nhu cầu cho tương lai dẫn đến tượng “tràn thiết kế”, khó hiểu, hệ thống phình khơng mong muốn Từ hình thành u cầu có thiết kế đáp ứng yêu cầu tương lai mà không ảnh hưởng đến chất lượng LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Phương pháp lập trình OOP tạo cách mạng lớn công nghệ phần mềm, ảnh hưởng đến tất pha từ xác định yêu cầu, phân tích, thiết kế, cài đặt, kiểm thử đến hệ quản trị sở liệu Tuy nhiên, người ta nhận thấy OOP modul hố u cầu theo kiểu mơ đối tượng (object) giới thực Nhưng mô dừng mức tĩnh Các đối tượng OOP hoạt động theo qui trình: Sinh-Hoạt động-Tử, giới thực, thường object có chu kỳ sống: Sinh-Hoạt động-Phát triển-Tử Ở đây, 'Phát triển' điều quan trọng, giải tức bạn giải tính tiến hố, thay đổi yêu cầu toán phần mềm Theo OOP, bạn phải cân nhắc dự đoán trước yêu cầu phát triển  Phát triển phần mềm nặng nề, bỏ qua yêu cầu phát triển tương lai  hệ thống thiếu tính khả mở, tiến hố Nhược điểm OOP thấy rõ nhất, nhược điểm thứ hai là: Một hệ thống thực tế đan xen yêu cầu Lấy ví dụ: Bạn cần xử lý nghiệp vụ truy xuất liệu Trong thiết kế, bạn phân cơng trách nhiệm cho object cụ thể vấn đề bình thường Nhưng với yêu cầu nghiệp vụ trên, thường cần bổ sung vào yêu cầu: Chứng thực, Phân quyền, Bảo mật, Lưu vết Như method TruyXuatDuLieu() đối tượng định đó, bạn phải bổ sung code cho yêu cầu nêu Tình trạng này, người ta gọi chồng chéo yêu cầu Nó làm nên hệ thống lộn xộn, khó bảo trì, phát triển, tính tiến hố bị ảnh hưởng Vì cần bổ sung thêm nghiệp vụ khác, bạn phải thay đổi tất yêu cầu nghiệp vụ liên quan Các đặc điểm AOP AOP xây dựng phương pháp lập trình OOP lập trình có cấu trúc , bổ sung khái niệm cấu trúc để module hoá quan hệ đan xen Với AOP, quan hệ sử dụng phương pháp bản, sử dụng OOP thực thi quan hệ hình thức lớp Các aspect hệ thống đóng gói quan hệ đan xen lại với Chúng qui định cách module khác gắn kết với để định hình lên hệ thống cuối Nền tảng AOP khác với OOP cách quản lý quan hệ đan xen.Việc thực thi quan hệ AOP bỏ qua hành vi tích hợp vào Ví dụ, bussiness module khơng quan tâm cần log xác thực Kết việc thực thi concern tiến triển cách độc lập LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 2.1 Quản lý concern hệ thống Concern yêu cầu cụ thể hay mối quan tâm đặc trưng xác định để thoả mãn mục tiêu chung hệ thống Hệ thống phần mềm gắn kết tập concern Ví dụ, hệ thống ngân hàng bao gồm concern sau đây: quản lý khách hàng quản lý tài khoản, giao dịch nội ngân hàng, giao dịch ATM, chăm sóc khách hàng, lưu giữ thực thể hệ thống, xác nhận truy cập dịch vụ, …Ngồi phần mềm cịn phải đảm bảo khả dễ hiểu, dễ bảo hành trì, dễ phát triển Concern chia làm hai loại Concern thành phần: Thể chức nội module Concern đan xen: Thể quan hệ ràng buộc module hệ thống Một ứng dụng doanh nghiệp điển hình bao gồm concern đan xen sau: authentication, logging, resource pooling, performance, storage management, data persistence, security, multithread safety, transaction integrity, error checking… Các concern phục vụ cho vài module Ví dụ, logging tác động tới tất module hệ thống, authencication tác động tới module có u cầu kiểm sốt truy cập Hình 1: Mơ hình concern mức hệ thống Việc xác định concern hệ thống, tập trung vào concern cách độc lập giảm độ phức tạp hệ thống LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 2: Mơ hình ánh xạ yêu cầu người dùng sử dụng AOP Hình 3: Mơ hình đa chiều phụ thuộc module với Các concern đan xen module, kỹ thuật thi công trộn chúng vào module Hình sau minh hoạ thực này: Với mơ hình biểu diễn nhiều chiều concern ánh xạ ngôn ngữ chiều sau LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com private WeakHashMap mappingColleagueToMediator = new WeakHashMap( ); private Mediator getMediator(Colleague colleague) { Mediator mediator = (Mediator) mappingColleagueToMediator.get(colleague); return mediator; } public void setMediator(Colleague c, Mediator m) { mappingColleagueToMediator.put(c, m); } protected abstract pointcut change(Colleague c); after(Colleague c) : change(c) { notifyMediator(c, getMediator(c)); } protected abstract void notifyMediator(Colleague c, Mediator m); } Ví dụ sử dụng Mediator pattern: public aspect DialogMediator extends MediatorPattern { declare parents : ListBox implements Colleague; declare parents : EntryField implements Mediator; protected pointcut change(Colleague c) : ( execution(void ListBox.setSelection( )) && this(c)); protected void notifyMediator(Colleague c, Mediator m) { ListBox listBox = (ListBox) c; EntryField entryField = (EntryField) m; entryField.setText(listBox.getSelection( )); } } LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 38: Trước sau áp dụng Mediator pattern 5.3.5 Chain of Responsibility Pattern Mẫu thiết kế có ý nghĩa tên gọi nó, sử dụng để hỗ trợ chuỗi hành động nối tiếp hệ thống Mỗi bước thực quản lý đối tượng chịu trách nhiệm phân công chức hệ thống Hình 39: Cấu trúc ChainOfResponsibilityPattern aspect public abstract aspect ChainOfResponsibilityPattern { protected interface Handler { } public WeakHashMap successors = new WeakHashMap( ); protected void receiveRequest(Handler handler, Object request) { if (handler.acceptRequest(request)) { handler.handleRequest(request); } else { // The handler will not accept the request Handler successor = getSuccessor(handler); if (successor == null) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com { // Last handler in the chain so must deal with the request // This is a rudimentary implementation and more complex // logic could be applied here or perhaps in the concrete // aspects that extend this abstract one handler.handleRequest(request); } else { // Hand the request on to the next successor in the chain receiveRequest(successor, request); } } } public boolean Handler.acceptRequest(Object request) { // The default as defined here is to reject the request // This is implemented by the application specific // concrete aspects return false; } public void Handler.handleRequest(Object request) { // A default empty implementation that is overridden // if required by the application specific concrete aspects } protected abstract pointcut eventTrigger(Handler handler, Object request); after(Handler handler, Object request) : eventTrigger(handler, request) { receiveRequest(handler, request); } public void setSuccessor(Handler handler, Handler successor) { successors.put(handler, successor); } public Handler getSuccessor(Handler handler) { return ((Handler) successors.get(handler)); } } LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Ví dụ sử dụng: Hình 40: Sau áp dụng ChainOfResponsibilityPattern public aspect HelpChain extends ChainOfResponsibilityPattern { declare parents : PrintButton implements Handler; declare parents : PrintDialog implements Handler; declare parents : Manager implements Handler; protected pointcut eventTrigger(Handler handler, Object event) : call(void PrintButton.doClick( )) && target(handler) && args(event); private boolean Handler.alreadyHandledRequest = false; public boolean Handler.acceptRequest(Object event) { return !this.alreadyHandledRequest; } public void PrintButton.handleRequest(Object event) { if (!this.acceptRequest(event)) { System.out.println( "PrintButton Forced to handle Request" + "due to being last in the chain (Implementation Decision)"); } System.out.println("PrintButton handling request: " + event); this.alreadyHandledRequest = true; } public void PrintDialog.handleRequest(Object event) { if (!this.acceptRequest(event)) { System.out.println( LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com "PrintDialog Forced to handle Request" + "due to being last in the chain (Implementation Decision)"); } System.out.println("PrintDialog handling request: " + event); this.alreadyHandledRequest = true; } public void Manager.handleRequest(Object event) { if (!this.acceptRequest(event)) { System.out.println( "Manager Forced to handle Request due to being" + "last in the chain (Implementation Decision)"); } System.out.println("Manager handling request: " + event); this.alreadyHandledRequest = true; } } Hình 41:Sử dụng ChainOfResponsibilityPattern ứng dụng 5.3.6 Memento Pattern Mẫu thiết kế cung cấp chế để trạng thái ban đầu đối tượng phục hồi sau thời gian mà không cần gắn với chế cụ thể trạng thái đối tượng thiết lập lại với đối tượng Memento đóng gói tất thơng tin cần thiết để phục hồi trạng thái nội trước đối tượng thời điểm muộn LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Khả sử dụng để áp dụng thao tác undo trạng thái đối tượng ứng dụng cụ thể public abstract aspect MementoPattern { public interface Memento { public void setState(Originator originator); public Object getState( ); } public interface Originator { public void setMemento(Memento memento); public Memento createMemento( ); public Object getState( ); } Hình 42: Cấu trúc MementoPattern aspect Ví dụ sử dụng Mememto: public aspect EmployeeMemento extends MementoPattern { declare parents : Employee implements Originator; public void Employee.setMemento(Memento memento) { Object object = memento.getState( ); Employee stateToRestore = (Employee) object; this.setName(stateToRestore.getName( )); this.setSalary(stateToRestore.getSalary( )); } public Memento Employee.createMemento( ) { Memento memento = new DefaultMemento( ); memento.setState(this); return memento; } public Object Employee.getState( ) throws MementoException { Employee employee = new Employee(this.getName( ), this.getSalary( )); return employee; } } LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 43: Sử dụng MementoPattern ứng dụng 5.3.7 Visitor Pattern Visitor Pattern mơ hình OOP sử dụng để thể hành động thực thành phần cấu trúc đối tượng Visitor cho phép định nghĩa thêm thao tác mà không cần thay đổi lớp thành phần mà thao tác Với mơ hình AOP, điều khơng thực có ý nghĩa chất AOP can thiệp vào cấu trúc hành vi đối tượng Hình 44: Cấu trúc Visitor pattern aspect public abstract aspect VisitorPattern { public interface Element { public void accept(Visitor visitor); } public interface CompositeElement extends Element { public Element[] getElements( ); } LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com public interface Result { } public interface Visitor { public void visitElement(Element element); public void visitComposite(CompositeElement element); public Result getResult( ); } public void CompositeElement.accept(Visitor visitor) { visitor.visitComposite(this); } public void Element.accept(Visitor visitor) { visitor.visitElement(this); } } Ví dụ sử dụng Visitor pattern: public aspect InventoryVisitor extends VisitorPattern { declare parents : FloppyDisk implements Element; declare parents : HardDisk implements Element; declare parents : Processor implements Element; declare parents : Computer implements CompositeElement; declare parents : Motherboard implements CompositeElement; declare parents : InventoryReport implements Result; public Element[] Computer.getElements( ) { Element[] elements = new Element[3]; elements[0] = this.getMotherboard( ); elements[1] = this.getHardDisk( ); elements[2] = this.getFloppyDisk( ); return elements; } public Element[] Motherboard.getElements( ) { Element[] elements = new Element[1]; elements[0] = this.getProcessor( ); return elements; } } Cấu trúc quan hệ thành phần Computeur LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 45: Cấu trúc Computeur Cấu trúc quan hệ thành phần Computeur sau áp dụng Visitor pattern Hình 46: Cấu trúc Computeur sau áp dụng Visitor pattern LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 47:Sử dụng VisitorPattern ứng dụng 5.3.8 Strategy pattern Strategy pattern cung cấp chế để tách biệt lớp client từ thi công chi tiết thuật tốn cụ thể chiến lược Thường tất lớp riêng rẽ mà thi cơng strategy thi công interface riêng phép client tách biệt với thi công khác public abstract aspect StrategyPattern { Hashtable strategyPerContext = new Hashtable( ); protected interface Strategy { } protected interface Context { } private Strategy Context.strategy = null; public void setConcreteStrategy(Context c, Strategy s) { strategyPerContext.put(c, s); } public Strategy getConcreteStrategy(Context c) { return (Strategy) strategyPerContext.get(c); } } LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 48:Cấu trúc StrategyPattern aspect Ví dụ áp dụng: public aspect SortingStrategy extends StrategyPattern { declare parents : Sorter implements Context; declare parents : LinearSorter implements Strategy; declare parents : BubbleSorter implements Strategy; int[] around(Sorter s, int[] numbers) : call(int[] Sorter.sort(int[])) && target(s) && args(numbers) { Strategy strategy = getConcreteStrategy(s); if (strategy instanceof BubbleSorter) ((BubbleSorter) strategy).sort(numbers); else if (strategy instanceof LinearSorter) ((LinearSorter) strategy).sort(numbers); return numbers; } } Hình 49: Cấu trúc lớp xếp chưa áp dụng StrategyPattern Hình 50: Cấu trúc lớp xếp sau áp dụng StrategyPattern LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hình 51: Sử dụng Strategy Pattern ứng dụng 5.3.9 State Pattern State Pattern cung cấp chế cho đối tượng biến đổi hành vi dựa trạng thái public aspect TCPConnectionState { protected TCPState listening = new TCPListen( ); protected TCPState acknowledged = new TCPAcknowledged( ); protected TCPState closed = new TCPClosed( ); after(TCPConnection connection) : initialization(new ( )) && target(connection) { listening.setConnection(new SocketConnection( )); connection.setState(listening); } after(TCPConnection connection, TCPState state) : call( void TCPState +.acknowledge( )) && target(state) && this(connection) { if (connection.getState( ) == listening) { acknowledged.setConnection(listening.getConnection( )); connection.setState(acknowledged); } } after(TCPConnection connection, TCPState state) : call( void TCPState +.close( )) && target(state) && this(connection) { if ((connection.getState( ) == listening) || (connection.getState( ) == acknowledged)) { connection.setState(closed); } LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com } } TCPConnectionState aspect cho thấy lớp TCPConnection lắng nghe tạo, báo phương thức acknowledge() gọi đóng phương thức close() gọi Hình 52: Sử dụng state pattern ứng dụng Kết luận AOP thực trở thành phương pháp luận cho ngành công nghệ phần mềm AOP đưa vào nhiều ngôn ngữ, thực tế AOP triểnkhai ứng dụng thương mại JBOSS application server phiên 4.0, Spring Framework đạt số kết ban đầu việc triển khai ứng dụng AOP cụ thể Điểm mạnh AOP xây dựng ứng dụng middleware bao gồm thao tác phức tạp security, tracing, loging, transaction Đặc biệt công nghệ Enterprise Java Bean Sun Microsystem, nhà phát triển lên kế hoạch đưa AOP vào đặc tả phiên EJB 3.0 AOP có phải cách mạng phương pháp lập trình hay khơng cịn phải chờ vào kết triển khai thực tế sản phẩm hỗ trợ AOP Do thời gian có hạn, đồ án mơn học vào khía cạnh ngôn ngữ việc xây dựng lại mẫu thiết kế (design pattern) mơ hình OOP chuyển sang mơ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com hình AOP, tận dụng đặc điểm AOP Đây bước quan trọng việc đưa AOP vào áp dụng ứng dụng cụ thể Trong thời gian tới, đồ án tiếp tục sâu việc triển khai ứng dụng cụ thể AOP, khó khăn thách thức cho phương pháp lập trình Chúng em xin chân thành cảm ơn Thầy giáo Huỳnh Quyết Thắng định hướng cung cấp kiến thức tài liệu báu để em hoàn thành tốt đồ án LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... dựng AOP 20 Giải toán với AOP 21 4.1 Sử dụng AOP bước thiết kế 21 4.2 Sử dụng AOP bước thi công 22 4.3 Sử dụng AOP bước kiếm tra 22 4.4 Sử dụng AOP. .. văn ? ?về vấn đề nghiên cứu ứng dụng AOP ngành công nghệ phần mềm Tài liệu nhằm mục đích tìm hiểu mơ hình AOP sâu trình bày kỹ thuật quan trọng ngành công nghệ phần mềm design pattern mơ hình AOP. .. 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 tốn theo cách tốt AOP khơng cứu

Ngày đăng: 01/11/2022, 15:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w