Thuộc tính của lớp

Một phần của tài liệu phân tích, thiết kế hướng đối tượng bằng uml (Trang 92 - 95)

Thuộc tính của lớp mô tả các đặc tính của các đối tượng trong lớp đó. Ví dụ, mỗi khách hàng của lớp KhachHang họ và tên, địa chỉ, số tài khoản, v.v. Ở mỗi thời

điểm thuộc tính của một đối tượng của một lớp là giá trị dữ liệu logic biểu diễn cho tính chất tương ứng của đối tượng, được gọi là giá trị thuộc tính của đối tượng tại thời

điểm đó.

Mỗi thuộc tính có:

+ Tên của thuộc tính,

+ Kiểu xác định các loại giá trị mà thuộc tính mô tả,

+ Giá trị mặc định (khởi đầu) cho mỗi thuộc tính. Việc gán giá trị khởi đầu cho thuộc tính là tuỳ chọn, không bắt buộc. 1 1 1 1..* 1 1 MatHang Mô-tả 1

ThanhToan KhachHang NguoiBan

PhienBanHang NguoiQL Được-trả Được-quản-lý-bởi 1 1 1 Có 1..* Quản-lý HBH 1 DongBanHang DanhMucMatHang MoTaMatHang CuaHang Được-mô-tả-bởi Ghi-nhận-hàng-bán Có 1 * Chứa 1 1..* 0..1 Được-sử-dụng-trong * * Chứa-trong 1..* 1 1 * 1 1 Thực-hiện 1 1 1 1 1 Được-khởi-động-bởi Được-thực-hiện-bởi Ghi-nhận-bán-hàn

Kiểu của thuộc tính

Kiểu của thuộc tính là kiểu dữ liệu cơ sở hoặc là các lớp đã xây dựng trước. Kiểu thuộc tính nói cho ta biết về 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. được gọi là các kiểu nguyên thuỷ (primitive type). Ngoài các kiểu nguyên thuỷ, người phát triển hệ

thống có thể tạo ra những kiểu mới tuỳ ý.

Phạm vi của thuộc tính

Thuộc tính của lớp còn có thêm đặc tính để thể hiện khả năng nhìn thấy được hay

đặc tính quản lý khả năng truy nhập của thuộc tính đối với các đối tượng khác, gọi chung là phạm vi quan sát (gọi tắt là phạm vi) của thuộc tính nói riêng và của các thành phần trong lớp nói chung. Đó là các đặc tính được khai báo trong lớp bằng các ký hiệu:

‘+’ đứng trước thuộc tính trong UML, hoặc biểu tượng ổ khoá nhưng không bị

khoá trong Rose để thể hiện thuộc tính này là công khai (public), mọi đối tượng đều nhìn thấy được. Bất kỳđối tượng nào trong hệ thống cũng nhì thấy

được và được quyền truy cập từ mọi lớp khác.

‘#’ đứng trước thuộc tính trong UML, hoặc biểu tượng ổ khoá và có chìa để bên cạnh trong Rose để thể hiện thuộc tính này là được bảo vệ (protected), những đối tượng có quan hệ kế thừa có thể nhìn thấy được.

‘-’ đứng trước thuộc tính trong UML, hoặc biểu tượng khoá bị khoá và chìa bị cất

đi trong Rose , để thể hiện thuộc tính này là sở hữu riêng (private), chỉ

bản thân đối tượng của một lớp nhìn thấy được, những đối tượng khác không

được phép truy cập.

Mặc định: trường hợp những thuộc tính không có ký hiệu đặc tính phạm vi nào

đứng trước thì được xem là mặc định, biểu tượng mặc định trong Rose là , nghĩa là những thuộc tính có thể quan sát được đối với các lớp trong cùng gói. Phạm vi mặc định còn được gọi là phạm vi gói hay phạm vi cài đặt (Implementation). Ví dụ: KhachHang hoTen : String diaChi : String taiKhoan : Integer tuoi : Integer

Hình 4-11 Các thuộc tính của lớp trong UML và trong Rose Thuộc tính mặc định KhachHang + hoTen: String - soTaiKhoan: int # diaChi: String tuoi: int

Thuộc tính hoTen có kiểu String và là công khai, soTaiKhoan có kiểu int (các số

nguyên) là riêng còn diaChi là được bảo vệ, có kiểu String.

Lưu ý: Khi cài đặt chương trình thì phạm vi quan sát của thuộc tính còn tuỳ thuộc vào những qui định khác nhau của ngôn ngữ lập trình được lựa chọn. Ví dụ đặc tính mặc định, hay được bảo vệ của thuộc tính trong C++ và Java là khác nhau.

Tính chất lưu trữ thuộc tính

Các thuộc tính trong lớp nếu được xác định thì có thể lưu trữ theo giá tr, hoặc

theo tham chiếu, ngược lại chưa xác định.

ƒ Giá trị (By value): thuộc tính được gán tính chất By value trong mô hình thì nó sẽđược lưu trong lớp bền vững chứa thuộc tính đó.

ƒ Tham chiếu (Reference): thuộc tính được gán giá trị này cho biết nó sẽđược lưu trữở bên ngoài lớp, nhưng có con trỏ tham chiếu đến nó.

ƒ Chưa xác định (Unspecified): thuộc tính được gán tính chất này cho biết cách lưu trữ là chưa xác định, nhưng khi phát sinh mã chương trình thì Rose coi là By value.

Thuộc tính tĩnh (static)

Thông thường mỗi thuộc tính có một bản sao dữ liệu riêng cho từng đối tượng của một lớp. Ví dụ, lớp NguoiBanHang của một Công ty có thuộc tính tenGoi và

taiKhoan. Khi thực hiện hệ thống tạo ra hai đối tượng là hai người bán hàng cụ thể và mỗi đối tượng có một bản sao tenGoi và taiKhoan riêng, như vậy mỗi người sử dụng một tài khoản riêng. Việc này không thật phù hợp với thực tế, vì tất cả những người bán hàng chỉ có chung một tài khoản, đó là tài khoản của Công ty. Việc này có thể

thực hiện được bằng cách sử dụng thuộc tính static cho taiKhoan.

Những thuộc tính khai báo static trong một lớp là những thuộc tính được chia sẻ đối với tất cả các đối tượng, nghĩa là chỉ có một bản sao dữ liệu cho tất cả các đối tượng của lớp đó.

UML biểu diễn thuộc tính static bằng 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 có thể được suy dẫn từ những thuộc tính khác. Ví dụ, lớp

HinhChuNhat có thuộc tính chieuCao, chieuRong, nếu có thêm thuộc tính dienTich thì tất nhiên dienTich là có thể suy ra từ tích của chieuCao * chieuRong.

Trong UML, thuộc tính suy dẫn được ký hiệu bằng dấu ‘/’ trước tên thuộc tính.

Đặc tính lưu trữđối tượng

Trong các hệ thống đối tượng, có những đối tượng cần phải được lưu trữ vào CSDL được gọi là đối tượng duy trì, những đối tượng không cần lưu trữ ở bộ nhớ

ngoài được gọi là đối tượng không bền vững. Trong Rose có thể gán đặc tính lưu trữ

ƒ Persistent: cho những lớp có các đối tượng được lưu trữ trong CSDL hay trong một khuôn mẫu nào đó, nghĩa là chúng vấn tồn tại khi hệ thống không thực hiện.

ƒ Transient: cho những lớp mà các đối tượng của nó không cần lưu trữ vào bộ

nhớ ngoài.

ƒ Absract: cho những lớp trừu tượng, những lớp không có đối tượng thể hiện trong thực tế. Thường lớp trừu tượng được xây dựng làm các lớp cơ sở cho các lớp khác kế thừa.

Một phần của tài liệu phân tích, thiết kế hướng đối tượng bằng uml (Trang 92 - 95)

Tải bản đầy đủ (PDF)

(182 trang)