Tải bản đầy đủ (.pdf) (6 trang)

Phân Tích Hệ Thống Hướng Đối Tượng, Ngôn Ngữ UML - Phạm Thị Xuân Lộc phần 7 potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (285.87 KB, 6 trang )


Phòng
Môn
Giáo viên
Lớp
Thời gian










Cách 3: Chuyển nút ở liên kết nhiều chiều thành lớp mới

1 *
1
- ma phong
- nha hoc
+ Phong
- ma phong
- nha hoc
0 *
1
- ma lop
- so nhom
- si so
+ Lop


- ma lop
- so nhom
- si so
1
1 *
- ma mon
- ten mon
- so DVHT
+ Mon
- ma mon
- ten mon
- so DVHT
1
1 *
- ma GV
- ho GV
- ten GV
+ GV
- ma GV
- ho GV
- ten GV
1
0 *
- ngay
- gio bat dau
- gio ket thuc
+ Thoi gian
- ngay
- gio bat dau
- gio ket thuc

- stt
+ Phien
- stt


Cách 4: Khi lớp, giáo viên và môn không quan trọng lớp trong ngữ cảnh đang
xét thì chuyển chúng chúng từ lớp thành thuộc tính trong lớp liên kết:


0 * 0 *
- ma phong
- nha hoc
+ Phong
- ma phong
- nha hoc
- ngay
- gio bat dau
- gio ket thuc
+ Thoi gian
- ngay
- gio bat dau
- gio ket thuc
- stt
- ten mon
- ho GV
- ten GV
- ma lop
+ Phien
- stt
- ten mon

- ho GV
- ten GV
- ma lop


III.4.8 Quan hệ kết tập (aggregation relation) :
Một kết tập là một trường hợp đặc biệt của liên kết không đối xứng biểu diễn
một mối quan hệ « chứa đựng » về cấu trúc hoặc hành vi của một phần tử trong một
tập hợp.
Không như liên kết, quan hệ kết tập có tính truyền.

10
Quan hệ kết tập cũng cho phép việc
ủy thác về tác tử : một tác tử có thể được
thực hiện trên một lớp kết tập, thực tế được thực hiện trên các lớp thành phần của nó.
Chu kỳ sống của lớp kết tập là
độc lập với các lớp thành phần của nó. Mặt
khác, một thể hiện của lớp thành phần có thể xuất hiện trong
nhiều thể hiện của lớp
kết tập.
Ký hiệu : có hình thoi rỗng trên liên kết về phía lớp biểu diễn tập hợp chứa
đựng.




III.4.9 Quan hệ cấu thành (composition) :
Quan hệ cấu thành còn được gọi là quan hệ kết tập phức hợp, là một quan hệ
kết tập đặc biệt. Nó mô tả một sự chứa đựng về cấu trúc giữa các thể hiện.
Lớp chứa sẽ chịu trách nhiệm tạo ra, sao chép và xóa các lớp thành phần của

nó. Mặt khác, việc
sao chép hoặc xóa đi lớp chứa sẽ kéo theo sao chép hoặc xóa các
lớp thành phần của nó.
Một thể hiện của lớp thành phần
chỉ thuộc về duy nhất một thể hiện của lớp
chứa nó.
Ký hiệu: hình thoi đặc trên liên kết ở phía lớp chứa.
Ví dụ:
Thư viện Kho sách
1 * *
Bàn Mặt bàn
Chân bàn
3 4
1
0 1
Mặt kính phủ
1 *
Kệ sách




0 1





III.4.10 Quan hệ phụ thuộc (dependancy):
Khái niệm tương tự như trong phân tích cổ điển.

Ký hiệu : đường gạch đứt nét có mũi tên từ lớp chịu phụ thuộc.
Ví dụ :


cua
+ Chuyen bay
+ Hang HK


III.4.11 Quan hệ thừa kế :
Khái niệm tương tự như trong phân tích cổ điển, cũng có thừa kế đơn và thừa
kế bội.
Ký hiệu : đường gạch có mũi tên rỗng hướng về lớp cha.
Ví dụ :

11

+ Nhan vien
- nhiem vu
+ NV hanh chinh
- nhiem vu
1 * 1 *
day
+ Giao vien
+ Mon hoc


III.5 RÀNG BUỘC :
Các ràng buộc có thể biểu diễn bằng ngôn ngữ tự nhiên, một ngôn ngữ lập
trình, biểu thức toán học … hoặc ngôn ngữ OCL đi kèm theo UML. Cụ thể có các

dạng ràng buộc sau được biểu diễn bằng OCL:
- Các qui tắc thừa kế: {complete}, {incomplete}, {overlaps}, {distinct} …
- Hạn chế tầm vực của một liên kết: {subset}, {xor} …
- Cách thức phát triển các đối tượng: {frozen}, {addOnly} …
- Tổ chức các đối tượng:{ordered}, {frozen}, …

III.6 XÂY DỰNG MỘT SƠ ĐỒ LỚP :
III.6.1 Các quan điểm mô hình hóa :
- Top-down : Phân giải dần từ tổng quát xuống chi tiết
- Bottom-up : Sau khi có sơ đồ chi tiết ở tất cả các khóa cạnh, mới
nhóm lại dần thành các phân hệ riêng, dựa trên mối tương quan
chặt chẽ giữa các lớp.
III.6.2 Các bước xây dựng :
III.6.2.1 Tìm các lớp của lĩnh vực chức năng :
- Tìm các đối tượng và lớp trong thế giới thực
o Lớp trong thế giới thực
o Lớp con trong thế giới thực
- Chuyển đổi từ các đối tượng trong thế giới thực sang đối tượng dữ liệu
o Lớp trong thế giới dữ liệu
o Quản trị sự phức tạp
o
Ánh xạ cho các lớp
- Chọn lựa giữa lớp và thuộc tính
- Lớp dữ liệu bổ sung
- Tìm các cấu trúc kết tập và lớp con

III.6 2.2 Tìm các mối liên kết giữa các lớp :

III.6.2.3 Tìm các thuộc tính của mỗi lớp :


III.6.2.4 Tổ chức lại và đơn giản hóa sơ đồ :
Bằng cách sử dụng sự tổng quát hóa.

12
III.6.2.5 Thử các đường truy xuất đến các lớp :

Ví dụ: Quản lý hàng tồn
1 *
1 *
ghi phieu
1 *
0 *
ghi HD
+ ma hang
+ ten hang
+ DS phieu nhap
+ DS so thu tu phie
u
+ Hang
+ ma hang
+ ten hang
+ DS phieu nhap
+ DS so thu tu phie
u
1 *
1
<< derived >>
giu
0 *
1

lien quan
+ ma kho
+ ten kho
+ dia chi kho
+ so DT
+ ds hang chua () : Hang
+ ds hang cua phieu (AV) : Han
g
+ Kho
+ ma kho
+ ten kho
+ dia chi kho
+ so DT
+ ds hang chua () : Hang
+ ds hang cua phieu (AV) : Han
g
1
1 *
lap
+ Thu kho
0 *
1
tao boi
0 *
1 *
cho
+ so hoa don
+ ngay lap hoa don
- so seri
+ la HD ban

+ tri gia HD
+ Hoa don
+ so hoa don
+ ngay lap hoa don
- so seri
+ la HD ban
+ tri gia HD
+ so phieu
+ ngay lap
+ loai phieu
+ ds hang
+ Phieu N_X
+ so phieu
+ ngay lap
+ loai phieu
+ ds hang
+ NV ke toan
+ maNV Variable character(4)
+ ho NV
Variable character(20)
+ ten NV
Variable character(7)
+ dia chi Variable character(128
)
- nam sinh Integer(2)
+ ngay bat dau Date(8)
+ NV
+ maNV Variable character(4)
+ ho NV
Variable character(20)

+ ten NV
Variable character(7)
+ dia chi Variable character(128
)
- nam sinh Integer(2)
+ ngay bat dau Date(8)
+ so luong
+ don gia
+ Ghi phieu
+ so luong
+ don gia
+ so luong
+ don gia
+ Ghi hoa don
+ so luong
+ don gia


III.6 2.6 Tinh lọc hóa sơ đồ:
Khi so khớp lại với người sử dụng, hoặc với sơ đồ hoạt vụ, ta có thể :
- Bớt đi liên kết giữa các lớp, nếu đó là liên kết suy diễn, hoặc không
tương ứng với nhu cầu trong thế giới thực,
- Chuyển lớp sang thuộc tính nếu nó không đóng vai trò thực sự
quan trọng trong thế giới thực, hoặ
c không cần có dạng bảng mã.
v.v…
- Ngược lại, cũng có thể thêm liên kết.
- Chuyển một thuộc tính sang thành một lớp, chẳng hạn khi muốn
đưa vào bảng mã tương ứng để hỗ trợ nhập liệu, hạn chế dữ liệu
sai.

III.6.2.7 Thiết lập các phương thức cho mỗi lớp :
Các phương thức sẽ được bổ sung đầy đủ và chính xác sau khi so khớp với các

đồ khác như sơ đồ họat vụ, sơ đồ tuần tự hoặc sơ đồ cộng tác, sơ đồ hoạt động…
Ngược lại, sơ đồ hoạt vụ cũng sẽ được bổ sung sau khi lập các phương thức.

13
Phương thức được thiết lập có thể bao gồm các phương thức lớp hoặc không.

Ví dụ : có sơ đồ lớp như dưới đây và ta muốn thêm phương thức cho lớp
« Lớp »

0 * 0 *
0 *
1
hoc o
- ma lop
- ten lop
- si so
- ban
+ Lop
- ma lop
- ten lop
- si so
- ban
- ma mon
- co thuc hanh
+ Mon
- ma mon
- co thuc hanh

- so tiet
+ Hoc
- so tiet
1 *
1 *
trang bi
+ Phong
- ma TB
- ten TB
- tri gia
+ Thiet bi
- ma TB
- ten TB
- tri gia


Có các loại phương thức sau (phương thức lớp được ký hiệu là « * »):
a. Hiển thị đối tượng đang xét:
Ví dụ :
hienLop() ;

b. Hiển thị tất cả các đối tượng của lớp đang xét (*):
Ví dụ :
hienDsLop() ;

c. Hiển thị tất cả các đối tượng của lớp đang xét, có sắp theo nhóm
(*):
Ví dụ :
hienDsLopTheoSiso();
hienDsLopTheoBan();

hienDsLopTheoMon() ;
hienDsLopTheoThietbi() ;

d. Tìm kiếm đối tượng tương ứng khóa đối tượng (hoặc OID) của
chính lớp đang xét (*) :
Ví dụ :
dsLop (ma_lop : string) : Lop ;

e. Tìm kiếm tất cả các đối tượng hoặc tất cả các khóa đối tượng
(hoặc OID) của chính lớp đang xét (*) :
o Không tham sô
o Có tham số, dựa trên khóa của Class_1 : chỉ trả về tối đa 1
đối tượng
o Có tham số, dựa trên các thuộc tính của Class_1
Lưu ý : Khi tham số tương ứng với khóa của lớp, kết quả trả về chỉ 1
đối tượng. Ngược lại, trả về một mảng nhiều đối tượng, hoặc mảng
nhiều khóa đối tượng.

14
Ví dụ : Ta có các phương thức sau :
dsLop() : Lop[ ] ;
dsLop (ma_lop : string) : Lop ;
dsLop (b : char) : Lop ; // tìm theo ban A, B, C, …
dsLop(si_so : integer) : Lop[ ] ;
dsLop(si_so_min, si_so_max : integer) : Lop[ ] ;

dsMaLop() : string[ ] ;
dsMaLop (b : char) : string; // tìm theo ban của lớp
dsMaLop(si_so : integer) : string[ ] ;
dsMaLop(si_so_min, si_so_max : integer) : string[ ] ;


f. Tìm kiếm các đối tượng/ OID của ít nhất một lớp khác C có liên kết
với đối tượng đang xét c1 của Class_1:
- Khởi đầu từ tìm kiếm qua 1 liên kết :
o Không tham số
o Có tham số, dựa trên các thuộc tính của C
o Có tham số, dựa trên các thuộc tính của lớp liên kết (nếu
có)
Lưu ý : Kết quả trở về củ
a phương thức sẽ là mảng (array) hay
chỉ là một đối tượng hoặc một dữ liệu có kiểu dữ liệu sơ cấp,
tùy thuộc vào bản số của Class_1 tham gia vào liên kết.
Ví dụ :
dsMon() : Mon[] ;
dsMon(co_TH : boolean) : Mon[] ;
dsMon(so_tiet : integer) : Mon[] ;
dsMon(so_tiet_min, so_tiet_max : integer) : Mon[] ;
dsMon(co_TH : boolean, so_tiet : integer) : Mon[] ;
dsMon(co_TH : boolean, so_tiet_min, so_tiet_max : integer) : Mon[] ;
phong(): Phong;

dsMaMon() : string[] ;
dsMon(co_TH : boolean) : string[] ;
dsMaMon(so_tiet : integer) : string[] ;
dsMaMon(so_tiet_min, so_tiet_max : integer) : string[] ;
dsMaMon(co_TH : boolean, so_tiet : integer) : string[] ;
dsMaMon(co_TH : boolean, so_tiet_min, so_tiet_max : integer) :
string[] ;
maPhong(): string;


- Sau đó, có thể mở rộng tìm kiếm các đối tượng có liên kết với đối
tượng đang xét qua n>1 liên kết.
Ví dụ :
dsThietbi(): Thietbi[];
// danh sách thiết bị trong phòng của lớp học đang xét
dsThietbi(tri_gia: longint): Thietbi[];
dsThietbi(tri_gia_min, tri_gia_max: longint): Thietbi[];

g. Thống kê dùng hàm kết tập:
Dùng các hàm kết tập (sum, count, max, min, avg) để tính ra kết quả.

15

×