« Home « Kết quả tìm kiếm

ỨNG DỤNG RELATIONAL INTERFACE CHO JAVA


Tóm tắt Xem thử

- Một interface có thể được xem như là một bản tóm tắt, một đại diện của thành phần: giữ lại các thông tin cần thiết của thành phần, giấu thông tin không cần thiết và làm cho mô tả thành phần trở nên đơn giản và hiệu quả hơn..
- Để từ đó, ta có thể biết được khả năng kết hợp của các thành phần này với nhau.
- Qua đó, ta cũng có thể dự đoán được giá trị đầu ra của các thành phần nếu biết được giá trị đầu vào thông qua các tính chất..
- Relational interface.
- Kết hợp.
- Thực hiện việc kết hợp tự động.
- Kết hợp các interface.
- Định dạng có thể hoàn chỉnh Interface.
- Một interface có thể coi như một đặc tả của một thành phần.
- Việc xây dựng thành phần có thể bằng bất cứ phương pháp nào dù là lập trình cấu trúc hay lập trình hướng đối tượng.
- Các phương pháp hình thức đặc biệt hiệu quả trong các giai đoạn đầu của quá trình xây dựng hệ thống (thường ở giai đoạn xác định yêu cầu và đặc tả hệ thống), tuy nhiên, chúng cũng có thể được dùng trong toàn bộ quy trình phát triển hệ thống.
- Các phương pháp hình thức có thể được xếp loại theo 3 mức độ như sau: Mức 0: Đặc tả hình thức được sử dụng để đặc tả hệ thống trước khi phát triển nó.
- Mức 1: Phát triển và kiểm chứng hình thức có thể được áp dụng để tạo ra một chương trình (hay một hệ thống) một cách tự động, dựa trên các đặc tả hình thức đã có trước đó.
- Việc mô tả này có thể ở mức độ khái quát, nhưng cũng có thể là những mô tả ở mức độ hết sức chi tiết.
- Có thể xử lý bởi máy tính.
- Ngay khi các giao diện được định nghĩa và chấp nhận, các hệ thống nhỏ có thể được phát triển độc lập.
- Chúng mô tả dữ liệu và những hoạt động mà có thể được truy cập thông qua giao diện của các hệ thống nhỏ.
- Do đó, một đặc tả giao diện của hệ thống nhỏ có thể được tạo nên bằng cách kết hợp đặc tả của các thành phần được tạo nên bởi các giao diện hệ thống nhỏ [3]..
- Một khối có thể trình bày một thành phần vật lý hoặc logic, ví dụ như một phần của phần cứng hoặc phần mềm.
- Các mô tả của interface cũng có thể là chi tiết nhiều hoặc ít, nhưng chúng phải bao gồm đầy đủ thông tin để xác định các thành phần cơ sở được kết hợp và liên kết như thế nào.
- Các nhà thiết kế thành phần thường tạo nên các giả định về môi trường mà trong đó một thành phần có thể được triển khai [5].
- Interface automata: có thể được sử dụng để bắt các mối quan hệ giữa input – output trong mô hình song song không đồng bộ và trong hầu hết các kiểu thực thi [4]..
- Việc kết hợp tổng quát các interfaces, có thể đạt được thông qua hai toán tử có tên là parallel conposition ( kết hợp song song ) và connection ( kết nối ) [5],[6].
- Stateful interface, một ràng buộc có thể khác nhau tại mỗi trạng thái khác nhau.
- Stateless interface có thể được xem như một trường hợp đặc biệt của stateful interface khi ràng buộc là giống nhau ở tất cả các trạng thái.
- Với well-formed interface, các ràng buộc luôn luôn được thỏa mãn tại mọi trạng thái có thể đạt được (reachable state).
- Well-formable interface không nhất thiết phải là well-formed, nhưng mà có thể được chuyển thành well-formed bằng cách hạn chế một cách hợp lý các input.
- 1.6.5 Relational interface.
- Interface cho mỗi thành phần có thể được mô tả như là một quan hệ nhị phân giữa input và output: các relation chứa tất cả các cặp (n, n+1) với n ≥ 0.
- Mỗi một relation có thể được hiểu như một ràng buộc giữa thành phần và môi trường ( environment ) của nó: ràng buộc chỉ ra rằng với mỗi input hợp lệ, thoải mãn điều kiện mà môi trường cung cấp cho thành phần thì sẽ có nhưng output hợp lệ được tạo ra từ thành phần đó.
- Ngoài ra, lý thuyết về composition (kết hợp), connection (kết nối), feedback loop (phản hồi lặp) có trong relational interface có thể dẫn tới những khẳ năng:.
- Thiết kế phần mềm dựa trên relational interface là sự kết hợp giữa các interface mà trong đó, các ràng buộc phải được thỏa mãn, hoặc có thể thỏa mãn.
- Ta cũng có thể kiểm chứng và dự đoán được khả năng kết hợp của các interface lại với nhau.
- Ngoài ra, dựa trên các rằng buộc, ta cũng có thể dự đoán được kết quả đầu ra từ dữ liệu đầu vào.
- Điều này giúp cho các thành phần, hay nói đúng hơn là các relational interface được liên kết hay có thể liên kết được với nhau..
- Chúng ta hoàn toàn có thể giả định rằng tất cả các biến là kiểu, có nghĩa là tất cả các biến được kết hợp với một tập xác định nào đó.
- Chú ý rằng X hoặc Y có thể là rỗng: nếu X là rỗng thì I là interface nguồn, nếu Y là rỗng thì I là một bộ chứa (sink).
- Với một interface phi trạng thái, ta có thể coi ξ như là một thuộc tính, thay vì một hàm ánh xạ các trạng thái tới các thuộc tính.
- Chúng ta có thể biểu diễn thành phần này theo nhiều cách khác nhau.
- Một interface phi trạng thái có thể khác của thành phần này là: I2 ≔ ({x}, {y.
- Ví dụ ξ có thể được chỉ ra bởi một máy tự động hữu hạn các trạng thái.
- Một interface có thể được chỉ rõ như một máy tự động hữu hạn trạng thái được gọi là một interface hữu hạn trạng thái (finite-state interface).
- Interface này có thể được biểu diễn đơn giản như là một relational interface (X, Y, ϕx ∧ ϕy).
- Mặt khác, nhìn chung không phải tất cả các trạng thái có thể đạt được (reachable), vì không phải các input hoặc output là hợp lệ.
- Chúng ta có thể quan tâm đến các trạng thái với những ràng buộc không thể thỏa mãn khi mà các trạng thái này là có thể đạt được.
- Một trạng thái là có thể đạt được nếu nó là một “run”.
- Tập tất cả các trạng thái có thể đạt được của I được kí hiệu rồi ℛ(I), với mọi I.
- Một interface I = (X, Y, ξ) được coi là well-formed nếu tất cả s ∈ ℛ(I), ξ(s) là có thể thể thoả mãn.
- I không là well-formed, vì nó có những trạng thái có thể đạt được với ràng buộc là false ( tất cả các trạng thái bắt đầu với x là true).
- I có thể được chuyển đổi sang một well-formed interface bằng cách hạn chế ξ(ε) để tránh được những trạng thái có thể đạt được với những ràng buộc không thể thỏa mãn.
- Ví dụ 2 chỉ ra rằng một số interface mặc dù không là well-formed vẫn có thể được chuyển thành well-formed interface bằng cách hạn chế hợp lý các dữ liệu input.
- Chúng ta định nghĩa tập hợp tất cả các trạng thái có thể đạt được của một môi trường E, kí hiệu là ℛ(E), theo cách tương tự như đối với interface: ε ∈ ℛ(E), và s ∙ a ∈ ℛ(E) nếu s ∈ ℛ(E) và a = (aX, aY) là một phép gán để aX ⊨ hX(s) và aY ⊨ hY(s).
- Một môi trường E được coi là “live” nếu với mọi s ∈ ℛ(E), cả hX(s) và hY(s) là có thể thỏa mãn.
- Định nghĩa 8 (Khả năng lắp ghép): Interface I = (X’, Y’, ξ) có thể ghép vào với môi trường E = (X, Y, hX, hY), được kí hiệu I ⊨ E, nếu X.
- hX(s), với tất cả s ∈ 𝒜(X ∪ Y)* (3) Khả năng lắp ghép có thể được nhìn nhận một cách trực quan như là một trò chơi giữa interface và môi trường.
- Có thể thấy rằng cả I1 và I2 có thể lắp ghép với E2 ≔ ({x}, {y}, x ≥ 0, y > 0): ràng buộc x ≥ 0 không đủ mạnh để đạt giả thiết input x > 0.
- Interface IE được định nghĩa từ (2) và (3) có mục đích là chụp lấy trạng thái có thể đạt được của việc tổ hợp vòng lặp khép kín của E và I.
- Những trạng thái có thể đạt được này là tập con của các trạng thái có thể đạt được của I, bởi vì nhìn chung môi trường E chỉ có thể cung cấp một tập bị hạn chế các input, trong số tất cả các input hợp lệ với I.
- Bổ đề sau đây chỉ ra rằng trạng thái có thể đạt được của IE đúng là một tập con của các trạng thái có thể đạt được của I.
- Vì well-formed có hàm ý là well-formable, nên hệ quả của định lý 2 là mọi interface là well-formed có thể được ghép với một vài môi trường thực.
- Chú ý rằng tồn tại những interface không là well-formed tuy nhiên lại có thể ghép được với những môi trường thực: những môi trường thực này hạn chế input, nên không bao giờ đạt được các trạng thái với những ràng buộc không thể thỏa mãn.
- Các interface này có thể được ghép vào các môi trường không thực ít quan trọng mà dừng ngay lập tức.
- Định nghĩa 9 (Môi trường W.R.T tương đương): 2 interface I và I’ là 2 môi trường w.r.t tương đương, kí hiệu là I ≡E I’, nếu với bất kì môi trường E nào, I có thể ghép được với E nếu I’ có thể ghép được với E.
- 1.10 Kết hợp.
- Thứ nhất, chúng ta có thể kết hợp 2 interface I1 và I2 bằng cách kết nối một vài các biến ra vào của I1 với một vài các biến input của I2.
- Một output có thể được kết nối với một vài input, nhưng một input có thể được kết nối với nhiều nhất một output.
- Sau đó, quá trình kết hợp có thể được lặp lại để tạo nên những sơ đồ interface tùy ý.
- Và việc kết hợp này có thể được xem như là một kết hợp song song của 2 interface.
- Ta có thể kì vọng ràng buộc của việc kết hợp song song tại một trạng thái toàn cục cho trước là một phép hợp của các ràng buộc gốc tại trạng thái cục bộ tương ứng, điều này hàm ý rằng việc kết hợp song song có tính giao hoán.
- Sơ đồ này có thể được xem như là phép kết hợp tương đương:.
- Các liên kết này có thể chụp được kết hợp nối tiếp nhưng không thể chụp được feekback ( phản hồi.
- Một interface là Moore đối với một biến input cho trước x có nghĩa là ràng buộc này có thể phụ thuộc vào trạng thái hiện tại và phụ thuộc vào các biến input khác hơn là phụ thuộc vào x.
- Sơ đồ này có thể được diễn giải như là phép kết hợp.
- If không là well-formed bởi vì ϕ1 là không thỏa mãn, trong khi trạng thái s1 có thể đạt được.
- Một lớp có thể được hiểu là khuôn mẫu để tạo ra các đối tượng.
- Khi đã định nghĩa được lớp, ta có thể tạo ra các đối tượng từ lớp này.
- Khi thiết kế, người ta có thể dùng các phương thức để mô tả và thực hiện các hành vi của đối tượng.
- Khi thực hiện hành vi này, đối tượng có thể phải thực hiện các hành vi khác.
- Cho nên một phương thức trong một lớp có thể sử dụng phương thức khác trong quá trình thực hiện hành vi của mình..
- Ở đây, vai trò quan trọng nhất của các thuộc tính là các biến vì chúng sẽ có thể bị thay đổi trong suốt quá trình hoạt động của một đối tượng.
- Các thuộc tính có thể được xác định kiểu và kiểu của chúng có thể là các kiểu dữ liệu cổ điển hay đó là một lớp đã định nghĩa từ trước..
- Như đã nói ở trên, trong mỗi một phương thức hay một lớp của ngôn ngữ lập trình hướng đối tượng, ta có thể coi nó như là một thành phần.
- Một thành phần có thể được tạo lập bằng một tập hợp của các thành phần con.
- Từ một thành phần (phương thức, lớp) ta có thể trích rút các input – các tham số, các quan hệ và các output chính là các giá trị trả về.
- Như vậy, với mỗi một phương thức ta có thể có một relational interface đại diện cho nó.
- Từ đó, với mỗi input, ta có thể dự đoán được output một cách đơn giản và hiệu quả thông qua các ràng buộc..
- Từ định nghĩa 4 và 5, tính chất well-formed và well-formable chỉ ra rằng ràng buộc ξ được thỏa mãn hay có thể được thỏa mãn.
- Và một relational interface với ràng buộc có thể được thỏa mãn được phép hạn chế tính chất đầu vào để thu được ràng buộc được thỏa mãn, tức là tìm được output.
- Nếu ràng buộc ξ mới này là được thỏa mãn thì 2 interface có thể kết hợp với nhau mà vẫn thu được output..
- Tuyển sơ cấp là tuyển của các biến mệnh đề X, Y, Z, ¬X, ¬Y, ¬Z (có thể có cả chỉ số nữa.
- Sau khi nghiên cứu về relational interface, tôi nhận thấy rằng hoàn toàn có thể áp dụng được lý thuyết này cho những thành phần (phương thức, lớp) của một ngôn ngữ lập trình hướng đối tượng.
- Ngoài ra, ta còn có thể biết được khả năng kết hợp, và các tính chất sau khi kết hợp giữa các thành phần thông qua việc kết hợp các interface là đại diện của chúng.
- Thông qua những interface này, ta còn có thể dự đoán được chính xác giá trị đầu ra của thành phần, nếu như biết trước giá trị đầu vào.
- Như vậy nếu ta coi mỗi một phương thức của một lớp là một thành phần, thì ta hoàn toàn có thể đưa ra được relational interface đại diện cho thành phần này, với input là tập tham chiếu truyền vào, output là tập giá trị trả về, và ξ chính là nội dung của của phương thức.
- 1.14.1 Lớp SourceFormat.java Lớp SourceFormat.java cho phép ta có thể đọc những file.java và đưa chúng về một định dạng chuẩn.
- Hình 5.2: Minh họa cách cài đặt thư viện (1) Hình 5.3: Minh họa cách cài đặt thư viện (2) Sau khi tiến hành cài đặt thư viện vào một project (dự án) mới, ta có thể sử dụng các hàm, lớp mà công cụ này đã cung cấp để giải quyết bài toán..
- Như vậy, thông qua interface sau khi kết hợp, ta có thể dự đoán chính xác được kết quả trả về của việc kết hợp các thành phần, vì interface mới tạo ra vẫn giữ nguyên được các tính chất của interface thành phần..
- Với công cụ này, ta có thể tiến hành xem xét các khả năng kết hợp giữa các thành phần, cụ thể là các phương thức trong file mã nguồn java.
- Tôi sẽ phát triển tiếp để công cụ có thể bắt được những ràng buộc, quan hệ đặc trưng của thành phần có trong file mã nguồn với cấu trúc phức tạp.
- Ngoài ra việc dữ liệu đầu vào có thể được mở rộng với mã nguồn của một vài ngôn ngữ lập trình khác.