Bài giảng Đặc tả hình thức - Chương 7: Kiểu ánh xạ cung cấp cho người học các kiến thức: Ánh xạ, các hàm và thao tác trên ánh xạ, đặc tả sử dụng ánh xạ. Mời các bạn cùng tham khảo nội dung chi tiết.
Trường Đại học Công Nghệ Thông Tin, ĐHQG-HCM Khoa Công Nghệ Phần Mềm Chương Kiểu ánh xạ PGS.TS Vũ Thanh Nguyên 4/5/2019 PGS.TS Vu Thanh Nguyen CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Ánh xạ Các hàm thao tác ánh xạ Đặc tả sử dụng ánh xạ 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Kiểu ánh xạ Ví dụ: { “TH301” ↦ “Đặc tả hình thức”, “TH402” ↦ “Cơng cụ Mơi trường phát triển phần mềm”, “TH403” ↦ “Xây dựng phần mềm hướng đối tượng”, …} 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Kiểu ánh xạ Nhắc lại: Tích Descarte: A B = {(a, b) | (a A) (b B)} Ánh xạ tích Descarte: Cho A = {a1, a2, a3, a4, …}, B = {b1, b2, b3, …} {(a1, b1), (a2, b2), (a3, b1), (a4, b3)} A B Khi đó, ta có ánh xạ từ A vào B sau: {a1↦ b1, a2 ↦ b2, a3 ↦ b1, a4 ↦ b3} 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Kiểu ánh xạ 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Ánh xạ Đơn ánh: Mỗi phần tử tập nguồn tương ứng với tối đa phần tử (ảnh) tập đích Tồn ánh: Mỗi phần tử tập nguồn có ảnh tập đích Song ánh: Mỗi phần tử tập đích có tiền ảnh tập nguồn Tập nguồn Tập đích Ảnh Tiền ảnh 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Định nghĩa kiểu ánh xạ m Định nghĩa kiểu ánh xạ: A B Ví dụ 1: m f:ℤ ℤ Ví dụ 2: Acc-system:: m custs: Name Acc-no m Account accs: Acc-no Ví dụ 3: m thuộc-khoa: SINH-VIÊN KHOA Ví dụ 4: phân-cơng: NHÂN-VIÊN m PHÒNG-BAN 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Định nghĩa ánh xạ Định nghĩa ánh xạ thơng qua tính chất: {x ↦ y | Vị từ liên quan đến x y} Ví dụ: {p ↦ q | (p = q = TRUE) (p = q = FALSE)} {1 ↦ TRUE, ↦ FALSE} 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Hàm thao tác ánh xạ Hàm Domain (dom) m dom: A B A-set dom(m) ≝ { a | b B ( (a ↦ b) m)} Ý nghĩa: tập phần tử tập nguồn A có ảnh tập đích B Hàm Range (rng) m rng: A B B-set rng (m) ≝ { b | a A ( (a ↦ b) m)} Ý nghĩa: tập phần tử tập đích B có tiền ảnh tập nguồn A 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt Hàm thao tác ánh xạ Ví dụ: vowel {„A‟ ↦ 65, „E‟ ↦ 69, „I‟ ↦ 73, „O‟ ↦ 79, „U‟ ↦ 85} dom (vowel) = {„A‟, „E‟, „I‟, „O‟, „U‟} rng (vowel) = {65, 69, 73, 79, 85} vowel(„A‟) = 65 vowel(„U‟) = 85 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 10 Toán tử cập nhật † Cho m n ánh xạ kiểu m _†_ : A B m† n ≝ Am B A m B {a↦b| (( a dom n) (b = n(a))) ((a (dom m – dom n)) (b = m(a))} {a↦ (if a dom n then n(a) else m(a) | a (dom m dom n) } 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 11 Toán tử cập nhật † Kết m † n tập hợp tất n m khơng có tiền ảnh/khóa dom(n) Ví dụ: { ↦ 4, ↦ 3} † {3 ↦ 5, ↦ 2} = {1 ↦2, ↦ 4, ↦ 5} { ↦ 5, ↦ 2} † {2 ↦ 4, ↦ 3} = {1 ↦3, ↦ 4, ↦ 5} 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 12 Giả sử m1 = {a ↦ 1, c ↦ 3, d ↦ 1}, m2 = {b ↦ 4, c ↦ 5} m1†m2 = {a ↦ 1,b ↦ 4, c ↦ 5,d ↦ 1} m2†m1 = {a ↦ 1,b ↦ 4, c ↦ 3,d ↦ 1} m†{} = m = {}†m 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 13 Toán tử chọn theo tập khóa ⊲ _⊲ _ : m A-set A B m A B s⊲m≝ { a ↦ m(a) | a (dom m s ) } Ý nghĩa: chọn lại ánh xạ có giá trị khóa cho trước 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 14 Toán tử chọn theo tập khóa ⊲ Ví dụ: { 2, 3, 4} ⊲ {1 ↦ 3, ↦ 7, ↦ 3} = {4 ↦ 7, ↦ 3} { a, d, e} ⊲ m1 = {a ↦ 1, d ↦ 1} {} ⊲ m = {} s ⊲ {} = {} 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 15 Toán tử xóa dựa vào tập khóa ⊲_ _⊲_ _ : m A-set A B m A B s ⊲_ m ≝ { a ↦ m(a) | a (dom m – s ) } Ý nghĩa: Xóa bỏ ánh xạ có giá trị khóa cho trước _ _ 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 16 Tốn tử xóa dựa vào tập khóa ⊲_ Ví dụ: { 2, 3, 4} ⊲_ {1 ↦ 3, ↦ 7, ↦ 3} = {1 ↦ 3} { a, d, e} ⊲_ m1 = {c ↦ 3} {} ⊲_ m = m ma†mb = (dom mb – ma) mb 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 17 Đặc tả với kiểu ánh xạ Ví dụ: m Mã-HP Tên-HP m Mã-GV Mã-HP-set m Mã-GV Giảng-Viên m Mã-SV Sinh-Viên 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 18 Đặc tả với kiểu ánh xạ Ví dụ: Mã-HP = Char* Mã-SV = Char* HọTên = Char* Sinh-Viên :: mã-SV: Mã-SV họ-tên: HọTên Lớp :: mã-HP: Mã-HP mã-Lớp: ℕ1 học-kỳ: {1, 2, 3, 4} năm-học: ℕ1 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 19 Đặc tả với kiểu ánh xạ m Đăng-ký = Sinh-Viên Lớp-set m Danh-sách-lớp= Lớp Sinh-Viên-set 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 20 Đặc tả với kiểu ánh xạ Ví dụ: Đặc tả hàm trả lớp mà sinh viên sv đăng ký học DSĐăngKýHọc : Sinh-Viên Đăng-ký Đăng-ký DSĐăngKýHọc (sv, ds-đăng-ký) ≜ {sv} ⊲ ds-đăng-ký DSLớpĐăngKýHọc : Sinh-Viên Đăng-ký Lớp-set DSLớpĐăngKýHọc (sv, ds-đăng-ký) ≜ if (sv dom ds-đăng-ký) then ds-đăng-ký(sv) else {} 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 21 Đặc tả với kiểu ánh xạ Ví dụ: Đăng ký cho sinh viên học lớp ĐĂNG-KÝ-HỌC (sv: Sinh-Viên, lớp: Lớp) ext wr đk: Đăng-ký pre post ↼ = {}) ({sv} ⊲ đk ↼ (lớp ({sv} ⊲ đk)(sv)) ↼ ↼ † { sv ↦ ({sv} ⊲ đk ↼ )(sv) {lớp}) } ({sv} ⊲ đk {})) (đk = đk ↼ ↼ = {})) (đk = đk { sv ↦ {lop}) ({sv} ⊲ đk 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 22 Đặc tả với kiểu ánh xạ Ví dụ: Đăng ký cho sinh viên học lớp ĐĂNG-KÝ-HỌC (sv: Sinh-Viên, lớp: Lớp) ext wr đk: Đăng-ký ↼ ↼ ↼ pre (sv dom(đk)) ((sv dom(đk)) (lớp đk(sv))) post ↼ ↼ {lớp}}) (sv dom(đk))) ↼ † { sv ↦ đk(sv) ((đk = đk ↼ ((đk = ↼ đk { sv ↦ {lop}) (sv dom(đk))) 4/5/2019 CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 23 ... Sinh-Viên Đăng-ký Đăng-ký DSĐăngKýHọc (sv, ds-đăng-ký) ≜ {sv} ⊲ ds-đăng-ký DSLớpĐăngKýHọc : Sinh-Viên Đăng-ký Lớp-set DSLớpĐăngKýHọc (sv, ds-đăng-ký) ≜ if (sv dom ds-đăng-ký) then ds-đăng-ký(sv)... CuuDuongThanCong.com PGS.TS Vu Thanh Nguyen https://fb.com/tailieudientucntt 17 Đặc tả với kiểu ánh xạ Ví dụ: m Mã-HP Tên-HP m Mã-GV Mã-HP-set m Mã-GV Giảng- Viên m Mã-SV Sinh-Viên 4/5/2019 CuuDuongThanCong.com... Vu Thanh Nguyen https://fb.com/tailieudientucntt 18 Đặc tả với kiểu ánh xạ Ví dụ: Mã-HP = Char* Mã-SV = Char* HọTên = Char* Sinh-Viên :: mã-SV: Mã-SV họ-tên: HọTên Lớp :: mã-HP: Mã-HP mã-Lớp: