31
BÀI 10: BÀI 10: THIẾT KẾ CHI TIẾT THIẾT KẾ CHI TIẾT 10/15/2012 Phân tích và thiết kế HDT – Biên son: Chu ThHường - BM HTTT 1 THIẾT KẾ CHI TIẾT THIẾT KẾ CHI TIẾT 1

BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

BÀI 10:BÀI 10:THIẾT KẾ CHI TIẾTTHIẾT KẾ CHI TIẾT

10/15/2012

Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường - BM HTTT1

THIẾT KẾ CHI TIẾTTHIẾT KẾ CHI TIẾT

1

Page 2: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

NNỘỘI DUNG I DUNG

� Thiết kế lớp

� Thiết kế liên kết

� Thiết kế thuộc tính

� Thiết kế thao tác

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 22

Page 3: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Mục đích của thiết kế lớp ‘Class Design’ là:◦ Để đảm bảo các lớp cung cấp hành vi cho yêu cầuhiện thực hóa các ca sử dụng,

◦ Để đảm bảo rằng đơn giản cho việc cài đặt các lớp,

◦ Để điều khiển các yêu cầu phi chức năng liên quan

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 3

◦ Để điều khiển các yêu cầu phi chức năng liên quanđến lớp và

◦ Để kết hợp máy thiết kế được sử dụng bởi lớp này.

Page 4: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Phát hiện các lớp thiết kế khởi đầu:◦ Một lớp phân tích ánh xạ trực tiếp sang lớp thiết kếnếu:� Nó là một lớp đơn giản.

� Nó biểu diễn cho sự trừu tượng hóa logic đơn giản

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 4

� Nó biểu diễn cho sự trừu tượng hóa logic đơn giản(single logical abstraction)

◦ Các lớp phân tích phức tạp, có thể� Chia thành nhiều classes

� Thành một package

� Thành hệ thống con

� Bất cứ kết hợp nào…

Page 5: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thiết kế lớp là đưa ra sự thay đổi đối với các lớpphân tích.

� Thiết kế lớp, có thể là:◦ Phân bổ hay giải phóng bớt trách nhiệm cho các lớpphân tích.

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 5

phân tích.

◦ Thêm các lớp mới để cài đặt cấu trúc dữ liệu

◦ Thêm các lớp mới để cài đặt các khái niêm phân tích

◦ Thêm các lớp mới vì mục đích tối ưu hóa.

Page 6: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Phân bổ hay giải phóng bớt trách nhiệm cho các lớpphân tích.◦ Khi phân tích, các lớp được đưa ra theo các yếu tố logic mà chưatính đến hiệu năng hay sự thích ứng với các điều kiện kỹ thuật.◦ Do đó trong giai đoạn thiết kế, lớp có thể được phân bổ lại tráchnhiệm với các mục đích khác nhau, như là:

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 6

� Rút các nhiệm vụ có tính chất kỹ thuật ra khỏi các lớp phântích.

� Phân bổ lại trách nhiệm, và đặt biệt là các sự trao đổi thôngđiệp và sự kiện, cho phù hợp với yêu cầu của kiến trúc phântầng.

� Chuyển việc lưu giữ các kết quả trung gian hay việc thực hiệncác nhiệm vụ cấp thấp cho các lớp mới.

Page 7: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thêm các lớp mới để cài đặt cấu trúc dữ liệu.◦ Khi phân tích, nhiều cấu trúc dữ liệu được xem là mặcđịnh.

◦ Do đó trong giai đoạn thiết kế, các cấu trúc dữ liệu đóđược xem xét việc cài đặt:

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 7

được xem xét việc cài đặt:� Thường thì nhiều cấu trúc dữ liệu có sẵn trong thư việncủa ngôn ngữ lập trình.

� Tuy nhiên, một số cấu trúc đặc biệt không có sẵn trongthư viện cần thiết kế lớp để cài đặt.

Page 8: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thêm các lớp mới để cài đặt các khái niệm phântích:◦ Có nhiều khái niệm dùng để phân tích, nhưng khôngcó trong ngôn ngữ lập trình ⇒ cần phải tìm cách càiđặt chúng bằng lớp thiết kế.

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 8

đặt chúng bằng lớp thiết kế.

◦ Ví dụ: Máy trạng thái dùng để mô tả hành vi ứng xửcủa một lớp phụ thuộc vào trạng thái.

Page 9: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thêm các lớp mới vì mục đích tối ưu:◦ Các siêu lớp (metaclass): Siêu lớp là một lớp mà đốitượng của nó là một lớp.� Khi xem xét một lớp A mà thấy trong các trách nhiệmcủa nó không thuộc riêng từng đối tượng mà thuộc vào

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 9

