Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp

Biểu diễn thuộc tính

n Chỉ ra tên, kiểu và giá trị mặc định nếu có

n attributeName : Type = Default

n Tuân theo quy ước đặt tên của ngôn ngữ cài

đặt và của dự án.

n Kiểu (type) nên là kiểu dữ liệu cơ bản trong

ngôn ngữ thực thi

n Kiểu dữ liệu có sẵn, kiểu dữ liệu người dùng định

nghĩa, hoặc lớp tự định nghĩa.

Mô tả phương thức

n Tên phương thức:

n Mô tả kết quả

n Sử dụng góc nhìn của đối tượng khách (client – đ

ối tượng gọi)

n Nhất quán giữa các lớp

n Chữ ký của phương thức:

operationName([direction] parameter:class,.):returnType

n Direction: in (mặc định), out hoặc inout

public protecte

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 1

Trang 1

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 2

Trang 2

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 3

Trang 3

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 4

Trang 4

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 5

Trang 5

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 6

Trang 6

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 7

Trang 7

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 8

Trang 8

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 9

Trang 9

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp trang 10

Trang 10

pdf 10 trang duykhanh 9400
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp

Bài giảng Lập trình hướng đối tượng - Bài 12: Biểu đồ lớp
 12/27/17
 Mục đích
 Bộ môn Công nghệ Phần mềm n Mô tả khung nhìn tĩnh của hệ thống và cách 
 Viện CNTT & TT đưa nó vào trong một mô hình.
 Trường Đại học Bách Khoa Hà Nội n Minh họa cách đọc và hiểu một biểu đồ lớp.
 n Mô hình hóa mối liên kết (association) và kết 
 tập (aggregation) và chỉ ra cách mô hình chú
 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ng vào biểu đồ lớp.
 Bài 12. Biểu đồ lớp n Mô hình tổng quát hóa (generalization) trên 
 một biểu đồ lớp.
 2
 Nội dung Nội dung
1. Biểu đồ lớp (Class diagram) 1. Biểu đồ lớp (Class diagram)
2. Liên kết (Association) 2. Liên kết (Association)
3. Kết tập (Aggregation) 3. Kết tập (Aggregation)
4. Tổng quát hóa (Generalization) 4. Tổng quát hóa (Generalization)
 3 4
 1
 12/27/17
 1.1. Lớp (Class) Biểu diễn thuộc tính
n Sử dụng hình chữ nhật gồm 3 thành phần n Chỉ ra tên, kiểu và giá trị mặc định nếu có
 n Tên lớp n attributeName : Type = Default
 n Các thuộc tính n
 Class_Name Tuân theo quy ước đặt tên của ngôn ngữ cài 
 n Các phương thức attribute1 đặt và của dự án.
 attribute2
 attribute3 n Kiểu (type) nên là kiểu dữ liệu cơ bản trong 
 method1() ngôn ngữ thực thi
 method2()
 method3() n Kiểu dữ liệu có sẵn, kiểu dữ liệu người dùng định 
 nghĩa, hoặc lớp tự định nghĩa.
 5 6
 Mô tả phương thức Phạm vi truy cập (Visibility)
n Tên phương thức: n Phạm vi truy cập được sử dụng để thực hiện 
 n Mô tả kết quả khả năng đóng gói
 n Sử dụng góc nhìn của đối tượng khách (client – đ
 ối tượng gọi)
 private
 n Nhất quán giữa các lớp
n Chữ ký của phương thức:
 operationName([direction] parameter:class,...):returnType
 public protected
 n Direction: in (mặc định), out hoặc inout 
 7 8
 2
 12/27/17
 Phạm vi truy cập được biểu diễn như thế 
 nào? Phạm vi (Scope)
n Các ký hiệu sau được sử dụng: n Xác định số lượng thể hiện của thuộc 
 n + Public access tính/thao tác:
 n # Protected access n Instance: Một thể hiện cho mỗi thể hiện của mỗi lớp
 n - Private access n Classifier: Một thể hiện cho tất cả các thể hiện của lớp
 Class1 n Phạm vi Classifier được ký hiệu bằng cách 
 - privateAttribute
 + publicAttribute gạch dưới tên thuộc tính/thao tác.
 # protectedAttribute
 - privateOperation ()
 + publicOPeration () Class1
 # protecteOperation ()
 - classifierScopeAttr
 - instanceScopeAttr
 + classifierScopeOp ()
 + instanceScopeOp ()
 9 10
 Ví dụ: Scope 1.2. Biểu đồ lớp là gì?
 n Biểu đồ lớp chỉ ra sự tồn tại của các lớp và m
 ối quan hệ giữa chúng trong bản thiết kế 
 Student logic của một hệ thống
 n Chỉ ra cấu trúc tĩnh của mô hình như lớp, cấu trúc bên 
 - name
 - address trong của chúng và mối quan hệ với các lớp khác.
 - studentID n Chỉ ra tất cả hoặc một phần cấu trúc lớp của một hệ thố
 - nextAvailID : int ng.
 n Không đưa ra các thông tin tạm thời.
 + addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester)
 + getSchedule ([in] forSemester : Semester) : Schedule n
 + hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean Khung nhìn tĩnh của một hệ thống chủ yếu h
 # passed ([in] theCourseOffering : CourseOffering) : boolean ỗ trợ các yêu cầu chức năng của hệ thống.
 + getNextAvailID () : int
 11 12
 3
 12/27/17
 Biểu đồ lớp (Class Diagram – CD) Khi nào sử dụng biểu đồ lớp?
n Khung nhìn tĩnh của hệ thống n Từ vựng của hệ thống (Vocabulary)
 n Khi trừu tượng hóa một phần hoặc bên ngoài hoặc biên c
 CloseRegistrationForm Schedule CloseRegistrationController ủa hệ thống. 
 - semester
 n Chỉ ra kết quả trừu tượng hóa và trách nhiệm của chúng
 + open() + is registration open?()
 + close registration() + commit() + close registration()
 + select alternate() n Cộng tác (Collaboration)
 + remove offering()
 n Nhóm các lớp và các thành phần khác làm việc cùng 
 + level() Professor
 + cancel() - name nhau để thực hiện một công việc nào đó.
 Student + get cost() - employeeID : UniqueId
 + delete() - hireDate n Lược đồ CSDL logic (Logical database 
 + submit() - status
 + get tuition()
 + save() - discipline
 + add schedule() schema)
 + any conflicts?() - maxLoad
 + get schedule()
 + create with offerings() n Tương tự như bản thiết kế khái niệm cho CSDL
 + delete schedule()
 + update with new selections() + submitFinalGrade()
 + has pre-requisites() n Chứa các đối tượng cần lưu trữ lâu dài tức là cần lưu 
 + acceptCourseOffering()
 + setMaxLoad() trong CSDL
 + takeSabbatical()
 + teachClass()
 13 14
 Ví dụ Biểu đồ lớp Gói (package)
n Có cách nào tốt hơn để tổ chức biểu đồ lớp? n Một cơ chế chung để tổ chức các phần tử th
 ành nhóm.
 LoginForm RegistrationController n Một phần tử trong mô hình có thể chứa các 
 RegisterForCoursesForm phần tử khác.
 Schedule
 CloseRegistrationForm CloseRegistrationController
 University 
 Professor Artifacts
 Student
 Course CourseOffering
 CourseCatalogSystem
 BillingSystem
 15 16
 4
 12/27/17
 Ví dụ: Registration Package Nội dung
 1. Biểu đồ lớp (Class diagram)
 2. Liên kết (Association)
 Registration
 3. Kết tập (Aggregation)
 CloseRegistrationController
 CloseRegistrationForm 4. Tổng quát hóa (Generalization)
 RegisterForCoursesForm RegistrationController
 17 18
 Liên kết (association) là gì? Bội số quan hệ (Multiplicity)
n Mối liên hệ ngữ nghĩa giữa hai hay nhiều lớp n Bội số quan hệ là số lượng thể hiện của một l
 chỉ ra sự liên kết giữa các thể hiện của chúng ớp liên quan tới MỘT thể hiện của lớp khác.
n Mối quan hệ về mặt cấu trúc chỉ ra các đối tư n Với mỗi liên kết, có hai bội số quan hệ cho 
 ợng của lớp này có kết nối với các đối tượng hai đầu của liên kết.
 của lớp khác. n Với mỗi đối tượng của Professor, có nhiều Course 
 Offerings có thể được dạy.
 n Với mỗi đối tượng của Course Offering, có thể có 
 Student Schedule Course 1 hoặc 0 Professor giảng dạy.
 instructor
 Professor CourseOffering
 0..1 0..*
 19 20
 5
 12/27/17
 Biểu diễn bội số quan hệ Ví dụ về bội số quan hệ
 Unspecified
 Exactly One 1
 1
 RegisterForCoursesForm RegistrationController
 1
 Zero or More 0..*
 0..1
 Zero or More *
 One or More 1..*
 0..1
 Zero or One (optional value) 0..1
 1 0..*
 Student Schedule CourseOffering
 Specified Range 2..4 0..* 0..4
 Multiple, Disjoint Ranges 2, 4..6
 21 22
 Nội dung Kết tập (aggregation) là gì?
1. Biểu đồ lớp (Class diagram) n Là một dạng đặc biệt của liên kết mô hình hó
 a mối quan hệ toàn thể-bộ phận (whole-part) 
