– Sơ đồ lớp đối tượng: Mô tả hệ thống các lớp đối tượng ( thuộc tính , hành động ) cùng với các quan hệ giữa chúng?. – Sơ đồ trạng thái: Mô tả chu trình sống của đối tượng.?[r]
(1)(2)(3)Nội dung
• Sơ đồ lớp mức phân tích
– Xác định lớp đối tượng chính
– Xác định thông tin hành động/trách nhiệm lớp đối tượng chính
– Xác định quan hệ chính
– Xác định lớp đối tượng phụ, danh mục
• Sơ đồ lớp Khả tiến hóa hệ thống • Sơ đồ trạng thái
– Khái niệm ký hiệu
• Trạng thái
• Biến cố, điều kiện
(4)Một số khái niệm mở đầu
• Vấn đề: Mơ tả lại ngơn ngữ
(thường sơ đồ) nhằm diễn tả trực quan vấn đề
• Phân tích: xây dựng mơ hình Thế giới thực
• Phân tích theo hướng đối tượng: xây dựng
mơ hình đối tượng của Thế giới thực
• Một số loại Sơ đồ:
– Sơ đồ lớp đối tượng: Mơ tả hệ thống các lớp đối tượng (thuộc tính, hành động) với các quan hệ giữa chúng
(5)Lớp (class) gì?
• Đối tượng tồn giới thực • Lớp mơ tả thuộc tính, hành vi, ngữ nghĩa
một nhóm đối tượng
– Lớp xác định thông tin lưu trữ đối tượng hành vi đối tượng có
• Thí dụ lớp: Lớp NhanVien
– Đối tượng lớp có attribute: HoTen, DiaChi,
Luong
(6)Sơ đồ Lớp Class Diagram
• Là biểu đồ quan trọng nhất.
• Mơ tả đối tượng mối quan hệ chúng trong hệ thống.
• Mơ tả thuộc tính hành vi (Behavior) của đối tượng.
• Có biểu đồ lớp mức phân tích mức cài đặt. • Ký pháp đồ họa lớp biểu đồ
– Tên lớp – Thuộc tính
+ : public
- : private
(7)Nhắc lại hướng đối tượng
Tên class Tên class
(Các) phương thức (Các) thuộc tính
(8)Public/Protected/Private
+ Thuộc tính/Phương thức public
- Thuộc tính/Phương thức private
# Thuộc tính/Phương thức protected
Phương
Phương thức
Protected
Phương thức
Private
Class
- privateAttribute # protectedAttribute
(9)Class
- classifierScopeAttribute
classifierScopeOperation() - instanceScopeAttribute
instanceScopeOperation()
Tầm vực
(10)Ví dụ
CStudent
- name - address
- nextAvailID : int
+ addSchedule(theSchedule : Schedule, forSemester : Semester) + getSchedule(forSemester : Semester) : Schedule
+ hasPrerequisites(forCourseOffering : CourseOffering) : boolean # passed(theCourseOffering : CourseOffering) : boolean
(11)Nhận xét
Tên class
(Các) phương thức (Các) thuộc tính
Bình thường: Class bình thường
In nghiêng: Class ảo
Gạch dưới: Object (khơng phải class)
Bình thường: Thuộc tính bình thường
In nghiêng: khơng sử dụng
Gạch dưới: Thuộc tính static
Bình thường: Phương thức bình thường
In nghiêng: Phương thức virtual
(12)Hai dạng lớp: phân tích thiết kế
(13)Tìm kiếm lớp nào?
• Tìm đầy đủ lớp khó khăn. • Khuyến cáo
– Tìm lớp từ danh từ luồng kiện
– Chú ý danh từ tác nhân, lớp, ( thuộc tính biểu thức khơng phải loại trên
– Tìm lớp từ biểu đồ tương tác
– Những chung đối tượng tạo thành lớp – Tìm lớp nơi khác
• Các báo cáo tìm pha phân tích u cầu hình thành lớp giao diện
(14)Tìm kiếm lớp nào?
• Cùng với chuyên gia lĩnh vực vấn đề trả lời câu hỏi sau để tìm lớp
– Có thơng tin cần lưu trữ hay phân tích? Nếu có, lớp
– Có hệ thống ngồi khơng? Nếu có xem
lớp chứa hệ thống ta hay hệ thống ta tương tác với chúng
– Có mẫu, thư viện lớp, thành phần ? Nếu có, thơng thường
chúng chứa ứng viên lớp
– Hệ thống cần quản lý thiết bị ngoại vi nào? Mọi thiết bị kỹ thuật nối với hệ thống ứng viên lớp.
– Tác nhân đóng vai trị tác nghiệp nào? Các nhiệm vụ là lớp; thí dụ người sử dụng, thao tác viên hệ thống, khách
(15)Mối quan hệ class
• Generalization: tổng qt hóa • Association:
(16)Các quan hệ biểu đồ lớp
• Quan hệ Generalization: Thể lớp A kế thừa từ lớp B (Hay A trường hợp riêng B; B tổng quát A)
(17)Quan hệ lớp đối tượng
• Quan hệ kế thừa
– ClassB kế thừa từ ClassA
– ClassB là trường hợp đặc biệt ClassA – ClassA là trường hợp tổng quát ClassB
ClassA
(18)Ví dụ
CTamGiac # CDiem P1 # CDiem P2 # CDiem P3 + CTamGiac()
+ float DienTich() + float ChuVi() + void Ve() +
CTuGiac # CDiem P1 # CDiem P2 # CDiem P3 # CDiem P4 + CTuGiac()
+ float DienTich() + float ChuVi() + void Ve()
CEllipse # CDiem Tam # float A # float B + CEllipse()
+ float DienTich() + float ChuVi() + void Ve() +
CHinhVe
# int MaLoaiHinhVe + float DienTich()
+ float ChuVi()
+ void Ve()
(19)Quan hệ lớp đối tượng
• Quan hệ Association • Hoặc
– Trong ClassA có thuộc tính có kiểu ClassB
• Hoặc
– Trong ClassB có thuộc tính có kiểu ClassA
• Nhận xét: Về mặt lập trình, thuộc tính có thể được lưu trữ dạng biến đơn, biến mảng, hay biến trỏ
• Ví dụ: ?
(20)(21)Quan hệ lớp đối tượng
• Quan hệ Aggregation
• Đã xác định ClassA và ClassB có quan hệ Association với nhau
– Xác định rõ hơn:
• Trong object của ClassA có chứa (trong phần thuộc tính) object của ClassB
• ObjectX của ClassA bị hủy ObjectY của ClassB
(bên ObjectX) cịn tồn tại
• Ví dụ: ?
(22)Quan hệ Aggregation
(23)Quan hệ lớp đối tượng
• Quan hệ Composition
• Đã xác định ClassA và ClassB có quan hệ Association với nhau
– Xác định rõ hơn:
• Trong object của ClassA có chứa (trong phần thuộc tính) object của ClassB
• ObjectX của ClassA bị hủy ObjectY của ClassB
(bên ObjectX) khơng thể cịn tồn tại – Ví dụ: ?
(24)Quan hệ Composition
• Thể lớp A bao hàm lớp B Nhưng lớp B tồn độc lập (Tức không
thuộc lớp nào) Tức là, có B phải suy được A.
(25)Quan hệ lớp đối tượng
• Chiều quan hệ (Association, Aggregation, Composition)
• Nếu quan hệ chiều: đa số các lời gọi hàm gọi theo chiều quan hệ
• Nếu quan hệ chiều: khơng vẽ mũi tên
(26)Quan hệ lớp đối tượng
• Bản số - Multiplicity (Association, Aggregation, Composition)
– Ý nghĩa – Ví dụ:
• 1 • 2 • * • * • *
• 1, 3, 9
ClassA ClassB
(27)Quan hệ lớp đối tượng
• Bản số - Multiplicity (Association, Aggregation, Composition)
– Ý nghĩa – Ví dụ:
• 1 • 2 • * • * • *
• 1, 3, 9
ClassA ClassB
(28)Quan hệ lớp đối tượng
• Quan hệ Dependency
– ClassA ClassB khơng có quan hệ Association – ClassA “phụ thuộc” vào ClassB
ClassA ClassB
class A {
void F(B x) {
… }
class A {
B F() {
… }
class A {
void F() {
B x; }
Trong ClassA có sử dụng biến tồn cục (kiểu B), sử dụng phương thức/thuộc tính static ClassB
(29)Bản số (Multiplicity)
• Thể ứng với lớp A có (chứa, dạy, có, mua, đặt, ) phần tử lớp B?
A
B
1 1
(30)Bản số (Multiplicity)
• Thể ứng với lớp A có (chứa, dạy, có, mua, đặt, ) phần tử lớp B?
A
Khách hàng Tài khoảnB
1 0 3
(31)Bản số (Multiplicity)
• Thể ứng với lớp A có (chứa, dạy, có, mua, đặt, ) phần tử lớp B?
A
Khách hàng Đơn hàngB
1 *
(32)Bản số (Multiplicity)
• Thể ứng với lớp A có (chứa, dạy, có, mua, đặt, ) phần tử lớp B?
A
Sinh viên Khóa họcB
0 * 1 *
(33)(34)(35)Xây dựng sơ đồ lớp ở mức phân tích
(36)Class Diagram
• Được xây dựng hiệu chỉnh suốt quá trình phát triển
• Mục tiêu:
– Đặt tên lập mơ hình khái niệm hệ thống
– Đặc tả cộng tác – Đặc tả sơ đồ CSDL
(37)Lập danh sách đối tượng
• Tiêu chuẩn nhận dạng đối tượng
– Định danh: Đối tượng phải có tên (thường danh từ/ngữ danh từ)
– Chu trình sống: có thời điểm sinh ra, có khoảng thời gian hoạt động, có thời điểm chấm dứt
– Sự độc lập tương đối với đối tượng khác – …
• Đề nghị:
– Con người – Vật thể – Tổ chức – Vật lý
(38)Lập danh sách đối tượng
• Lập danh sách đối tượng liên quan đến hệ thốngĐối tượng đề nghị
Không đối tượng Là đối tượng
Được quan tâm Không quan tâm
Đối tượng chính Đối tượng phụ
(39)Ví dụ
• Ví dụ: Xét ngữ cảnh trường PTTH với phần mềm quản lý trường cấp 3:
• Danh sách đề nghị:
– Học sinh Tổ Bộ môn Số tiết – Giáo viên BGH TKB
– Môn học Khối Bảng điểm – Lớp Phụ huynh Phòng
– Học kỳ ĐTB Học phí – Năm học Diện HS …
(40)Ví dụ
• Được quan tâm?
– Phần mềm quản lý học sinh:
• Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học…
– Phần mềm quản lý giáo viên:
• Giáo viên, Tổ mơn, Môn học, Khối, Lớp, Học kỳ, Năm học…
– Phần mềm xếp thời khóa biểu:
(41)Ví dụ
• Đối tượng chính?Đối tượng phụ
– Phần mềm quản lý học sinh:
• Học sinh, Giáo viên, Môn học, Lớp, Khối, Phụ huynh, Học kỳ, Năm học…
– Phần mềm quản lý giáo viên:
• Giáo viên, Tổ mơn, Môn học, Khối, Lớp, Học kỳ, Năm học…
– Phần mềm xếp thời khóa biểu:
(42)Lập danh sách quan hệ
• Tiêu chí đánh giá:
– Động từ
– Sự phụ thuộc đối tượng (chủ yếu xét đối tượng chính)
• Đề nghị:
– Quan hệ theo thời gian
• Ít biến động: sau thời gian dài thay đổi (thường làm về mặt tổ chức)
• Biến động: quan hệ xảy vào lúc nào, thơng tin có
thuộc tính thời gian, thay đổi theo thời gian (thường quan
tâm nhiều đến loại quan hệ này)
– Quan hệ tổ chức (thường liên quan đến đối tượng phụ)
– Quan hệ không gian (thường liên quan đến đối tượng phụ
(43)Nhận dạng thuộc tính
• Sự phụ thuộc (khơng có ý nghĩa rõ ràng đứng độc lập)
– Phụ thuộc đối tượng Thuộc tính đối tượng
– Phụ thuộc nhiều đối tượng Thuộc tính quan hệ
• Các loại thuộc tính
– Định danh (thường đối tượng) – Phân loại
(44)Các bước xây dựng
sơ đồ lớp mức phân tích
• Bước 1: Xác định lớp đối tượng, quan hệ và
thuộc tính trực tiếp từ yêu cầu hệ thống
– Xét biểu mẫu quy định
• Nếu sơ đồ lớp chưa lưu trữ được thông tin cần thiết:
– Cần bổ sung thuộc tính vào lớp đối tượng có?
– Cần bổ sung thuộc tính vào quan hệ có? – Cần bổ sung thêm quan hệ lớp đối
tượng có?
(45)Các bước xây dựng
sơ đồ lớp mức phân tích
• Bước 2:
– Nếu lớp đối tượng có thuộc tính có cấu trúc phức tạp hoặc có các thuộc tính có liên hệ chặt chẽ với có ngữ nghĩa cụ thể
(46)Các bước xây dựng
sơ đồ lớp mức phân tích
• Bước 3:
– 3.1. Nhiều lớp đối tượng có nhiều đặc điểm chung
Xây dựng lớp đối tượng tổng quát chung cho các
lớp đối tượng cụ thể này
– 3.2. Một lớp đối tượng có thuộc tính phân loại và
cách xử lý trong các phương thức của đối tượng thuộc lớp này phụ thuộc vào giá trị của thuộc tính phân loại
Tách lớp đối tượng thành nhiều lớp đối tượng
(47)Các bước xây dựng
sơ đồ lớp mức phân tích
• Bước 4:
– Hiệu chỉnh các quan hệ đã có để phù hợp với
các lớp đối tượng vừa điều chỉnh
• Bước 5:
– Kiểm tra lại sơ đồ lớp hiệu chỉnh (theo kinh nghiệm)
• Bước 6:
(48)Kết quả
• Sơ đồ lớp
• Danh sách lớp đối tượng quan hệ
• Mơ tả chi tiết lớp đối tượng quan hệ
– Với lớp đối tượng:
• Mơ tả thuộc tính
• Danh sách trách nhiệm
– Với quan hệ:
STT Tên lớp/quan hệ Loại Ý nghĩa/ghi chú
… … … …
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ghi chú
… … … … …
(49)Áp dụng
• Áp dụng thực tế vào tập
– Xác định lớp đối tượng chính
– Xác định thơng tin hành động/trách nhiệm lớp đối tượng chính
– Xác định quan hệ chính
(50)Ví dụ Co * Thuoc * * CGiangVien + + + + + + + + + + GVID MaGV HocVi ChucDanh TenVT Ho Ten DiaChi DienThoai Email : long : string : string : string : string : string : string : string : string : string CKhoa # + -KhoaID MaKhoa TenKhoa : int : string : string CBoMon + + + BMID MaBM TenBM : long : string : string + Insert () : int
(51)Ví dụ Co * Thuoc * * * * * * * 1 * 1 0 * 1 * CBoMon + + + BMID MaBM TenBM : long : string : string + Insert () : int
CGiangVien + + + + + + + + + + GVID MaGV HocVi ChucDanh TenVT Ho Ten DiaChi DienThoai Email : long : string : string : string : string : string : string : string : string : string CKhoa # + -KhoaID MaKhoa TenKhoa : int : string : string CLOP + + + + + LOPID MALOP TENLOP NAMTS TenVT : long : string : string : short : string CLOPNK + + + LOPNKID NAM NAMHOC : long : short : short CMONHOC + + + + + + + MonID MaMon TenMon TinChi SoTietLT SoTietBT TenVT : long : string : string : short : short : short : string + + Them () Xoa () : void : void CNganh + + + + NganhID MaNganh TenNganh TenVT : long : string : string : string CTKB + + + + + + TKBID TKB HOCKY NAMHOC NGAYBD NGAYKT : long : string : short : short : DateTime : DateTime CTKBLOP + TKBLOPID : long
(52)(53)(54)(55)(56)(57)(58)Sơ đồ trạng thái
(59)Statechart Diagram
• Ghi nhận hành vi động (even –
oriented) • Mục tiêu:
– Mơ hình hóa chu kỳ sống đối tượng
(60)Các khái niệm
• Sơ đồ trạng thái
– Mơ tả chu trình sống đối tượng từ sinh ra, hoạt động & đi
– Mỗi đối tượng có nhiều sơ đồ trạng thái theo các góc nhìn khác nhau
• Trạng thái & biến cố
– Trạng thái của đối tượng diễn đạt tình trạng có của đối tượng (có ý nghĩa đoạn thời gian)
– Biến cố là kiện xảy làm cho đối tượng
(61)State Diagram Bàn cờ
Khởi tạo bàn cờ
Quân trắng
Quân đen
(62)Ví dụ: Xét ứng dụng quản lý TKB
• Hệ thống cho phép phận giáo vụ Khoa nhập thời khóa biểu, cập nhật thời khóa biểu tất lớp
• Hệ thống cho phép sinh viên tra cứu thời khóa biểu theo học kỳ lớp
(63)Ví dụ minh họa
• State Diagram mơ tả trạng thái TKB
[Bắt đầu học kỳ mới]
[Kết thúc học kỳ]
[Tất lớp phân phòng] [Một số lớp chưa phân phịng]
Có lớp phân [Còn lớp chưa phân phòng]
[Tất lớp phân phòng]
Yêu cầu tra cứu TKB Khởi tạo
do / Khoi tao TKB
Chờ phân phịng
Có lớp phân() / Cap nhat Phong
Đang sử dụng
Yêu cầu tra cứu TKB(Lop) / TKB Lop Yêu cầu tra cứu TKB(GV) / TKB Giảng viên Đóng
(64)Các thành phần State diagram
• Trạng thái – State • Sự kiện – Event
• Hành động – Action
• Mối liên hệ trạng thái
State1
entry / Action_1 / Action_2 exit / Action_3
Event_1 [Condition]/ Action 11 State1
entry / Action_1 / Action_2 exit / Action_3
(65)Một số ký hiệu
Tên trạng thái
Tên trạng thái
stateVar : type = value entry/ entry action
do/ activity
exit/ exit action
Tên biến cố (tham số) Tên hành động (tham số)
[Điều kiện]
Trạng thái
(66)• Trang thái bắt đầu
– Là trạng thái khởi tạo object – Bắt buộc phải có
– Chỉ có trạng thái bắt đầu
• Trang thái kết thúc
– Chỉ vị trí kết thúc đời sống object – Không thiết phải thể hiện
– Có thể có nhiều
Tr/thái bắt đầu
Tr/thái kết thúc
(67)Tên trạng thái
stateVar : type = value entry/ entry action
do/ activity
exit/ exit action
Biến cố(tham số) [Biểu thức điều kiện] / Hành động (tham số) Trạng thái Biến cố
Chuyển đổi trạng thái Hành động
Hành động
Sơ đồ trạng thái
(68)Các thành phần State diagram
• Sự kiện – Event
• Event
– Entry: kiện phát sinh đối tượng bắt đầu nhận trạng thái
– Exit: kiện phát sinh đối tượng kết thúc trạng thái thúc trạng thái
– Do: kiện phát sinh user thực hành động thơng qua bàn phím/chuột.
State1
(69)Các thành phần State diagram
• Trạng thái – State
• Action
– Entry: hành động thực đối tượng bắt đầu trạng thái
– Do: tập hành động thực với trạng thái
– Exit: hành động thực đối tượng kết thúc trạng thái
State1
(70)Các thành phần State diagram
• Mối liên hệ trạng thái –Transition
– Event – Action
– Condition: điều kiện cho phép chuyển từ trạng thái sang trạng thái khác
Event_1 [Condition]/ Action 11 State1
entry / Action_1 / Action_2 exit / Action_3
(71)Các thành phần State diagram
• State – Event – Action – Transition
Huy Huy
Huy
/ SoLuong = 10 Them Sinh Vien/ SoLuong =
Them Sinh Vien [SoLuong <10]
KH Khởi tạo / KhoiTao
Đang mở
entry / Sinh vien dang ky exit / Tang SoLuong DV
Kết thúc
do / Ket thuc khoa hoc Bị Hủy
(72)Ví dụ minh họa
• State Diagram mô tả trạng thái TKB
[Bắt đầu học kỳ mới]
[Kết thúc học kỳ]
[Tất lớp phân phòng] [Một số lớp chưa phân phịng]
Có lớp phân [Cịn lớp chưa phân phòng]
[Tất lớp phân phòng]
Yêu cầu tra cứu TKB Khởi tạo
do / Khoi tao TKB
Chờ phân phịng
Có lớp phân() / Cap nhat Phong
Đang sử dụng
Yêu cầu tra cứu TKB(Lop) / TKB Lop Yêu cầu tra cứu TKB(GV) / TKB Giảng viên Đóng
(73)Ví dụ minh họa
(74)Ví dụ minh họa
• State Diagram mơ tả trạng thái hình quản lý danh mục người dùng
Thoat
Thêm ND Sửa ND [Đã chọn ND]
Kết thúc sửa ND Kết thúc Thêm ND
Khởi tạo hình entry / Load entry / Show / Thêm ND / Sửa ND / Xóa ND / Thoát
Đang thêm Người dùng entry / Thêm ND / Lưu ND / Không lưu
Kết thúc MH Người dùng entry / Unload
Đang sửa Người dùng entry / Sửa ND
(75)Sơ đồ trạng thái
S1
S4
S2
S3
S5
S6
B1
B2
B3
B4
B5
B6 B7
B8
B9
B1, B2: biến cố sinh
B4, B8, B9: biến cố mất
(76)Sơ đồ trạng thái
• Mỗi sơ đồ trạng thái sẽ ánh xạ thành một thuộc tính của đối tượng
• Các trạng thái đối tượng sơ đồ trạng thái
không giao nhau và giá trị thuộc tính tương ứng mang giá trị tương ứng
• Sơ đồ trạng thái chi tiết phục vụ:
– Có xử lý thích hợp kiểm tra ràng buộc – Có xử lý thích hợp xử lý biến cố
– Phục vụ tra cứu, tìm kiếm
• Khi quan tâm đến sơ đồ trạng thái đối tượng
– Thường ứng dụng khơng cịn chức xóa (thật sự) đối
tượng này
(77)• Thơng thường, sơ đồ trạng thái đối tượng có dạng
Sẵn sàng
Tạm dừng
Hoạt động
Chấm dứt
(78)Cách xây dựng sơ đồ trạng thái
• Cách 1:
– Xác định q trình hoạt động bình thường đối tượng từ sinh đến đi
– Bổ sung trạng thái biến cố liên quan đến • Sinh ra
• Hoạt động • Tạm từng • Mất đi
• Cách 2:
– Xác định trạng thái sinh
– Xác định trạng thái cuối
(79)Kết quả: Sơ đồ trạng thái S1 S4 S2 S3 S5 S6 B1 B2 B3 B4 B5 B6 B7 B8 B9
STT Trạng thái Ý nghĩa Xử lý liên quan Ghi chú
… … … … …
STT Biến cố Ý nghĩa Xử lý liên quan Ghi chú
… … … … …
Bảng mô tả trạng thái
(80)Tạo State Diagram PD
• Tạo State Diagram • State
– Start – End – State
• Transition • Action
(81)Bài tập
• Vẽ sơ đồ trạng thái thang máy
• Vẽ sơ đồ trạng thái đèn giao thơng • Vẽ sơ đồ trạng thái cặp đèn giao
thông ngã tư
• Vẽ sơ đồ trạng thái độc giả
• Vẽ sơ đồ trạng thái sách
(82)Bài tập
Vẽ sơ đồ trạng thái:
• Quản lý giải bóng đá vơ địch quốc gia
• Quản lý bình chọn hát hay Làn sóng xanh
• Quản lý giáo vụ trường đại học
• Quản lý giáo vụ trường phổ thơng • Quản lý bán hàng
(83)Ôn tập
• State diagram ? • Event ?
• Transition ?
• Action ? Các loại Action ?
(84)