Bai 12 Bieu do lop 1 Bài 12 Phân tích thiết kế hướng đối tượng và biểu đồ lớp 1 1 Nội dung 1 Phân tích thiết kế hướng đối tượng 2 Biểu đồ lớp 3 Quan hệ giữa các lớp 4 Ví dụ và bài tập 2 2 Nội dung 1 P.
Nội dung Bài 12 Phân tích thiết kế hướng đối tượng biểu đồ lớp Phân tích thiết kế hướng đối tượng Biểu đồ lớp Quan hệ lớp Ví dụ tập 1 2 Tầm quan trọng OOAD Nội dung v Nhiều người phát triển dự án § Cho phần mềm chủ yếu xây dựng cách gõ “code” từ bàn phím § Khơng dành đủ thời gian cho trình phân Jch thiết kế phần mềm Phân tích thiết kế hướng đối tượng Biểu đồ lớp Quan hệ lớp Ví dụ tập v Họ phải “cày bừa” để hồn thành chương trình § Khơng hiểu hiểu sai yêu cầu § Giao Rếp với thành viên khơng tốt § Khơng Jch hợp với module đồng nghiệp… v Họ nhận “Phân Fch” “Thiết kế” cần coi trọng hơn, muộn 3 4 Tầm quan trọng OOAD (2) Mục đích OOAD v Cần thiết lập chế hiệu để nắm bắt yêu cầu, phân Fch thiết kế v Cơ chế phải “ngôn ngữ thống nhất” giúp cho trình hợp tác hiệu thành viên nhóm phát triển phần mềm v OOAD: Object Oriented Analysis and Design) v Chuyển yêu cầu toán thành thiết kế hệ thống xây dựng v Tập trung vào trình phân Fch YÊU CẦU hệ thống thiết kế MƠ HÌNH cho hệ thống trước giai đoạn lập trình v Được thực nhằm đảm bảo mục đích yêu cầu hệ thống ghi lại cách hợp lý trước hệ thống xây dựng v Cung cấp cho người dùng, khách hàng, kỹ sư phân Fch, thiết kế nhiều nhìn khác hệ thống 5 6 Phương pháp OOAD Phương pháp OOAD (2) v OOAD chia thành giai đoạn § Phân Jch hướng đối tượng (OOA) § Thiết kế hướng đối tượng (OOD) v OOA giai đoạn nhằm tạo mơ hình (mơ hình khái niệm) hệ thống dựa theo khách hàng yêu cầu hệ thống họ v OOD bổ sung thêm thông zn thiết kế chi zết cho mơ hình nói 7 Use case modeling to define requirements External Specifica7on Design Object extrac7on and message sequence design between objects Normaliza7on of the data structure using E-R diagram Class design E-R modeling for persistent data 8 OOA OOA (2) v Xác định yêu cầu phần mềm v Đặc tả yêu cầu phần mềm thơng qua mơ hình đối tượng tương tác chúng v Tạo mơ hình có thành phần đối tượng khái niệm đời thực, dễ hiểu với người dùng v Mơ hình hóa thực thể, giữ nguyên cấu trúc, quan hệ, hành vi chúng v Ví dụ với phịng bán tụ: Đ Cỏc thc th: ã ã ã ã ã Khách hàng Người bán hàng Phiếu đặt hàng Phiếu (hoá đơn) tốn Xe tơ § Tương tác quan hệ thực thể : • • • • • Người bán hàng dẫn khách hàng tham quan phòng trưng bày xe Khách hàng chọn xe Khách hàng viết phiếu đặt xe Khách hàng trả Kền xe Xe ô tô giao đến cho khách hàng 9 10 10 OOD OOD v Thực thi mơ hình khái niệm đầu bước OOA v Các khái niệm OOA ánh xạ theo thành lớp thực thi Các ràng buộc, giao diện thiết kế Kết đặc tả chi zết hệ thống cần xây dựng, theo công nghệ cụ thể lựa chọn v Tổ chức chương trình thành tập hợp đối tượng cộng tác § Mỗi đối tượng thực thể lớp v Thiết kế kết OOA § Cải thin, ti u húa thờm Đ Thit k cỏc ã Phương thức (operaKons) • Thuộc Qnh (aRributes) • Mối quan hệ lớp (classes) § Đưa biểu đồ jnh động • Tĩnh: biểu thị lớp đối tượng • Động: biểu thị tương tác lớp & phương thức hoạt động 11 11 12 12 Thiết kế biểu đồ lớp CRC Card v Mục zêu: cần xác định thành viên lớp quan hệ lớp v Một kỹ thuật ứng dụng nhiều Thẻ Class-ResponsibilityCollaboration (CRC) card v Mỗi thẻ thể lớp, thẻ lưu lại thông tin sau lớp: § Tên lớp Thơng thường người ta đặt tên lớp liên quan đến vai trò lớp, sử dụng lớp để làm § Trách nhiệm lớp: lớp làm Thơng thường thơng tin bao gồm tên hàm thành phần § Tương tác lớp: lớp tương tác với lớp khác 13 13 14 14 Thiết kế đối tượng (1/2) Thiết kế đối tượng (2/2) v Trong PT&TK hướng đối tượng người ta tổng kết bước để thiết kế đối tượng: v Trong PT&TK hướng đối tượng người ta tổng kết bước để thiết kế đối tượng: § Bước Xây dựng hệ thống (System construction) Trong giai đoạn phát triển đối tượng, xem xét tương tác đối tượng để hình thành hệ thống hoạt động § Bước Mở rộng hệ thống (System extension) Khi thêm vào tính hệ thống, cần thêm lớp mới, đối tượng tương tác đối tượng với đối tượng có hệ thống § Bước Tái sử dụng đối tượng (Object reuse) Đây thử nghiệm quan trọng đối tượng lớp thiết kế phần mềm Chúng ta cần phải sử dụng lại lớp đối tượng phần mềm (thơng qua tính kế thừa tương tác đối tượng) § Bước Phát đối tượng (Object discovery) Bước thực giai đoạn phân tích chương trình § Bước Lắp ráp đối tượng (Object assembly) Bước tìm kiếm đặc điểm đối tượng để thêm vào thuộc tính, hàm thành phần cho đối tượng 15 15 16 16 Lưu ý (1/2) Lưu ý (2/2) v Một số điểm lưu ý phát triển lớp v Một số điểm lưu ý phát triển lớp § Cần tạo lớp trước, sau nghĩ tới việc phát triển hoàn thiện lớp q trình giải tốn § Khi phân tích hay phát triển lớp khơng nên tập trung xác định tất thành viên lớp, biết rõ phát triển hệ thống (learns as you go) § Việc phát lớp cần thiết cho chương trình nhiệm vụ thiết kế hệ thống, có lớp (trong thư viện lớp chẳng hạn) cơng việc dễ dàng § Khi lập trình cần tn thủ theo thiết kế làm Không nên băn khoăn khơng sử dụng phương pháp lập trình truyền thống thấy choáng ngợp trước số lượng lớn đối tượng § Ln giữ ngun tắc: vấn đề cần giải theo phương án đơn giản nhất, khơng phức tạp hóa Sử dụng ngun lý Occam Razor: Lớp đơn giản lớp tốt nhất, bắt đầu đơn giản kết thúc hệ thống phức tạp 17 18 17 18 Nội dung Lớp (Class) v Sử dụng hình chữ nhật gồm thành phần § Tên lớp § Các thuộc tính § Các phương thức Phân tích thiết kế hướng đối tượng Biểu đồ lớp Quan hệ lớp Ví dụ tập Class_Name attribute1 attribute2 attribute3 method1() method2() method3() 19 19 20 20 Biểu diễn thuộc tính Mơ tả phương thức v Chỉ tên, kiểu giá trị mặc định có v Tên phương thức: § 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 § attributeName : Type = Default v Tuân theo quy ước đặt tên ngôn ngữ cài đặt dự án v Kiểu (type) nên kiểu liệu ngôn ngữ thực thi v Chữ ký phương thức: opera&onName([direc&on] parameter:class, ):returnType § Kiểu liệu có sẵn, kiểu liệu người dùng định nghĩa, lớp tự định nghĩa § Direc&on: in (mặc định), out inout 21 21 22 22 Phạm vi truy cập biểu diễn nào? Phạm vi truy cập (Visibility) v Các ký hiệu sau sử dụng: v Phạm vi truy cập sử dụng để thực khả đóng gói § § § private + # - Public access Protected access Private access Class1 - privateAttribute + publicAttribute # protectedAttribute public - privateOperation () + publicOPeration () # protecteOperation () protected 23 23 24 24 Phạm vi (Scope) Ví dụ: Scope v Xác định số lượng thể thuộc Fnh/thao tác: Student § Instance: Một thể cho thể lớp § Classifier: Một thể cho tất thể lớp v Phạm vi Classifier ký hiệu cách gạch tên thuộc Fnh/thao tác Class1 - classifierScopeAttr - instanceScopeAttr - name address studentID nextAvailID : int + + + # + addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester) getSchedule ([in] forSemester : Semester) : Schedule hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean passed ([in] theCourseOffering : CourseOffering) : boolean getNextAvailID () : int + classifierScopeOp () + instanceScopeOp () 25 25 26 26 Biểu đồ lớp gì? Biểu đồ lớp (Class Diagram – CD) v Biểu đồ lớp tồn lớp mối quan hệ chúng thiết kế logic hệ thống v Khung nhìn tĩnh hệ thống CloseRegistrationForm § 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 + open() + close registration() Student + get tuition() + add schedule() + get schedule() + delete schedule() + has pre-requisites() v Khung nhìn tĩnh hệ thống chủ yếu hỗ trợ yêu cầu chức hệ thống 27 27 Schedule CloseRegistrationController - semester + commit() + select alternate() + remove offering() + level() + cancel() + get cost() + delete() + submit() + save() + any conflicts?() + create with offerings() + update with new selections() + is registration open?() + close registration() Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() 28 28 Khi sử dụng biểu đồ lớp? Ví dụ Biểu đồ lớp v Từ vựng hệ thống (Vocabulary) v Có cách tốt để tổ chức biểu đồ lớp? § Khi trừu tượng hóa phần bên ngồi biên hệ thống § Chỉ kết trừu tượng hóa trách nhiệm chúng LoginForm RegistrationController RegisterForCoursesForm v Cộng tác (Collaborazon) § Nhóm lớp thành phần khác làm việc để thực công việc Schedule CloseRegistrationForm v Lược đồ CSDL logic (Logical database schema) CloseRegistrationController Professor § 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 Student Course CourseOffering CourseCatalogSystem BillingSystem 29 29 30 30 Gói (package) Ví dụ: Registration Package v Một chế chung để tổ chức phần tử thành nhóm v Một phần tử mơ hình chứa phần tử khác Registration University Artifacts 31 31 CloseRegistrationForm CloseRegistrationController RegisterForCoursesForm RegistrationController 32 32 Nội dung Class Relationships Phân tích thiết kế hướng đối tượng Biểu đồ lớp Quan hệ lớp Ví d v bi v Associazon Đ AggregaRon ã ComposiKon v Inheritance v Dependency •34 33 33 34 Tên hướng liên kết Liên kết (association) gì? v Mối liên hệ ngữ nghĩa hai hay nhiều lớp liên kết thể chúng v 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 Student Schedule User Person Owns Computer Car SubjectInfo Person Owns Owned by Car 36 35 35 Uses 36 Vai trò (role) liên kết CourseOffering Instructor Bội số quan hệ (Multiplicity) Lecturer v Bội số quan hệ số lượng thể lớp liên quan tới MỘT thể lớp khác v Với liên kết, có hai bội số quan hệ cho hai đầu liên kết Department Department Head § 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 Role Name SubjectInfo Professor Prerequisites instructor CourseOffering * 38 37 37 38 Biểu diễn bội số quan hệ Ví dụ bội số quan hệ Unspecified Exactly One * Zero or More * One or More * Zero or One (optional value) Multiple, Disjoint Ranges RegistrationController 1 Student Schedule * * CourseOffering 2, 39 39 1 Zero or More Specified Range RegisterForCoursesForm 40 40 10 Ý nghĩa bội số quan hệ Các loại liên kết Car v Association § use-a § Các đối tượng lớp liên kết với đối tượng lớp khác v Giúp trả lời câu hỏi § Liên kết bắt buộc hay tùy chọn? § Số lượng nhỏ lớn thể lớp liên kết với thể lớp khác CourseOffering * Car v Aggregation Door § has-a/is-a-part § Liên kết mạnh-Strong association Thể lớp tạo (made up) thể lớp khác Subject v Composition * Prerequisites Driver § Kết tập mạnh-Strong aggregation Đối tượng phận chia sẻ, bị hủy với đối tượng tổng thể § Share life-time Car Body 41 41 42 42 Association, Aggregation and Composition Kết tập (aggregation) gì? v Liên kết (Association) v Là dạng đặc biệt liên kết mơ hình hóa mối quan hệ tồn thể-bộ phận (wholepart) đối tượng tồn thể phận § Sử dụng (use-a) v Kết tập (Aggregation) § Strong association § has-a/is-a-part § Kết tập mối quan hệ “là phần” (“is a part-of”) v Bội số quan hệ biểu diễn giống liên kết khác v Hợp thành (Composition) § Strong aggregation § Share life-time Whole Part 43 43 44 44 11 Ví dụ kết tập Hợp thành/Cấu thành (Composition) gì? v 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 RegisterForCoursesForm § Whole sở hữu Part, tạo hủy Part § Part bị bỏ Whole bị bỏ, Part tồn Whole không tồn RegistrationController 1 Whole Part Whole Part Student Schedule * * CourseOffering Composition 45 45 46 46 Ví dụ – Aggregration vs Composition Ví dụ Composition v University chứa (own) nhiều Department v Mỗi Department có số Professor Folder could contain many files, while each File has exactly one Folder parent If Folder is deleted, all contained Files are deleted as well v Nếu hủy University: § Các phịng ban khơng cịn tồn § Nhưng Professor Department tồn v Dấu hiệu khác: Hospital has or more Departments, and each Department belongs to exactly one Hospital If Hospital is closed, so are all of its Departments § professor làm nhiều Department § Department thuộc University 48 47 47 48 12 Phụ thuộc - Dependency Dependencies vs Associations v Là quan hệ đối tượng lớp v Các đối tượng cần phải “biết nhau” để truyền thông điệp cho Client Supplier2 Supplier § § § § Local variable reference Parameter reference Global reference Field reference Dependency Client Association Supplier1 49 49 50 50 Local Variable Visibility Parameter Visibility v Phương thức op1() tạo sử dụng biến cục tham chiếu tới đối tượng ClassB v Tham chiếu tới đối tượng lớp ClassB truyền làm tham số phương thức op1 lớp ClassA ClassA ClassA + op1 ( ) + op1 ([in] aParam : ClassB) ClassB ClassB 51 51 52 52 13 Lớp trừu tượng lớp cụ thể (Abstract and Concrete Class) Tổng quát hóa (Generalization) v Mối quan hệ lớp lớp chia sẻ cấu trúc và/hoặc hành vi với nhiều lớp khác v 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 v Lớp trừu tượng khơng thể có đối tượng § Chứa phương thức trừu tượng § Chữ nghiêng v Lớp cụ thể có đối tượng Discriminator Abstract class Animal Abstract operation + communicate () § Đơn kế thừa (Single inheritance) § Đa kế thừa (MulRple inheritance) Communication There are no direct instances of Animal v Là mối liên hệ “là loại” (“is a kind of”) Lion + communicate () Tiger + communicate () All objects are either lions or tigers 53 53 54 54 Ví dụ Đơn kế thừa Ví dụ Đa kế thừa v Một lớp kế thừa từ MỘT lớp khác v Một lớp kế thừa từ nhiều lớp khác Ancestor Account FlyingThing - balance - name - number Superclass (parent) Multiple Inheritance + withdraw() + createStatement() Subclasses (children) Savings Animal Generalization Relationship Airplane Helicopter Bird Wolf Horse Sử dụng đa kế thừa cần thiết luôn phải cẩn thận! Checking Descendents 55 55 56 56 14 Tổng quát hóa: Thực thi đa hình Đa hình (Polymorphism) gì? v Khả che giấu thực thi khác giao diện Animal + communicate () Lion Manufacturer A Manufacturer B + communicate () Tiger + communicate () Manufacturer C Without Polymorphism OO Principle: Encapsulation if animal = “Lion” then Lion communicate else if animal = “Tiger” then Tiger communicate end Remote Control With Polymorphism Animal communicate 57 57 58 58 Ví dụ Nội dung Phân tích thiết kế hướng đối tượng Biểu đồ lớp Quan hệ lớp Ví dụ tập 59 59 https://www.uml-diagrams.org/software-licensing-domain-diagram-example.html 60 60 15 Bài tập Bài tập ■ ■ ■ ■ ■ ■ ■ Xây dựng phần mềm quản lý đăng ký dạy học trường đại học sau: Các sinh viên giảng viên lưu trữ thông Rn vào phần mềm với nội dung tên, tuổi, định danh cá nhân, mã số sinh viên mã cán Giảng viên cịn có thơng Rn cấp bậc (level với dạng số nguyên từ trở đi); mã số thuế (tax) Mỗi giảng viên dạy nhiều lớp (Course) chủ nhiệm nhiều sinh viên Mỗi sinh viên đăng ký nhiều lớp học (Course), ứng với sinh viên có bảng điểm (Table) sinh viên chủ nhiệm giảng viên Bảng điểm sinh viên lưu trữ thông Rn điểm lớp học sinh viên đăng ký Hãy xây dựng biểu đồ lớp ■ ■ ■ ■ 61 61 Chương trình quản lý Thơng &n nhà ga mô tả sau: Hoạt động chuyên chở nhà ga gồm nhiều đoàn tàu Mỗi đồn tàu có số hiệu riêng, thơng Rn ga đích đến đồn tàu lịch trình chạy đồn tàu (giờ khởi hành dự kiến đến ga đích) Một đồn tàu gồm nhiều toa tàu.Mỗi toa thuộc hai loại toa chở khách toa chở hàng Mỗi toa tàu có số hiệu trọng lượng không tải Jnh (khi khơng chở khách hay hàng hố) Mỗi toa chở khách cịn có thơng Rn riêng số lượng khách tối đa chở Khi tàu vào ga toa chở khách có thêm hoạt động: thêm khách lên toa, bớt khách xuống toa Thông Rn hành khách tàu gồm có họ tên, số chứng minh nhân dân, đoàn tàu toa tàu mà họ mua vé ga lên tàu điểm xuống Hãy xây dựng biểu đồ lớp 62 62 Bài tập ■ ■ ■ ■ ■ ■ ■ Một phần mềm Quản lý xe buýt bến xe mô tả sau: Một xe buýt (Bus) chạy tối đa 30 chuyến/ngày (Trip) Mỗi chuyến chứa tối đa 80 hành khách (Person) Hành khách chia làm hai loại: hành khách mua vé theo lượt (Customer) hành khách mua vé tháng (Passenger) Tất hành khách định danh tên (name) số chứng minh thư (ciEzenCard) Khách mua vé tháng có thêm thơng Tn mã vé ID Các xe bt có thơng số số lượng ghế ngồi (numberOfSeats) khác Trong lớp Bus, người ta xây dựng phương thức public isEnableToLeaveStaEon(Trip t), trả true số hành khách chuyến xe buýt t bé 80% số ghế ngồi Lớp Bus lớp toàn thể, lớp Trip kết tập với tên vai trị trips Các xe bt có thơng số để định danh, số Trong lớp Trip, người ta xây dựng phương thức public availableSeats( ) trả số lượng ghế trống có chuyến xe Người ta cài đặt lớp Trip phương thức mang tên numberOf Passenger( ), trả số lượng khách sử dụng vé tháng có chuyến xe Hãy xây dựng biểu đồ lớp 63 63 16 ... biểu thị lớp đối tượng • Động: biểu thị tương tác lớp & phương thức hoạt động 11 11 12 12 Thiết kế biểu đồ lớp CRC Card v Mục zêu: cần xác định thành viên lớp quan hệ lớp v Một kỹ thuật ứng dụng... (CRC) card v Mỗi thẻ thể lớp, thẻ lưu lại thông tin sau lớp: § Tên lớp Thông thường người ta đặt tên lớp liên quan đến vai trò lớp, sử dụng lớp để làm § Trách nhiệm lớp: lớp làm Thơng thường thơng... 26 Biểu đồ lớp gì? Biểu đồ lớp (Class Diagram – CD) v Biểu đồ lớp tồn lớp mối quan hệ chúng thiết kế logic hệ thống v Khung nhìn tĩnh hệ thống CloseRegistrationForm § Chỉ cấu trúc tĩnh mơ lớp,