của nó không thuộc riêng từng đối tượng mà thuộc vàotừng nhóm các đối tượng ⇒ Sinh thêm lớp LoaiA vàphân bố lại thuộc tính và liên kết trên hai lớp.

� Liên kết lớp A vời lớp LoaiA bằng một liên kết n..1,thường là một chiều hướng tới LoaiA.

� Lớp LoaiA là một siêu lớp, vì mỗi đối tượng của nó làmột tập hợp các đối tượng.

Page 10: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thêm các lớp mới vì mục đích tối ưu:◦ Các siêu lớp (metaclass): Siêu lớp là một lớp mà đốitượng của nó là một lớp.

A LoaiA

Siêu lớp

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 10

A

Thuoc tinh1Thuoc tinh 2

LoaiA

Thuoc tinh 3Thuoc tinh 41nn 1

Ô tô

So Dang KyKm DuongTai trong MaxThe t ichChieu caoChieu rong

Oto

So Dang KyKm Duong

LoaiOto

Tai trong MaxThe tichChieu caoChieu rong

1nn 1

Page 11: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thêm các lớp mới vì mục đích tối ưu:◦ Các lớp dẫn xuất: Nếu ta muốn bỏ sự tính toán lại, để tăng hiệunăng, ta có thể lập ra các đối tượng/lớp để lưu trữ các thuộc tínhdữ liệu dẫn.

� Cần phải cập nhật các thuộc tính dẫn xuất mỗi khi các thuộctính cơ sở thay đổi:

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 11

tính cơ sở thay đổi:� Đưa thêm mã lệnh cập nhật các thuộc tính dẫn xuất vào các phươngthức cập nhật các thuộc tính của các lớp cơ sở.

� Tính toán lại có định kỳ

� Triggers: Khi một thuộc tính cơ sở có nhiều thuộc tính dẫn xuất từnó được cập nhật, thì một trigger sẽ được kích hoạt và báo cho cácđối tượng chứa thuộc tính dẫn xuất biết là thuộc tính cơ sở đã thayđổi ⇒ đối tượng có thuộc tính dẫn xuất có trách nhiệm cập nhậtthuộc tính dẫn xuất của mình.

Page 12: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thêm các lớp mới vì mục đích tối ưu:◦ Các lớp dẫn xuất:

Hang ton kho

Ma hang hoa

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 12

Ma hang hoaNgay kiem keLuong ton

Page 13: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LỚP

� Thêm các lớp mới vì mục đích tối ưu:

◦ Các lớp cha: Khi có cùng một thao tác hay thuộc tính được phát hiện trên nhiềulớp khác nhau thì có thể đưa nó vào một lớp cha để các lớp nói trên sử dụng theocách kế thừa.� Các thao tác trên các lớp khác nhau thường là tương tự, chứ không thực sự đồngnhất ⇒ điều chỉnh tiêu đề của thao tác để quy tu các dịch vụ tương tự nhau thànhmột:� Nếu một thao tác có ít tham số hơn các thao tác khác thì thêm các tham số thiếu vào

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 13

� Nếu một thao tác có ít tham số hơn các thao tác khác thì thêm các tham số thiếu vàodanh sách nhưng chúng không làm gì trong phương thức.

� Khi các thuộc tính trong nhiều lớp khác nhau có chung ý nghĩa, thì ta chọn một tên chothuộc tính và chuyển nó vào lớp cha.

� Khi thao tác trong nhiều lớp khác nhau có cùng ý nghĩa, ta chọn tên cho thao tác, lậpdanh sách cho tham số bao trùm tất cả các tham số trên các lớp, rồi đưa nó vào lớp chađể tận dụng thế mạnh đa hình.

� Khi trong một nhóm lớp, theo ý nghĩa ta có thể gom nhóm chúng thành một phr hệ,song có một thao tác xuất hiện trong một số lớp và vắng mặt trong một số lớp còn lại⇒ vẫn đưa vào lớp cha.

Page 14: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LIÊN KẾT

� Các liên kết phải được biến đổi thành các thuộc tính haybảng các thuộc tính, tùy theo multiplicity của nó. Cùngvới nó có thể thêm các thao tác để sử dụng và quản lýcác thuộc tính này.

� Nếu liên kết một chiều thì thuộc tính liên kết chỉ đưa vàomột phía. Nhưng nếu liên kết là hai chiều thì thuộc tính

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 14

một phía. Nhưng nếu liên kết là hai chiều thì thuộc tínhcài đặt nó được đưa vào cả hai phía.

� Các liên kết thường kèm theo nhiều ràng buộc, các ràngbuộc này được đảm bảo bởi các thao tác sử dụng vàquản lý các thuộc tính thể hiện liên kết.

Page 15: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LIÊN KẾT

� Ví dụ: Thiết kế liên kết bằng các thuộc tính

Don hang

11

Khach hang

1n 1n

Don hang

Nguoi mua: Khach hangdsDong don hang : Vector (Dong DH)

Nguoimua()Them dong DH()

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 15

Dong don hangnn Them dong DH()

Xoa dong DH()ds Dong DH()

Page 16: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LIÊN KẾT

� Các liên kết có thuộc tính không có thao tác, được càiđặt như sau:◦ Nếu liên kết một – một thì thuộc tính liên kết có thể đưa vào mộttrong hai lớp tham gia liên kết.

◦ Nếu liên kết nhiều – một, thì các thuộc tính liên kết có thể đưavào lớp nhiều.

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 16

vào lớp nhiều.

◦ Nếu liên kết là nhiều – nhiều thì lập một lớp liên kết chứa cácthuộc tính liên kết.

� Các liên kết hai ngôi có cả thuộc tính liên kết và thaotác, ta thành lập lớp liên kết. Một lớp liên kết là tập hợpcác bộ đôi (hay bộ n – n ngôi) các đối tượng tham gialiên kết.

Page 17: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾ LIÊN KẾT

� Các ví dụ

Bai thi

SBD

Phach

So phachSoBD111 1

Don hang

MaDHNgayDHMaKhach

Dong don hang

MaDHMaSPSoLuongDonGia

1 0..n1 0..n

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 17

Page 18: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHUỘC TÍNH

� Định nghĩa kiểu cho các thuộc tính

� Phạm vi thuộc tính

� Chỉ rõ phương thức để truy cập các thuộc tínhdẫn xuất

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 18

Page 19: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHUỘC TÍNH

� Định nghĩa kiểu cho các thuộc tính◦ Ghi rõ tên, kiểu, và các tùy chọn giá trị mặc định

attributeName: Type = Default

◦ Phần lớn sử dụng các kiểu cơ sở trong ngôn ngữ lậptrình.

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 19

trình.� Thực hiện theo quy ước đặt tên của ngôn ngữ cài đặt và dự án.

� Kiểu nên là một kiểu dữ liệu cơ bản trong ngôn ngữ cài đặt.

◦ Một số cấu trúc dữ liệu cần được diễn tả như lớp, lúc đó nên đưathêm stereotype để mô tả cấu trúc đó. Ví dụ: Kiểu cấu trúc<<struct>>, liệt kê <<enum>>

Page 20: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHUỘC TÍNH

� Phạm vi thuộc tính◦ Public : toàn cục

◦ Private : Riêng tư – Chỉđược truy cập bởi chính lớpđó.

◦ Proteted : Bảo vệ - ĐƯợc

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 20

◦ Proteted : Bảo vệ - ĐƯợctruy cập bởi chính lớp đóvà các lớp con của nó

Page 21: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHUỘC TÍNH

� Các thuộc tính dẫn xuất◦ Một thuộc tính có dẫn xuất là gì?Một thuộc tính có giá trị có thể được tính toán dựatrên giá trị của các thuộc tính khác

◦ Khi nào bạn sử dụng chúng?

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 21

◦ Khi nào bạn sử dụng chúng?� Khi không có đủ thời gian để tính toán lại các giá trị mỗikhi là cần đến nó.

� Để cân bằng hiệu xuất thực thi, ví dụ như yêu cầu bộnhớ,…

Page 22: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHUỘC TÍNH

RegistrationController(from Registration)

<<control>>

Schedule

- semester : Semester

(from University Artifacts)

<<entity>>

ICourseCatalogSystem(from External System Interfaces)

0..1

0..1

0..1

+currentSchedule

0..*

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 22

Student.

- name : string- address : string<<class>> - nextAvailID : int- studentID : int- dateofBirth : Date

(from University Artifacts)

<<entity>>CourseOffering

- number : String = "100"- startTime : Time- endTime : Time- days : string/- numStudents : int = 0

(from University Artifacts)

<<entity>>

0..1

+registrant

0..*

1

0..*

0..*

+primaryCourses

0..4

+alternateCourses

0..2

Page 23: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

� Định nghĩa các thao tác (Operation) cho dự án.

◦ Tìm các thao tác:

� Thông qua biểu đồ tương tác

� Các chức năng phụ thuộc cài đặt

◦ Đặt tên cho thao tác:

� Định nghĩa ký hiệu thao tác

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 23

� Định nghĩa ký hiệu thao tác� operationName(parameter : class,..) : returnType

