Thuộc tính lớp Thuộc tính lớp Bởi: Đoàn Văn Ban Mỗi thuộc tính có: + Tên thuộc tính, + Kiểu xác định loại giá trị mà thuộc tính mô tả, + Giá trị mặc định (khởi đầu) cho thuộc tính Việc gán giá trị khởi đầu cho thuộc tính tuỳ chọn, không bắt buộc Kiểu thuộc tính Kiểu thuộc tính kiểu liệu sở lớp xây dựng trước Kiểu thuộc tính nói cho ta biết loại giá trị kiểu số nguyên (Integer, int), số thực (Real, Float), giá trị logic (Boolean), ký tự (Character), thời gian (Time), v.v gọi kiểu nguyên thuỷ (primitive type) Ngoài kiểu nguyên thuỷ, người phát triển hệ thống tạo kiểu tuỳ ý Phạm vi thuộc tính Thuộc tính lớp có thêm đặc tính để thể khả nhìn thấy hay đặc tính quản lý khả truy nhập thuộc tính đối tượng khác, gọi chung phạm vi quan sát (gọi tắt phạm vi) thuộc tính nói riêng thành phần lớp nói chung Đó đặc tính khai báo lớp ký hiệu: ‘+’ đứng trước thuộc tính UML, biểu tượng ổ khoá không bị khoá Rose để thể thuộc tính công khai (public), đối tượng nhìn thấy Bất kỳ đối tượng hệ thống nhì thấy quyền truy cập từ lớp khác ‘#’ đứng trước thuộc tính UML, biểu tượng ổ khoá có chìa để bên cạnh Rose để thể thuộc tính bảo vệ (protected), đối tượng có quan hệ kế thừa nhìn thấy 1/7 Thuộc tính lớp ‘-’ đứng trước thuộc tính UML, biểu tượng khoá bị khoá chìa bị cất Rose, để thể thuộc tính sở hữu riêng (private), thân đối tượng lớp nhìn thấy được, đối tượng khác không phép truy cập Mặc định: trường hợp thuộc tính ký hiệu đặc tính phạm vi đứng trước xem mặc định, biểu tượng mặc định Rose , nghĩa thuộc tính quan sát lớp gói Phạm vi mặc định gọi phạm vi gói hay phạm vi cài đặt (Implementation) Các thuộc tính lớp UML Rose Thuộc tính hoTen có kiểu String công khai, soTaiKhoan có kiểu int (các số nguyên) riêng diaChi bảo vệ, có kiểu String Khi cài đặt chương trình phạm vi quan sát thuộc tính tuỳ thuộc vào qui định khác ngôn ngữ lập trình lựa chọn Đặc tính mặc định, hay bảo vệ thuộc tính C++ Java khác Tính chất lưu trữ thuộc tính Các thuộc tính lớp xác định lưu trữ theo giá trị, theo tham chiếu, ngược lại chưa xác định • Giá trị (By value): thuộc tính gán tính chất By value mô hình lưu lớp bền vững chứa thuộc tính • Tham chiếu (Reference): thuộc tính gán giá trị cho biết lưu trữ bên lớp, có trỏ tham chiếu đến • Chưa xác định (Unspecified): thuộc tính gán tính chất cho biết cách lưu trữ chưa xác định, phát sinh mã chương trình Rose coi By value Thuộc tính tĩnh (static) Thông thường thuộc tính có liệu riêng cho đối tượng lớp 2/7 Thuộc tính lớp Lớp NguoiBanHang Công ty có thuộc tính tenGoi taiKhoan Khi thực hệ thống tạo hai đối tượng hai người bán hàng cụ thể đối tượng có tenGoi taiKhoan riêng, người sử dụng tài khoản riêng Việc không thật phù hợp với thực tế, tất người bán hàng có chung tài khoản, tài khoản Công ty Việc thực cách sử dụng thuộc tính static cho taiKhoan Những thuộc tính khai báo static lớp thuộc tính chia sẻ tất đối tượng, nghĩa có liệu cho tất đối tượng lớp UML biểu diễn thuộc tính static dấu ‘$’ trước tên thuộc tính Thuộc tính suy dẫn(derived) Một số thuộc tính suy dẫn từ thuộc tính khác Lớp HinhChuNhat có thuộc tính chieuCao, chieuRong, có thêm thuộc tính dienTich tất nhiên dienTich suy từ tích chieuCao * chieuRong Trong UML, thuộc tính suy dẫn ký hiệu dấu ‘/’ trước tên thuộc tính Đặc tính lưu trữ đối tượng Trong hệ thống đối tượng, có đối tượng cần phải lưu trữ vào CSDL gọi đối tượng trì, đối tượng không cần lưu trữ nhớ gọi đối tượng không bền vững Trong Rose gán đặc tính lưu trữ cho lớp, đặc tính là: • Persistent: cho lớp có đối tượng lưu trữ CSDL hay khuôn mẫu đó, nghĩa chúng vấn tồn hệ thống không thực • Transient: cho lớp mà đối tượng không cần lưu trữ vào nhớ • Absract: cho lớp trừu tượng, lớp đối tượng thể thực tế Thường lớp trừu tượng xây dựng làm lớp sở cho lớp khác kế thừa Tìm kiếm thuộc tính Với lớp tạo biểu đồ lớp hình 4-10, mong muốn tìm thuộc tính cho: • Đầy đủ: chứa đựng tất thông tin đối tượng lớp, 3/7 Thuộc tính lớp • Tách biệt hoàn toàn: thuộc tính thể đặc tính khác đối tượng, • Độc lập với nhau: đối tượng, giá trị thuộc tính độc lập với đối tượng khác, tốt loại bỏ thuộc tính suy dẫn từ thuộc tính khác • Liên quan đến yêu cầu ca sử dụng: thuộc tính đưa vào lớp phải xác định sở yêu cầu thực công việc cần để tổ chức, lưu trữ, trao đổi thông tin đối tượng Trong mô hình hoá khái niệm, có nhầm lẫn giống Nhiều ta sử dụng thuộc tính để biểu diễn cho mà phải sử dụng khái niệm lớp hay mối quan hệ liên kết để thể chúng Sau xét số lưu ý nhằm xác định xác thuộc tính cho lớp nhằm đáp ứng nguyên tắc tránh sai sót Đảm bảo thuộc tính đơn giản Các thuộc tính mô hình lớp phải thuộc tính đơn giản kiểu liệu tuý: • Một cách trực quan, thuộc tính đơn giản thuộc tính có giá trị kiểu liệu nguyên thuỷ: Boolean, Number, String (Text), Time, v.v • Một số kiểu phổ dụng bao gồm: DiaChi (Address), MauSac (Color), HinhHoc (Geometrics), SoDienThoai (PhoneNumber), SoBaoHiem (SocialSecurityNumber), MaSanPham (Universa ProductCode), kiểu liệt kê (EnumeratedTypes), v.v Thông thường, nên cố tránh thuộc tính phức tạp nên thay vào quan hệ liên kết lớp Hãy xét lớp NguoiBan, đưa thuộc tính heThongHienThoi vào để thể người bán hàng sử dụng hệ thống bán hàng Bởi hệ thống HBH lớp, nên kiểu phức tạp Do vậy, cách làm tốt (hình 2) Để thể mối quan hệ này, ta sử dụng mối quan hệ kết hợp hình Trường hợp thiết kế lớp không tốt 4/7 Thuộc tính lớp Tốt chuyển thuộc tính phức thành quan hệ kết hợp Qui tắc hướng dẫn là: Liên kết khái niệm với quan hệ kết hợp, không thuộc tính phức hợp Sử dụng giá trị liệu tuý Nói cách tổng quát, thuộc tính phải có giá trị liệu tuý kiểu Data Type UML, việc xác định nhiều ý nghĩa ngữ cảnh mô hình hệ thống Đối với kiểu liệu nguyên thuỷ thì: + Không cần tách biệt giá trị số giống nhau, + Không cần tách biệt thể SoDienThoai mà chúng có số, + Không cần tách biệt hai địa chúng giống nhau, v.v Song, đối tượng việc phân biệt chúng (thông qua định danh) lại có ý nghĩa bắt buộc Ví dụ, hai khách hàng tên “Nguyễn Lam”, hệ thống phải xác định riêng biệt định danh Qui tắc hướng dẫn thứ hai là: Phần tử kiểu liệu tuý xác định thuộc tính lớp, sử dụng khái niệm (lớp) tách biệt mô hình Không sử dụng thuộc tính khoá ngoại Các thuộc tính không nên sử dụng để liên kết khái niệm lại với mô hình khái niệm, mà sử dụng để lưu giữ thông tin đối tượng lớp có thuộc tính Trong thiết kế mô hình CSDL quan hệ nguyên lý bị vi phạm vì, người ta thường sử dụng thuộc tính khoá ngoại để kết nối hai kiểu thực thể với 5/7 Thuộc tính lớp Trong hình 4, lớp NguoiBan có thuộc tính soHieuHT xem khoá ngoại để thể người bán hàng sử dụng hệ thống bán hàng có số hiệu xác định Mặc dù thuộc tính thuộc tính đơn (không vi phạm hướng dẫn 1), khoá ngoại không tốt đó, nên thay quan hệ kết hợp hình Trường hợp sử dụng khóa ngoại Tốt chuyển thuộc tính phức thành quan hệ kết hợp Từ ta có qui tắc hướng dẫn thứ ba Nên kết nối khái niệm với quan hệ kết hợp, không sử dụng thuộc tính (khoá ngoại) Tìm thuộc tính đâu nào? • Đọc kỹ mô tả toán, nghiên cứu hồ sơ chức hệ thống, đặt tả ca sử dụng, kịch để tìm tất thông tin, liệu cần phải lưu trữ, xử lý cập nhật Các mục thường danh từ, mệnh đề danh từ đơn, xem đại biểu thuộc tính Khi xem xét luồng kiện: “Đối với mặt hàng, người bán nhập vào mã sản phẩm thông qua máy đọc thẻ số lượng hàng mà khách hàng chọn mua” Như vậy, lớp MatHang tất nhiên phải có thuộc tính maSanPham, qua xác định tên gọi, chủng loại, giá bán, v.v thuộc tính MoTaMatHang • Sử dụng qui tắc hướng dẫn nêu để xác định xác thuộc tính: đặc tính xác định phạm vi quan sát, tên gọi, kiểu giá trị khởi đầu (nếu có) thuộc tính • Đọc giả thiết, phân loại hay qui ước cần áp dụng cho hệ thống thời để khẳng định lại thuộc tính lớp • Gán thuộc tính cho lớp đối tượng biểu đồ lớp 6/7 Thuộc tính lớp Các thuộc tính lớp HBH Theo cách hướng dẫn nêu trên, xác định thuộc tính cho lớp để thực ca sử dụng “Mua hàng tiền mặt” biểu đồ sau: Các thuộc tính lớp Đó thuộc tính xác định để thực ca sử dụng “Thanh toán tiền mặt” Tương tự, xem xét chức hệ thống, nghiên cứu ca sử dụng lại dựa vào tài liệu khác để xác định đầy đủ xác thuộc tính cho lớp đối tượng Biểu đồ lớp với thuộc tính mô tả cấu trúc tĩnh hệ thống Nó mô tả mối liên kết có cấu trúc mục liệu thao tác, xử lý hệ thống Nó mô tả cách thông tin phân chia thành phần cho đối tượng, cách đối tượng chia thành lớp thể mối quan hệ đối tượng Tóm lại, mô hình khái niệm tập trung mô tả: • Những khái niệm lớp đối tượng hệ thống, • Các mối liên kết lớp, • Các thuộc tính lớp 7/7