2. Liên kết (Association) giữa đối tượng toàn thể và các bộ phận của 
3. Kết tập (Aggregation) nó.
 n Kết tập là mối quan hệ “là một phần” (“is a part-
4. Tổng quát hóa (Generalization) of”).
 n Bội số quan hệ được biểu diễn giống như các 
 liên kết khác
 Whole 1 Part
 0..1
 23 24
 6
 12/27/17
 Ví dụ về kết tập Cấu thành (Composition) là gì?
 n Một dạng của kết tập với quyền sở hữu mạnh 
 và các vòng đời trùng khớp giữa hai lớp
 1
 RegisterForCoursesForm RegistrationController n Whole sở hữu Part, tạo và hủy Part.
 1
 n Part bị bỏ đi khi Whole bị bỏ, Part không thể tồn tại nếu 
 0..1 Whole không tồn tại.
 Whole Part
 0..1
 1 0..*
 Student Schedule CourseOffering Whole Part
 0..* 0..4
 25 Composition 26
 Association, Aggregation and Composition Ví dụ – Association
n Mối quan hệ giữa các lớp public class StudentRegistrar { 
 (relationship) public StudentRegistrar (){ 
 (new RecordManager()).initialize(); 
 n Liên kết (Association)
 } 
 n Sử dụng (use-a)
 } 
 n Kết tập (Aggregation)
 n Strong association
 n has-a/is-a-part n Một lớp sử dụng lớp khác
 n Hợp thành (Composition) n Lời gọi phương thức của đối tượng thuộc lớp này trong lớp 
 n Strong aggregation kia
 n Share life-time n Thường được cài đặt bằng tham chiếu (nhưng không bắt bu
 ộc).
 27 28
 7
 12/27/17
 Ví dụ – Aggregration vs. Composition Nội dung
n University chứa (own) nhiều Department
 1. Biểu đồ lớp (Class diagram)
n Mỗi Department có 1 số các Professor
 2. Liên kết (Association)
 3. Kết tập (Aggregation)
 4. Tổng quát hóa 
n Nếu hủy University:
 n Các phòng ban cũng không còn tồn tại (Generalization)
 n Nhưng các Professor trong các Department vẫn còn tồn tại
n Dấu hiệu khác:
 n 1 professor có thể làm trong nhiều Department
 n 1 Department chỉ thuộc về 1 University
 29 30
 Lớp trừu tượng và lớp cụ thể
 Tổng quát hóa (Generalization) (Abstract and Concrete Class)
n Mối quan hệ giữa các lớp trong đó một lớp n Lớp trừu tượng không thể có đối tượng
 chia sẻ cấu trúc và/hoặc hành vi với một hoặ n Chứa phương thức trừu tượng
 n Chữ nghiêng
 c nhiều lớp khác n Lớp cụ thể có thể có đối tượng
n Xác định sự phân cấp về mức độ trừu tượng Discriminator Animal Abstract class
 hóa trong đó lớp con kế thừa từ một hoặc + communicate () Abstract operation
 nhiều lớp cha
 Communication There are no direct instances of Animal
 n Đơn kế thừa (Single inheritance)
 n Đa kế thừa (Multiple inheritance) Lion Tiger
n Là mối liên hệ “là một loại” (“is a kind of”) + communicate () + communicate ()
 31 All objects are either lions or tigers 32
 8
 12/27/17
 Ví dụ về Đơn kế thừa Ví dụ về Đa kế thừa
n Một lớp kế thừa từ MỘT lớp khác n Một lớp có thể kế thừa từ nhiều lớp khác
 Ancestor
 Account FlyingThing Animal
 - balance Multiple Inheritance
 Superclass - name
 (parent) - number
 + withdraw()
 + createStatement() Generalization 
 Relationship Airplane Helicopter Bird Wolf Horse
 Subclasses Sử dụng đa kế thừa chỉ khi cần thiết và luôn luôn phải c
 (children) Savings Checking ẩn thận!
 Descendents 33 34
 Đa hình (Polymorphism) là gì? Tổng quát hóa: Thực thi đa hình
n Khả năng che giấu các thực thi khác nhau dư Animal
 ới một giao diện duy nhất. + communicate ()
 Lion Tiger
 + communicate () + communicate ()
 Manufacturer B
 Manufacturer A Manufacturer C
 Without Polymorphism With Polymorphism
 OO Principle: if animal = “Lion” then Animal communicate
 Lion communicate
 Encapsulation else if animal = “Tiger” then
 Tiger communicate
 Remote Control end
 35 36
 9
 12/27/17
 Bài tập
 n A class diagram containing the following classes: Personal 
n Given: Planner Profile, Personal Planner Controller, Customer 
 n A set of classes and their relationships Profile, and Buyer Record.
 n Associations drawn using the following information:
n Draw: n Each Personal Planner Profile object can be associated with up 
 to one Personal Planner Controller object.
 n A class diagram
 n Each Personal Planner Controller object must be related to one 
 Personal Planner Profile.
 n A Personal Planner Controller object can be associated with up 
 to one Buyer Record and Customer Profile object.
 n An instance of the Buyer Record class can be related to zero or 
 one Personal Planner Controller.
 n Zero or one Personal Planner Controller objects are associated 
 with each Customer Profile instance. 
 37 38
 10

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_bai_12_bieu_do_lop.pdf