Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C# require not_empty: not empty -- . count 0 do Result := representation @ count end feature – Status report empty: BOOLEAN is -- Kiểm tra Stack rỗng? do Result := (count = 0) ensure empty_definition: Result = (count = 0) end full: BOOLEAN is -- Kiểm tra Stack đầy? do Result := (count = capacity) ensure full_definition: Result = (count = capacity) end feature – Element change put (x: G) is -- Thêm phần tử x vào Stack. require not_full: not full . count. | Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C require not_empty not empty -- . count 0 do Result representation @ count end feature - Status report empty BOOLEAN is -- Kiểm tra Stack rỗng do Result - count 0 ensure empty_definition Result count 0 end full BOOLEAN is -- Kiểm tra Stack đầy do Result count capacity w -. ensure full_definition Result count capacity end feature - Element change put x G is -- Thêm phần tử x vào Stack. require not_full not full . count capacity in Ễ this representation count count 1 representation . put count x ensure not_empty not empty added_to_top item x 37 Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C one_more_item count old count 1 in_top_array_entry representation@ count x end remove is . Xóa phần tư trên cùng - . cua Stack. require not_empty not empty. -- - . count 0 do count . 1 ensure not_full not full . one_fewer count old count - 1 end feature NONE -- Implementation representation ARRAY G -- Mang dùng đê chứa các phần tư cua Stack invariant . Sẽ tìm hiêu trong phần sau end -- class STACK2 - Phần biểu diễn về lớp ở trên cho ta thấy sự đơn giản khi làm việc với những xác nhận. Ngoại trừ mệnh đề invariant còn thiếu sẽ được bổ sung trong phần sau chúng ta hãy cùng nhau xem xét tỉ mỉ những thuộc tính khác nhau của nó. . Mệnh lệnh và yêu cầu Những xác nhận trong lớp STACK2 minh họa một khái niệm cơ bản mà ta đã có cái nhìn lướt qua về sự chuyển tiếp từ những kiểu dữ liệu trừu tượng sang những lớp sự khác nhau giữa những khung nhìn imperative và applicative . Những xác nhận trong empty và full có thể làm bạn băn khoăn. Xét thủ tục full trong lớp trên 38 Tìm hiểu công nghệ Design By Contract và Xây dựng công cụ hỗ trợ cho C full BOOLEAN is Stack có đầy không . do Result count capacity 1 ensure full_definition Result - count t capacity end Hậu điều kiện yêu cầu rằng thực thể Result có giá trị luận lý bằng với giá trị của biểu thức count capacity. Điều đó có nghĩa