- 17
7.4.1 Tạo lập các định nghĩa lớp từ những thiết kế biểu đồ lớp
Trongphathiếtkế,biểuđồlớpđượcxâydựngchitiếtđểmôtảđầyđủtêngọicủa lớp,têncácthuộctính,cáchàmthànhphầnvàmốiquanhệcủacácđốitượngtronghệ thống. Những kết quả đó đủ để tạo ra các định nghĩa lớp trong ngôn ngữ lập trình hướngđốitượngnhưC++.
Địnhnghĩalớpvớicáchàmvàthuộctínhđơn
-142-
- Các thuộc tínhđơn đượcchuyển tương ứng sang các biến có kiểu dữ liệu phùhợp,
- Cáchàmđượcchuyểnsangcáchàm prototype. Vídụ,địnhnghĩalớpDongBanHangtrongC++nhưsau:
class DongBanHang{
DongBanHang(MoTaMatHang mTa, int soLuong); public float subtotal();
private int soLuong; } DongBanHang soLuong: Int subtotal(): Number * Được-mô-tả-bởi 1 MoTaMatHang upc: UPC giaBan: Number moTa: Text
Hình7-4Địnhnghĩalớpdựavàobiểuđồlớp
Lưu ý: khi định nghĩa, chúng ta thường phải bổ sung thêm hàm tạo lập
(constructor)đểtạo ranhững đốitượngkhicầnsửdụng trongchươngtrình. Điềunày cũng được suyra từ biểu đồ cộng tác hình 6.20, trongđó :DongBanHangnhận được thông điệp create(mt, n ) để tạo radòng bán hàng với mô tả là mt và số lượng là n.
ĐiềunàyđượctoántửtạolậptrongC++làhàmcócùngtênvớitêncủalớphỗtrợ. Chúng tacũngnhận thấy, dữ liệukếtquả củahàm subtotal()làđã bịthayđổi, từ kiểu Number trong thiếtkế đượcchuyển thành float. Nghĩalà người lập trình có thể chọnnhữngkiểudữliệuthíchhợp chocácbiếnthuộctínhvàcáchàm,chứkhôngnhất thiếtphảitheođúngbảnthiếtkế.
Bổsungthêmcácthuộctínhthamchiều
Thuộc tính tham chiếu là thuộc tính được sửdụng để tham chiếu đến đối tượng phứchợpkhác,khôngphảilànhữngkiểudữliệunguyên thuỷ.
Thuộc tính tham chiếu của một lớp được đề xuất bởi những quan hệ kết hợp và sự điều khiển trong thiết kế biểu đồ lớp.
Ví dụ:trong biểu đồ lớp của hệthống bán hàng, lớp DongBanHang có quan hệ
kết hợp với MoTaMatHang vàmũitên điềukhiển chỉhướnggửithôngđiệp khitrao đổi thôngtinnhưhình7-4.Trong C++,điềunàycó nghĩalàtronglớpDongBanHang
phảikhaibáobiếnthamchiếutớiMoTaMatHang.
Thuộc tính tham chiếu thường là không tường minh, chúng được suy ra từ các mối quanhệtrongbiểuđồlớp. Đôikhi, nếu vai tròcủađầuquanhệcómặttrongbiểu
- 143 -
đồ lớp thì chúng ta cũng có thể sửdụng như là tên của thuộc tính tham chiếu. Định nghĩacủalớp DongBanHang,dovậyđượcđịnhnghĩahoànchỉnhnhưhình7-5.
class DongBanHang{
DongBanHang(MoTaMatHang mTa, int soLuong);
biến đơn
biến tham chiếu
DongBanHang soLuong: Int subtotal(): Numbe r
public float subtotal(); private int soLuong;
private MoTaMatHang moTa; } * Được-mô-tả-bởi 1 moTa MoTaMatHang upc: UPC giaBan: Number moTa: Text
Tên của vai trò được sử dụng trong tên của thuộc tính
Hình7-5Bổsungthêmthuộctínhthamchiếuvàolớp
Tươngtựnhưtrên, chúngtacóthểđịnhnghĩacáclớp khác,vídụlớpHBHđược địnhnghĩanhưhình7-6.
public class HBH{
HBH(DanhMucMatHang pc); public void endSale();
public void enterItems();
public void makePayment(float soTien);
Tìm-trong DanhMucMatHang
private PhienBanHang banHang ; private DanhMucMatHang muc; } 1 Specification() 1 HBH endSale() enterItems() makePayment(soTien: Number ) Ghi_nhận 1 1 PhienBanHang ngayBan: Date gioBan: Time isComplete: Boolean becomeComplete() makeLineItem() total() Hình7-6ĐịnhnghĩalớpHBH
- 144 -