Danh mục

TÌM HIỂU CÔNG NGHỆ DESIGN BY CONTRACT VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ CHO C# - 6

Số trang: 12      Loại file: pdf      Dung lượng: 564.32 KB      Lượt xem: 14      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# trong giới hạn cho phép. Điều kiện bất biến biểu diễn mối quan hệ giữa count, lower và upper; nó cho phép count được cài đặt như một hàm chứ không phải một thuộc tính. indexing description: "Mảng giá trị cùng kiểu, truy xuất các phần tử thông qua các chỉ số mảng" class ARRAY [G] creation make feature -- Khởi tạo make (minindex, maxindex: INTEGER) is -- Xác định 2 biên của mảng với minidex và maxindex -- Mảng rỗng nếu minindex maxindex. require meaningful_bounds: maxindex...
Nội dung trích xuất từ tài liệu:
TÌM HIỂU CÔNG NGHỆ DESIGN BY CONTRACT VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ CHO C# - 6 Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# trong giới hạn cho phép. Điều kiện bất biến biểu diễn mối quan hệ giữa count, lower và upper; nó cho phép count được cài đặt như một hàm chứ không phải một thuộc tính. indexing description: 'Mảng giá trị cùng kiểu, truy xuất các phần tử thông qua các chỉ số mảng' class ARRAY [G] creation make feature -- Khởi tạo make (minindex, maxindex: INTEGER) is -- Xác định 2 biên của mảng với minidex và maxindex -- Mảng rỗng nếu minindex > maxindex. require meaningful_bounds: maxindex >= minindex - 1 do … ensure exact_bounds_if_non_empty: (maxindex >= minindex) implies ((lower = minindex) and (upper = maxindex)) conventions_if_empty: (maxindex < minindex) implies ((lower = 1) and (upper = 0)) end feature – Truy cập lower, upper, count: INTEGER -- Chỉ số cao nhất vào thấp nhất hợp lệ; kích thước mảng. infix '@', item (i: INTEGER): G is -- Giá trị mảng tại chỉ số i 61 Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# require index_not_too_small: lower Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Danh sách các hàm với những ký hiệu của chúng (phần − FUNCTIONS) Tiên đề (AXIOMS) mô tả những thuộc tính của kết quả − Những quy định để sử dụng được hàm (phần PRECONDITIONS) − Ví dụ: ADT của lớp STACK TYPES • STACK [G] FUNCTIONS • put: STACK [G] × G → STACK [G] • remove: STACK [G] →STACK [G] • item: STACK [G] → G • empty: STACK [G] → BOOLEAN • new: STACK [G] AXIOMS For any x: G, s: STACK [G] A1 • item (put (s, x)) = x A2 • remove (put (s, x)) = s A3 • empty (new) A4 • not empty (put (s, x)) PRECONDITIONS • remove (s: STACK [G]) require not empty (s) • item (s: STACK [G]) require not empty (s) 11.1. So sánh đặc tính của lớp với những hàm ADT Để hiểu được mối liên hệ giữa những xác nhận và ADT, trước tiên ta cần tìm hiểu mối liên hệ giữa những đặc tính của lớp và phần tương ứng của ADT – những hàm của ADT. Những hàm này gồm 3 loại: creator, query và command. 63 Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Sự phân loại của một hàm f: A × B × … X phụ thuộc vào vị trí xuất hiện của ADT (A, B, …, X) so với mũi tên , gọi là T . Nếu T chỉ xuất hiện ở bên phải của mũi tên thì f là hàm creator. Trong lớp đối tượng, nó là phương thức khởi tạo. Ví dụ: hàm new Nếu T chỉ có mặt ở bên trái của mũi tên thì f là hàm query. Trong lớp đối tượng, nó là những phương thức truy xuất đến những thuộc tính của các thể hiện của một lớp. Ví dụ: hàm item và empty. Nếu T xuất hiện ở cả 2 bên mũi tên thì f là hàm command. Những hàm này tạo ra những đối tượng mới từ những đối tượng đã có. Trong lớp đối tượng, những hàm này thường được biểu diễn như một phương thức để làm thay đổi một đối tượng hơn là tạo ra một đối tượng mới. Ví dụ hàm put và remove. 11.2. Biểu diễn những tiên đề Từ sự tương ứng giữa những hàm ADT và những đặc tính của lớp, ta có thể suy ra sự tương ứng giữa ngữ nghĩa thuộc tính ADT và những xác nhận. Tiền điều kiện của ADT xuất hiện lại như những mệnh đề tiền điều kiện (precondition clauses) của các thủ tục tương ứng. Một tiên đề, bao gồm một hàm command và một hay nhiều hàm query, xuất hiện lại như những mệnh đề hậu điều kiện (postcondition clauses) trong những thủ tục tương ứng. Những tiên đề chỉ bao gồm những hàm query xuất hiện lại như những hậu điều kiện của những hàm tương ứng hoặc những mệnh đề của điều kiện bất biến. Tiên đề bao gồm những hàm khởi tạo xuất hiện lại trong hậu điều kiện của những thủ tục khởi tạo tương ứng. 64 Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# 11.3. Hàm trừu tượng Hình 11-1: Sự biến đổi giữa những đối tượng trừu tượng và cụ thể A là một ADT và C là một lớp được cài đặt từ A. Lúc này tương ứng với hàm trừu tượng af của A sẽ có hàm cụ thể cf trong lớp C. Mũi tên a mô tả cho sự trừu tượng hóa hàm, với mỗi đối tượng cụ thể (thể hiện của lớp), sự trừu tượng hoá này sẽ sinh ta một đối tượng trừu tượng (thể hiện của ADT). Những hàm trừu tượng này thường là từng phần. Sự tương ứng giữa lớp và ADT (cf ; a) = (a ; af) Trong đó dấu “;” là toán tử kết hợp giữa các hàm. Nói cách khác, nếu ta có hai hàm f và g thì f;g là hàm h sao cho h(x) = g(f(x)) với mọi x (f;g còn được viết dưới dạng g o f ) 65 Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# Hai đường đứt khúc cùng chỉ đến đối tượng trừu tượng ABST_2. Kết quả vẫn như nhau ngay cả khi bạn: - Áp dụng sự biến đối cụ thể cf, sau đó trừu tượng hóa kết quả, sinh ra a(cf(CONC_1)). - Trừu tượng hóa trước, sau đó áp dụng sự biến đổi trừu tượng af, sinh ra af(a(CONC_1)). 11.4. Cài đặt nh ...

Tài liệu được xem nhiều: