Trong pha thiết kế, biểu đồ lớp được xây dựng chi tiết để mô tảđầy đủ tên gọi của lớp, tên các thuộc tính, các hàm thành phần và mối quan hệ của các đối tượng trong hệ
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 đối tượng như C++.
Định nghĩa lớp với các hàm và thuộc tính đơn
Từ các lớp đã được thiết kế chi tiết, thực hiện ánh xạ như sau:
- Các thuộc tính đơn được chuyển tương ứng sang các biến có kiểu dữ liệu phù hợp,
- Các hàm được chuyển sang các hàm prototype. Ví dụ, định nghĩa lớp DongBanHang trong C++ như sau:
Hình 7-5 Định nghĩa lớp dựa vào biểu đồ lớp * Được-mô-tả-bởi 1 DongBanHang soLuong: int subtotal(): Number MoTaMatHang upc: UPC giaBan: Number moTa: Text class DongBanHang{
DongBanHang(MoTaMatHang mTa, int soLuong); public float subtotal();
private int soLuong; }
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 ra những đối tượng khi cần sử dụng trong chương trình. Điều này cũng được suy ra từ biểu đồ cộng tác hình 6.20, trong đó :DongBanHang nhận được thông điệp create(mt, n) để tạo ra dòng bán hàng với mô tả là mt và số lượng là n. Điều này được toán tử tạo lập trong C++ là hàm có cùng tên với tên của lớp hỗ trợ.
Chúng ta cũng nhận thấy, dữ liệu kết quả của hàm subtotal() là đã bị thay đổi, từ kiểu Number trong thiết kế được chuyển thành float. Nghĩa là người lập trình có thể
chọn những kiểu dữ liệu thích hợp cho các biến thuộc tính và các hàm, chứ không nhất thiết phải theo đúng bản thiết kế.
Bổ sung thêm các thuộc tính tham chiề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ức hợp khác, không phải là những kiểu dữ liệu nguyên thuỷ.
Thuộc tính tham chiếu của một lớp được xác định 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ũi tên điều khiển chỉ hướng gửi thông điệp khi trao
đổi thông tin như hình 7-4. Trong C++, điều này có nghĩa là trong lớp DongBanHang
phải khai báo biến tham chiếu tới MoTaMatHang.
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 quan hệ trong biểu đồ lớp. Đôi khi, nếu vai trò của đầu quan hệ có mặt trong biểu
đồ 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ĩa của lớp DongBanHang, do vậy được định nghĩa hoàn chỉnh như hình 7-6.
Hình 7-6 Bổ sung thêm thuộc tính tham chiếu vào lớp Tên của vai trò được sử dụng trong
tên của thuộc tính
class DongBanHang{
DongBanHang(MoTaMatHang mTa, int soLuong); public float subtotal();
private int soLuong;
private MoTaMatHang moTa; } * Được-mô-tả-bởi 1 DongBanHang soLuong: int subtotal(): Number MoTaMatHang upc: UPC giaBan: Number moTa: Text moTa biến đơn biến tham chiếu
Tương tự như trên, chúng ta có thểđịnh nghĩa các lớp khác, ví dụ lớp HBH được
định nghĩa như hình 7-7.
Hình 7-7 Định nghĩa lớp HBH