1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình hướng đối tượng: Chương 12 - ĐH Bách Khoa Hà Nội

10 6 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Bài giảng Lập trình hướng đối tượng: Chương 12 Biểu đồ lớp với mục tiêu giúp các bạn có thể mô tả khung nhìn tĩnh của hệ thống và cách đưa nó vào trong một mô hình; Minh họa cách đọc và hiểu một biểu đồ lớp; 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ú ng vào biểu đồ lớp; Mô hình tổng quát hóa (generalization) trên một biểu đồ lớp.

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

Ngày đăng: 20/06/2021, 09:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN