Professional Documents
Culture Documents
Hienlth Ooad 05 Classdiagram
Hienlth Ooad 05 Classdiagram
Một số ký hiệu
Tên class Tên class
(Các) thuộc tính
• Class Name:
• Literal string
• Noun
Professor Class Name
- startDate = 01/01/08
Attributes
# professionals = null
- ComposeCourse()
# ReviewCourse() Operations
+ GetStartDate()
• Attribute format
• Visibility Attribute_Name : Type = Initial_value
• Operation format
• Visibility Op_Name(ParamsName: Type): return_Value/Type
Class
- privateAttribute
# protectedAttribute
Phương thức
+publicOp() Private
# protectedOp()
- privateOp() Phương
thức
Protected
Phương
thức Public
OOAD CH5 - 13 HIENLTH
Tầm vực
- classifierScopeAttribute
- instanceScopeAttribute
classifierScopeOperation()
instanceScopeOperation()
CStudent
- name
- address
- studentID
- nextAvailID : int
Italic
Window
Person
+ Talk(): void
SystemMenu TitleBar + GetAge(): Int
• Cùng với chuyên gia lĩnh vực vấn đề trả lời các câu hỏi sau
đây để tìm ra lớp
• Có thông tin nào cần lưu trữ hay phân tích? Nếu có, nó là lớp
• Có hệ thống ngoài không? Nếu có thì nó được xem như những
lớp chứa trong hệ thống của ta hay hệ thống của ta tương tác với
chúng
• Có mẫu, thư viện lớp, thành phần...? Nếu có, thông thường chúng
chứa các ứng viên lớp
• Hệ thống cần quản lý các thiết bị ngoại vi nào? Mọi thiết bị kỹ
thuật nối với hệ thống đều là ứng viên lớp.
• Tác nhân đóng vai trò tác nghiệp nào? Các nhiệm vụ này có thể là
lớp; thí dụ người sử dụng, thao tác viên hệ thống, khách hàng...
• Thể hiện:
• Quan hệ kế thừa
ClassA
ClassB
Role Names
OOAD CH5 - 28 HIENLTH
Ví dụ
Role
name
Association
name
instructor
StaffMember Student
1..* instructs *
Role
Navigable
Multiplicity (uni-directional)
association *
pre-requisites
Courses
0..3
Reflexive
association
Whole Part
Aggregation
Company Department
Whole Part
• Cụm từ “bộ phận của” (part of) được sử dụng để mô tả quan hệ?
• Cánh cửa là một bộ phận của xe hơi
• Có phải một số hành vi của toàn thể đuợc áp dụng tự động cho bộ
phận của nó?
• Xe hơi di chuyển, cửa di chuyển.
• Có phải một vài giá trị thuộc tính của toàn thể kéo theo một số
thuộc tính của bộ phận?
• Xe hơi màu xanh nên cửa màu xanh.
• Có tồn tại sự không đảo chiều giữa các lớp cho quan hệ kết tập?
• Cửa là bộ phận của xe hơi. Xe hơi không là bộ phận của cửa.
• Quan hệ Composition
ClassA ClassB
Customer Order
class Customer
{
Order order ;
// other attributes here Composition
Customer(int customerID ,string orderinfo , string
deliverydate )
{
order = new Order(orderinfo);
// other code here
}
}
// Elsewhere in code
Customer customer = new Customer(1, "Noodle" ,"20170117");
OOAD CH5 - 36 HIENLTH
Quan hệ giữa các lớp đối tượng
ClassA ClassB
• Quan hệ Dependency
ClassA ClassB
+ foo():void + bar():void
Class A
{
public void foo()
{
B b = new B();
b.bar();
//more code here
}
}
• “Using” as parameter
A B
+ foo(b:B):void + bar():void
Class A
{
public void foo(B b)
{
b.bar();
//more code here
}
}
+ foo():void + bar():void
Class A Class B
{ {
public void foo() public static void bar()
{ {
B.bar(); //more code here
//more code here }
} }
}
OOAD CH5 - 44 HIENLTH
Lớp kết hợp (Association Classes)
A 1 1
B
A 1 0..3 B
Khách hàng Tài khoản
A 1 * B
Khách hàng Đơn hàng
A 0..* 1..* B
Sinh viên Khóa học
A D E
1
*
B C
Part-time staff
C <<interface>> D <<interface>>
ButtonListener Shape
ButtonDialerAdapter Circle
Mô hình hoá sự tương tác giữa hệ thống và môi trường bao quanh nó
Register for
Course
Student
CLASS DIAGRAM
Tiêu chuẩn nhận dạng đối tượng: có rất nhiều trường phái
0..1
0..* 0..*
Thuoc
CGiangVien
+ GVID : long 0..*
+ MaGV : string
+ HocVi : string CNganh
+ ChucDanh : string
+ TenVT : string + NganhID : long
+ Ho : string + MaNganh : string
+ Ten : string + TenNganh : string
+ DiaChi : string + TenVT : string
+ DienThoai : string
+ Email : string
0..* +
CNganh
NganhID : long
+
CLOP
LOPID : long
# KhoaID : int + MALOP : string
+ MaNganh : string 0..*
+ MaKhoa : string + TENLOP : string
- TenKhoa : string + TenNganh : string
0..1 + NAMTS : short
+ TenVT : string
+ TenVT : string
0..1
0..1
Co
0..* 0..*
0..1
Thuoc
0..* CGiangVien CLOPNK
CTKB
CBoMon + LOPNKID : long
+ GVID : long
+ TKBID : long + NAM : short
+ BMID : long 0..* + MaGV : string
+ TKB : string + NAMHOC : short
+ MaBM : string + HocVi : string
+ HOCKY : short
+ TenBM : string + ChucDanh : string
+ NAMHOC : short
+ Insert () : int + TenVT : string
0..1 + NGAYBD : DateTime
+ Ho : string 0..*
+ NGAYKT : DateTime 0..1
+ Ten : string 0..1
+ DiaChi : string 1..1 0..*
+ DienThoai : string CTKBLOP
+ Email : string + TKBLOPID : long
CMONHOC 1..1
+ MonID : long 0..*
+ MaMon : string
+ TenMon : string
0..* CTKBLOP_CHITIET
+ TinChi : short
+ SoTietLT : short + THU : short
+ SoTietBT : short + TIETBD : short
+ TenVT : string 1..1 + TIETKT : short
0..*
+ LYTHUYET : short
+ Them () : void
+ Xoa () : void + PHONG : string
+ Sua () : void
+ LayDL () : void