� Mô tả ngắn gọn, bao gồm tất cả các tham số.� Truyền tham số by-value hoặc by-reference?

� Thay đổi bởi phương thức?

� Các lựa chọn?

� Thiết lập các giá trị mặc định?

� Phạm vi hợp lệ của tham số?

◦ Phạm vi của thao tác

Page 24: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

� Định nghĩa các phương thức (Method):

◦ Method là gì?� Mô tả cài đặt thao tác

◦ Mục đích:� Xác định các khía cạnh đặc biệt của việc thực hiện thao tác.

◦ Xem xét:

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 24

◦ Xem xét:� Các thuật toán đặc biệt

� Các đối tượng và thao tác khác được sử dụng.

� Các thuộc tính và tham số được cài đặt và sử dụng như thế nào?

� Các quan hệ được cài đặt và sử dụng?

Page 25: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

� Để thiết kế và tư liệu hóa phương thức, có thể dùng các biểu đồ môhình hóa động thái như:

◦ Biểu đồ hoạt động: Mô tả một phương thức mà trong đó các lớpkhác ít can thiệp. Hữu hiệu khi dùng để mô tả giải thuật có nhiềugiai đoạn và có nhiều phép lựa chọn tình huống.

◦ Biểu đồ tương tác: Cho phép trình bày một phương thức trong đó

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 25

◦ Biểu đồ tương tác: Cho phép trình bày một phương thức trong đócó nhiều lớp tham gia, nhưng lại ít sự lựa chọn tình huống.

Page 26: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

� Một số phương thức cần môi trường để lưu trữcác kết quả trung gian ⇒ nó thường được biếnđổi thành các lớp khi thiết kế ⇒ được gọi là kỹthuật vật thể hóa.

� Kỹ thuật vật thể hóa là xem cái vốn dĩ không là

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 26

� Kỹ thuật vật thể hóa là xem cái vốn dĩ không làđối tượng như là các đối tượng.

Page 27: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

Student

- name

- address

- nextAvailID : int

<<entity>>

- studentID

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 27

- nextAvailID : int

+ addSchedule(theSchedule : Schedule, forSemester : Semester)

+ getSchedule(forSemester : Semester) : Schedule

+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean

# passed(theCourseOffering : CourseOffering) : boolean

+ getNextAvailID() : int

Page 28: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

RegistrationController

+ submitSchedule()+ saveSchedule()+ getCourseOfferings() : CourseOfferingList+ getCurrentSchedule(forStudent : Student, forSemester : Semester) : Schedule+ deleteCurrentSchedule()<<class>> + new(forStudent : string)+ getStudent(withID : string) : Student

(from Registration)

<<control>>

Schedule(from University Artifacts)

<<entity>>

0..1

0..*

0..1

0..1

+currentSchedule

0..*

ICourseCatalogSystem

+ getCourseOfferings()+ initialize()

(from External System Interfaces)10..*

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 28

CourseOffering(from University Artifacts)

<<entity>>

Student.

+ getTuition() : double+ addSchedule(theSchedule : Schedule)+ getSchedule(forSemester : Semester) : Schedule+ deleteSchedule(forSemester : Semester)+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean# passed(theCourseOffering : CourseOffering) : boolean<<class>> + getNextAvailID() : int+ getStudentID() : int+ getName() : string+ getAddress() : string

(from University Artifacts)

<<entity>>

0..1+registrant

0..*

1

0..*

+primaryCourses

0..4

+alternateCourses

0..2

Page 29: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

Loại khách hàng

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 29

Page 30: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

THIẾT KẾTHAO TÁC

� Một số thao tác thường gặp đối với các lớp thựcthể:◦ getInfo: Dùng để tìm thông tin về một đối tượng

◦ Insert: Chèn thông tin về một đối tượng của lớp

◦ Update: cập nhật thông tin đối tượng của lớp

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 30

◦ Update: cập nhật thông tin đối tượng của lớp

◦ Delete: xóa bỏ thông tin của đối tượng của lớp

Page 31: BÀI 10: THIẾT KẾ CHI TIẾTfit.mta.edu.vn/files/FileMonHoc/Bai12.pdfLiênkếtlớpAvờilớpLoaiAbằngmộtliênkếtn..1, thườnglàmộtchiềuhướngtớiLoaiA. LớpLoaiAlàmộtsiêulớp,vìmỗiđốitượngcủanólà

BÀI TẬP LỚN MÔN HỌC

� Chương 3, mục Thiết kế chi tiết

10/15/2012 Phân tích và thiết kếHDT – Biên soạn: Chu ThịHường – BM HTTT 31