Slide 1 * TS Vũ Thanh Nguyên * Chương 6 Kiểu đối tượng phức 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 TS Vũ Thanh Nguyên * * TS Vũ Thanh Nguyên * 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 TS Vũ Thanh Nguyên * TS Vũ Thanh Nguyên * Đặc tả kiểu đối tượng phức Cú pháp Tên kiểu đối tượng phức Tên field1 Kiểu1 Tên field2 Kiểu2 Tên fieldn Kiểun TS Vũ Thanh Nguyên * TS Vũ Thanh Nguyên[.]
Trang 1Chương 6: Kiểu đối tượng phức
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 2Nộ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
Cú pháp:
Tên-kiểu-đối-tượng-phức ::
Tên-field1 : Kiểu1Tên-field2 : Kiểu2
…
Tên-field n: Kiểu n
Trang 4Đặ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 5Đặc tả kiểu đối tượng phức
Ví dụ: xác đinh kiẻu dữ liệu Datec
Trang 6Đặ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 7Đặ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 8Đặc tả kiểu đối tượng phức
Trang 9Đặc tả kiểu đối tượng phức
Trang 10Đặc tả kiểu đối tượng phức
Ví dụ:
Điểm ::
x : ℝ
y : ℝ Tam-giác ::
A : Điểm
B : Điểm
C : Điểm Hình-tròn ::
tâm : Điểm bán-kính : ℝ
Trang 11Tạo đối tượng phức
Hàm mk-TênKiểuĐốiTượngPhức dùng để tạo đối tượng phức thuộ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 12Tạ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 13Rà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ính
trong 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 đảm bảo tính hợp lệ của thông tin trong đối tượng
Trang 14Rà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 15Rà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ăng B
inv-Mảng-tăng (m) ≜
let s = m.ds, n = m.số-pt in
len s 1000
Trang 16Rà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 biệt trong ds
let s = m.ds, n = m.số-pt in
i, j inds s i > j s(i) s(j)
Trang 17Cậ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ập nhậ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 đối tượ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 18let 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 19let 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 20Cập nhật đối tượng phức
Ví dụ: Sơ đồ của phép toán Datec