– 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ản
B
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àng
B
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ọc
B
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 () : intCGiangVien + + + + + + + + + + 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 B9STT 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)