1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Đặc tả hình thức: Chương 6 - PGS.TS. Vũ Thanh Nguyên

22 64 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

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 579,94 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Đặc tả hình thức - Chương 6: Kiểu đối tượng phức bao gồm các nội dung: Định nghĩa kiểu đối tượng phức, khởi tạo đối tượng phức, ràng buộc trên kiểu dữ liệu, cập nhật đối tượng phức. Mời các bạn cùng tham khảo.

Trang 1

Chương 6: Kiểu đối tượng phức

PGS.TS Vũ Thanh Nguyên

Trường Đại học Công Nghệ Thông Tin, ĐHQG-HCM

Khoa Công Nghệ Phần Mềm

Trang 2

Nội dung

 Định nghĩa kiểu đối tượng phức

 Khởi tạo đối tượng phức

 Ràng buộc trên kiểu dữ liệu

 Cập nhật đối tượng phức

Trang 3

Đặc tả kiểu đối tượng phức

 Trong quá trình phát triển các ứng dụng, đối với các kiểu dữliệu được hỗ trợ trong hệ thống không đủ sức mạnh để chúng

Trang 4

Đặc tả kiểu đối tượng phức

Trang 5

Đặc tả kiểu đối tượng phức

 Ở đó:

ký hiệu :: có thể được đọc là ”is composed of” mà có thể

định nghĩa tương đương 2 khả năng sau:

Name :: …

Name = compose Name of … end

Lưu ý: ký hiệu :: thường được sử dụng hơn so với compose

Trang 6

Đặc tả kiểu đối tượng phức

 Ví dụ: xác đinh kiẻu dữ liệu Datec

Trang 7

Đặc tả kiểu đối tượng phức

 Ví dụ: xác đinh kiẻu dữ liệu Fahrenheit và Celsius

Fahrenheit = compose Fahrenheit of

v : R

end hay

Celsius = compose Celsius of

v : R

end

Trang 8

Đặc tả kiểu đối tượng phức

 Ví dụ:

Phân-số ::

tử-số : ℤ

mẫu-số : ℤ hoặc

Phân-số = compose Phân-số of

tử-số : ℤ

mẫu-số : ℤ end

Trang 9

Đặc tả kiểu đối tượng phức

 Ví dụ:

Khách-hàng ::

họ-tên : String

địa-chỉ : String điện-thoại: String hoặc

Khách-hàng = compose Khách-hàng of

họ-tên : String

địa-chỉ : String điện-thoại: String end

Trang 10

Đặc tả kiểu đối tượng phức

Trang 11

Đặc tả kiểu đối tượng phức

tâm : Điểm bán-kính :

Trang 12

Tạo đối tượng phức

 Hàm mk-TênKiểuĐốiTượngPhức dùng để tạo đối tượng phứcthuộc kiểu tương ứng

 Ví dụ:

mk-Phân-số: ℤ  ℤ  Phân-số

mk-Phân-số (5, 10) sẽ tạo ra 1 đối tượng phân số có tử-số là 5

và mẫu-số là 10 Điểm

Trang 13

Tạo đối tượng phức

 Ví dụ:

mk-Điểm: ℝ  ℝ  Điểm

mk-Tam-giác: Điểm Điểm Điểm Tam-giác

mk-Tam-giác (mk-Điểm(0,0), mk-Điểm (1,0), mk-Điểm(0, 1))

sẽ tạo ra tam giác có các điểm là A(0,0), B(1, 0) và C(0,1)

mk-Hình-tròn: Điểm  ℝ  Hình-tròn

mk-Hình-tròn (mk-Điểm(100,100), 200) sẽ tạo ra 1 đối tượng

hình tròn có tâm (100,100) và bán kính 200

Trang 14

Ràng buộc trên kiểu dữ liệu

 Ràng buộc trên kiểu dữ liệu

 Điều kiện về miền giá trị của các thuộc tính trong kiểu dữliệu

 Điều kiện về mối liên quan về giá trị của các thuộc tínhtrong kiểu dữ liệu

 Ví dụ: mk-Date (29, 2, 2007) !!!

 Ràng buộc trên kiểu dữ liệu

 Tính chất bất biến (invariant) trên các thuộc tính nhằm đảmbảo tính hợp lệ của thông tin trong đối tượng

Trang 15

Ràng buộc trên kiểu dữ liệu

 Hàm kiểm tra ràng buộc trên kiểu dữ liệu

Trang 16

Ràng buộc trên kiểu dữ liệu

 Ví dụ: cho kiểu dữ liệu Mảng-tăng

Mảng-tăng ::

ds : ℝ*

số-pt : ℕ

Ràng buộc: mảng có tối đa 1000 phần tử, các phần tử trong ds

luôn có thứ tự tăng và số-pt bằng đúng với số phần tử trong ds

inv-Mảng-tăng : Mảng-tăngB

inv-Mảng-tăng (m)

let s = m.ds, n = m.số-pt in len s1000

i, jinds si > js(i) s(j)

n = len s

Trang 17

Ràng buộc trên kiểu dữ liệu

 Ví dụ: cho kiểu dữ liệu Mảng-tăng

Mảng-tăng ::

ds : ℝ*

số-pt-không-âm-phân-biệt : ℕ Ràng buộc: các phần tử trong ds luôn có thứ tự tăng và số-pt-

không-âm-phân-biệt là số lượng các phần tử không âm phân

Trang 18

Cập nhật đối tượng phức

 Phương án 1: Tạo ra đối tượng mới với các thông tin mới cậpnhật và các thông tin sẵn có

 Ví dụ: d = mk-Date (1, d.month, d.year) sẽ cập nhật lại giá trị

ngày là 1, vẫn giữa nguyên giá trị tháng và năm

 Phương án 2: sử dụng hàm  để cập nhật thuộc tính trong đốitượng phức

 Ví dụ: d = (d, date ↦ 1) sẽ cập nhật lại giá trị ngày là 1, vẫn

giữa nguyên giá trị tháng và năm

Trang 19

let tử-số-cũ = ps.tử-số, mẫu-số-cũ = ps.mẫu-số in

let u = uscln (tử-số-cũ, mẫu-số-cũ) in

let tử-số-mới = tử-số-cũ / u, mẫu-số-mới = mẫu-số-cũ / u in

ps = mk-Phân-số (tử-số-mới, mẫu-số-mới)

Trang 20

let tử-số-cũ = ps.tử-số, mẫu-số-cũ = ps.mẫu-số in

let u = uscln (tử-số-cũ, mẫu-số-cũ) in

let tử-số-mới = tử-số-cũ / u, mẫu-số-mới = mẫu-số-cũ / u in

ps = (ps, tử-số ↦ tử-số-mới, mẫu-số ↦ mẫu-số-mới)

Trang 21

Cập nhật đối tượng phức

 Ví dụ: Sơ đồ của phép toán Datec

Ngày đăng: 11/01/2020, 18:52

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm