Bài giảng Phân tích và thiết kế hệ thống - Chương 2: Các khái niệm cơ bản trong hướng đối tượng - Trần Thị Kim Chi

2.1. Tổng quan về phân tích thiết kế hướng đối tượng OOAD (Object-Oriented Analysis and Design) 2.2. Các đặc trưng của phương pháp hướng đối tượng 2.3. Giới thiệu về hướng đối tượng: Object và class, các đặc trưng của class: kế thừa, đóng gói và đa hình 2.4. Unified Modeling Language (UML) 2.5. Tiến trình RUP TỔNG QUAN VỀ OOAD • Mô hình hướng đối tượng giới thiệu một quan điểm lập trình và phân tích/thiết kế khác hẳn so với trường phái cổ điển (có cấu trúc) • Bắt đầu nhen nhóm vào những năm cuối 60s và đến đầu 90s trở nên rất phổ biến trong công nghiệp phần mềm • Những ngôn ngữ hướng đối tượng đầu tiên: Smalltalk, Eiffel. Sau đó xuất hiện thêm: Object Pascal, C++, Java… • Hình thành các phương pháp phân tích/thiết kế hướng đối tượng

pdf115 trang | Chia sẻ: candy98 | Lượt xem: 808 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Phân tích và thiết kế hệ thống - Chương 2: Các khái niệm cơ bản trong hướng đối tượng - Trần Thị Kim Chi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM KHOA CÔNG NGHỆ THÔNG TIN Chương II Trần Thị Kim Chi 1 NỘI DUNG 2.1. Tổng quan về phân tích thiết kế hướng đối tượng OOAD (Object-Oriented Analysis and Design) 2.2. Các đặc trưng của phương pháp hướng đối tượng 2.3. Giới thiệu về hướng đối tượng: Object và class, các đặc trưng của class: kế thừa, đóng gói và đa hình 2.4. Unified Modeling Language (UML) 2.5. Tiến trình RUP Trần Thị Kim Chi 2 TỔNG QUAN VỀ OOAD • Mô hình hướng đối tượng giới thiệu một quan điểm lập trình và phân tích/thiết kế khác hẳn so với trường phái cổ điển (có cấu trúc) • Bắt đầu nhen nhóm vào những năm cuối 60s và đến đầu 90s trở nên rất phổ biến trong công nghiệp phần mềm • Những ngôn ngữ hướng đối tượng đầu tiên: Smalltalk, Eiffel. Sau đó xuất hiện thêm: Object Pascal, C++, Java • Hình thành các phương pháp phân tích/thiết kế hướng đối tượng. Trần Thị Kim Chi 3 • Chiến lược phát triển phần mềm hướng đối tượng là quan sát thế giới thực như tập các đối tượng • Các tính chất của đối tuợng – Ðối tượng có thể là • thực thể nhìn thấy được trong thế giới thực (trong pha phân tích yêu cầu) • biểu diễn thực thể hệ thống (trong pha thiết kế) – Ðối tượng có trách nhiệm quản lý trạng thái của mình, cung cấp dịch vụ cho đối tượng khác khi có yêu cầu dữ liệu và hàm cùng gói trong đối tượng • Chức năng hệ thống: các dịch vụ được yêu cầu và cung cấp như thế nào giữa các đối tượng, không quan tâm đến thay đổi trạng thái bên trong đối tượng TỔNG QUAN VỀ OOAD Trần Thị Kim Chi 4 • Các đối tượng được phân thành class – Các đối tượng thuộc cùng lớp đều có đặc tính (thuộc tính và thao tác) chung • Hướng đối tượng tập trung vào cả thông tin và hành vi • Cho khả năng xây dựng hệ thống mềm dẻo, “co dãn” • Phương pháp này dựa trên các nguyên tắc sau – Tính đóng gói – Kế thừa – Ða hình TỔNG QUAN VỀ OOAD Trần Thị Kim Chi 5 TỔNG QUAN VỀ OOAD • Class Model – static structure – what objects are in the system? – how are they related? • Dynamic Model – behavioral aspects – what events occur in the system – when do they occur and in what order? • Functional Model – data transformations – “what” does the system do • Data-Oriented • Action-Oriented • Both Data and Actions Trần Thị Kim Chi 6 TỔNG QUAN VỀ OOAD Dynamic Diagrams Activity Diagrams Models Static Diagrams Sequence Diagrams Communication Diagrams State Machine Diagrams Deployment Diagrams Component Diagrams Object Diagrams Class DiagramsUse-Case Diagrams Trần Thị Kim Chi 7 Các bước phân tích và thiết kế theo hướng đối tượng • Các bước phân tích thiết kế hướng đối tượng dựa trên biểu đồ các ký hiệu UML (Unit Modeling Language). • Các giai đoạn phân tích thiết kế hướng đối tượng – Phân tích hướng đối tượng(Object Oriented Analysis - OOA) – Thiết kế hướng đối tượng(Object Oriented Design – OOD) – Lập trình hướng đối tượng (Object Oriented Programming - OOP) TỔNG QUAN VỀ OOAD Trần Thị Kim Chi 8 PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG (OBJECT ORIENTED ANALYSIS – OOA) • Phát triển mô hình chính xác và súc tích của vấn đề • Ánh xạ các thực thể ở thế giới thực đối tượng trong thiết kế. • Chứa các thực thể trong một vấn đề có thực. • Giữ nguyên mẫu về cấu trúc, quan hệ cũng như hành vi của chúng. • Ví dụ: Cửa hàng bán xe hơi – Thực thể (đối tượng): ? – Tương tác và quan hệ giữa các thực thể: ? Trần Thị Kim Chi 9 PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG (OBJECT ORIENTED ANALYSIS – OOA) Ví dụ: Cửa hàng bán xe hơi, giai đoạn OOA sẽ nhận biết được • Các thực thể: – Khách hàng – Người bán hàng – Phiếu đặt hàng – Phiếu (hoá đơn) thanh toán – Xe hơi • Tương tác và quan hệ giữa các thực thể trên là: – Người bán hàng giới thiệu xe cho khách hàng – Khách hàng chọn xe – Khách hàng viết phiếu đặt xe – Khách hàng trả tiền xe – Người bán hàng giao xe cho khách hàng Trần Thị Kim Chi 10 THIẾT KẾ HƯỚNG ĐỐI TƯỢNG (OBJECT ORIENTED DESIGN – OOD) • Tạo thiết kế dựa trên kết quả của giai đoạn OOA, dựa trên các yêu cầu chức năng, phi chức năng – Yêu cầu chức năng? – Yêu cầu phi chức năng? • Định nghĩa các : – chức năng, thủ tục (operations), – thuộc tính (attributes) – mối quan hệ của một hay nhiều lớp (class) quyết định chúng cần phải được điều chỉnh sao cho phù hợp với môi trường phát triển • Đưa ra các biểu đồ: • Tĩnh: biểu thị các lớp và đối tượng • Động: biểu thị tương tác giữa các lớp và phương thức hoạt động chính xác của chúng. • Kết quả của giai đoạn thiết kế là bản thiết kế kiến trúc và thiết kế chi tiết. Trần Thị Kim Chi 11 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (OBJECT ORIENTED PROGRAMMING - OOP) • Java • C++ • Smalltalk Trần Thị Kim Chi 12 CÁC ĐẶC TRƯNG CỦA HƯỚNG ĐỐI TƯỢNG Trần Thị Kim Chi 13 Lớp trừu tượng và lớp cụ thể (Abstract and Concrete Class) Trần Thị Kim Chi 14 Abstraction: Giảm độ phức tạp bằng cách che giấu những chi tiết không liên quan. Review: Encapsulation Illustrated – Kết hợp tiến trình và dữ liệu vào một thực thể thống nhất. Nhiều gói kết hợp thành một hệ thống con (subsystem). – Vấn đề cơ bản trong đóng gói (encapsulation) là giao diện thông báo của một đối tượng, phải đảm bảo các giao tiếp được thực hiện thông qua tập các hoạt động được xác định trước. – Dữ liệu bên trong đối tượng chỉ được truy cập bởi các hoạt động của đối tượng Trần Thị Kim Chi 15 Review: Encapsulation Illustrated • Giáo sư Clark có thể dạy 4 lớp trong học kỳ tiếp theo. TakeSabbatical() Professor Clark Name: J Clark Employee ID: 567138 HireDate: 07/25/1991 Status: Tenured Discipline: Finance MaxLoad: 4SetMaxLoad(4) Trần Thị Kim Chi 16 MODULARITY – Chia một hệ thống phức tạp thành các module nhỏ hơn dễ quản lý hơn. Các module này có thể kết hợp để tạo thành hệ thống. – Nhằm mục đích hiểu rõ hơn một hệ thống phức tạp Trần Thị Kim Chi 17 MODULARITY • Tách hệ thống đăng ký khóa học (course Registration System) thành các module. Billing System Course Registration System Course Catalog System Student Management System Trần Thị Kim Chi 18 HIERARCHY Trần Thị Kim Chi 19 • Phân cấp (Hierarchy) • Hệ thống phân cấp tổ chức theo cấu trúc cây • Loại hệ thống phân cấp: • Aggregation hierarchy, • Class hierarchy, • Containment hierarchy, • Inheritance hierarchy, • Partition hierarchy, • Specialization hierarchy, • Type hierarchy HIERARCHY Decreasing abstraction Increasing abstraction Asset RealEstate Savings BankAccount Checking Stock Security Bond Elements at the same level of the hierarchy should be at the same level of abstraction. Trần Thị Kim Chi 20 CÁC KHÁI NIỆM VỀ HƯỚNG ĐỐI TƯỢNG • Lớp và đối tượng, sự đóng bao • Thuộc tính, tác vụ, thông điệp • Bao gộp, thừa kế • Tính đa hình, tính vĩnh cửu Trần Thị Kim Chi 21 ĐỐI TƯỢNG (OBJECT) Đối tượng (Object): • Các đối tượng (Objects) là các thực thể trong thế giới thực như: con người, sự vật, sự kiện mà nó liên quan đến hệ thống đang phân tích. • Hệ thống hướng đối tượng mô tả các thực thể như các đối tượng. – Mỗi đối tượng có các thuộc tính mô tả thông tin của các đối tượng – Mỗi đối tượng cũng có các hành vi, xác định hoạt động của đối tượng. ĐỐI TƯỢNG (OBJECT) Đối tượng (Object): • Mô hình đối tượng quan niệm thế giới bao gồm các đối tượng(object) sinh sống và tương tác với nhau. • Đối tượng bao gồm: – Dữ liệu: mang một giá trị nhất định – Tác vụ: thực hiện một công việc nào đó • VD: Trần Thị Kim Chi 23 Đối tượng (Object): • VD: Person name age weight (Person) (Person) Joe Smith age=39 weight=158 Mary Wilson age=27 weight=121 ĐỐI TƯỢNG (OBJECT) Trần Thị Kim Chi 24 LỚP (CLASS) • Lớp là một nhóm các đối tượng có cùng thuộc tính, hành vi và các mối quan hệ. Đối tượng là một thể hiện của một lớp. • Một lớp xác định các thuộc tính và hành vi của tất cả các đối tượng trong lớp đó. • Mỗi lớp có một tên riêng biệt • Một lớp là sự trừu tượng của chính nó – Nhấn mạnh những đặc điểm liên quan – Che dấu những đặc điểm khác Class Attributes Operations ball radius, weight catch, throw football air pressure pass, kick, hand-off baseball liveness hit, pitch, tag Trần Thị Kim Chi 25 LỚP (CLASS) • Thuộc tính: là một vùng có thể chứa dữ liệu (đơn hoặc tổ hợp) của lớp • Dữ liệu mà thuộc tính thể hiện nằm trong một khoảng giá trị nào đó được xác định bởi kiểu • Giá trị của tất cả các thuộc tính xác định trạng thái của đối tượng – VD: một đối tượng của Circle có (Radius, x, y) = (2, 1.8,6.4) • Thuộc tính có thể bị che dấu hoặc truy xuất được từ bên ngoài: public, protected, private Trần Thị Kim Chi 26 LỚP (CLASS) Professor J Clark Professor - name - employeeID : UniqueID - hireDate - status - discipline - maxLoad + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() Trần Thị Kim Chi 27 LỚP (CLASS) • Thuộc tính có 2 loại tầm vực: – Tầm vực lớp: thuộc tính chung cho tất cả đối tượng của 1 lớp – Tầm vực đối tượng: thuộc tính của từng đối tượng (có thể mang giá trị khác nhau) • Bậc của thuộc tính chỉ ra số lượng dữ liệu mà bản thân thuộc tính có thể nắm giữ: 0..1, 1..*, 1020. Trần Thị Kim Chi 28 LỚP (CLASS) • Tác vụ - hành vi (operation)Là một dịch vụ có thể yêu cầu từ phía đối tượng để thực hiện hành vi • Dấu hiệu nhận dạng của tác vụ (signature) xác định các thông số truyền cũng như kết quả trả về. • Phương thức (method) là phần hiện thực của tác vụ • Tác vụ có thể bị che dấu hoặc truy xuất từ bên ngoài • Tác vụ có thể được override trong các lớp con thừa kế – Trừu tượng(abstract): không có hiện thực • Một số ngôn ngữ lập trình cho phép định nghĩa: – Tác vụ khởi tạo(constructor) – Tác vụ hủy (destructor) • Thông báo (Messages): thông tin gửi cho đối tượng kích hoạt phương thức. Một thông báo là một hàm hoặc một thủ tục gọi từ một đối tượng đến một đối tượng khác. Trần Thị Kim Chi 29 QUAN HỆ GIỮA LỚP VÀ ĐỐI TƯƠNG • Lớp là mô tả tĩnh của đối tượng, đối tượng là một thể hiện (INSTANCE) của lớp tại thời điểm thực thi Trần Thị Kim Chi 30 Professor MeijerProfessor Allen Professor Torpie Professor QUAN HỆ GIỮA CÁC LỚP (CLASS) Class Relationships:  Association  Aggregation  Composition  Generalization  Dependency  Realization OR OR OR Trần Thị Kim Chi 31 LỚP (CLASS) - Association and Links • Thuộc tính Navigability xác định hướng từ lớp liên kết đến lớp mục tiêu bằng cách sử dụng quan hệ kết hợp (association) • Ví dụ: kết hợp giữa Schedule và Course Offering là navigable theo cả 2 hướng • Schedule cần biết Course Offering được gán vào Schedule. • Ngược lại, Course Offering cần phải biết Schedules trong nó. RegistrationController CourseOfferingSchedule LỚP (CLASS) - Association and Links • Quan hệ ngữ nghĩa giữa 2 hay nhiều lớp xác định kết nối giữa các giữa các điển hình của hai lớp đó. Country name (Country) Canada City name has-capital (City) Ottawa has-capital (Country) France (City) Paris has-capital (Country) Austria (City) Vienna has-capital Class diagram Object diagram Trần Thị Kim Chi 33 Association • Xác định mối quan hệ giữa hai hoặc nhiều lớp trong hệ thống. Các loại kết hợp trong quan hệ Association – Directed Association: kết hợp có hướng, được biểu diễn bằng một nhãn và mũi tên chỉ hướng Association – Reflexive Association: sự kết hợp giữa một class với chính nó. – Ví dụ: Một nhân viên quản lý tối đa 10 nhân viên Association 2..4 0..1 1..* 0..* 1 * 2, 4..6 Unspecified Exactly One Zero or More Zero or One (optional scalar role) One or More Specified Range Multiple, Disjoint Ranges Zero or More Trần Thị Kim Chi 36 Multiplicity: Số instances của một class có thể kết hợp với một instance của lớp còn lại. Association Ví dụ Association Ví dụ: • Một sinh viên có thể đăng ký ít nhất là một và nhiều nhất là 5 khóa học. • Một khóa học ít nhất là 10 và tối đa là 300 sinh viên Aggregation • Aggregation: là một dạng đặc biệt của association nó thể hiện quan hệ has-a hoặc part-whole, còn gọi là share aggregation Trần Thị Kim Chi 39 Aggregation • Ví dụ: Course (khóa học) có nhiều student, nhưng student có thể tồn tại độc lập hoặc thuộc một course khác. Trần Thị Kim Chi 40 Composition • Quan hệ Composition là loại Aggregation chặt chẽ hơn, còn gọi là Non-share aggregation. Trần Thị Kim Chi 41 Composition • Ví dụ: – Apartment (căn hộ) được tạo thành từ nhiều Room (phòng), Room chỉ thuộc Apartment, Room không thể tồn tại độc lập. Trần Thị Kim Chi 42 LỚP (CLASS) – Association, Aggregation and Composition Mối quan hệ giữa các lớp (relationship) • Liên kết (Association) – Sử dụng (use-a) • Kết tập (Aggregation) – Strong association – has-a/is-a-part • Hợp thành (Composition) – Strong aggregation – Share life-time Trần Thị Kim Chi 43 LỚP (CLASS) – Association, Aggregation and Composition • Aggregation – University and Chancellor – Nếu không có trường Đại học (University), hiệu trưởng (Chancellor) không thể tồn tại. – Nếu không có Chancellor, University vẫn có thể tồn tại • Composition – University and Faculty – University không thể tồn tại nếu không có các giảng viên (Faculty) và ngược lại (share time-life) • Thời gian sống của University gắn chặt với thời gian sống của Faculty • Nếu Faculties được giải phóng thì University không thể tồn tại và ngược lại Trần Thị Kim Chi 44 Quan hệ Tổng quát hóa (Generalization) • Mối quan hệ giữa các lớp mà trong đó một lớp có thể chia sẽ cấu trúc hoặc hành vi cho nhiều lớp khác. • Xác định một hệ thống phân cấp trừu tượng, trong đó một lớp con(subclass) kế thừa từ một hoặc nhiều lớp cha (superclasses) • Loại quan hệ kế thừa – Single inheritance: subclass kế thừ từ một superclass. – Multiple inheritance: subclass kế thừa từ một hoặc nhiều superclass. Trần Thị Kim Chi 45 Quan hệ Tổng quát hóa (Generalization) Trần Thị Kim Chi 46 • Trong hệ thống phân cấp – Lớp có thể hiện (instances) gọi là concrete class. – Lớp không có thể hiện (instances) gọi là abstract classes. Tổng quát hóa (Generalization) Sơ đồ 1: Lớp B dẫn xuất từ lớp A, lớp C dẫn xuất từ lớp B Trần Thị Kim Chi 47 Tổng quát hóa (Generalization) Trần Thị Kim Chi 48 Tổng quát hóa (Generalization) • Ví dụ đơn kế thừa: Một lớp kế thừa từ MỘT lớp khác Trần Thị Kim Chi 49 Tổng quát hóa (Generalization) • Ví dụ đa kế thừa:Một lớp có thể kế thừa từ nhiều lớp khác Trần Thị Kim Chi 50 Lớp trừu tượng và lớp cụ thể (Abstract and Concrete Class) • 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 • Lớp cụ thể có thể có đối tượng Trần Thị Kim Chi 51 Tổng quát hóa (Generalization) Advantages of Inheritance • Reusability – reuse public methods of base class • Extensibility – Extend the base class • Data hiding – base class keeps some data private  derive class cannot change it • Rapid prototyping Trần Thị Kim Chi 52 Quan hệ Dependency • Một quan hệ giữa hai phần tử mô hình, trong đó, sự thay đổi của mô hình này sẽ gây ra sự thay đổi của mô hình kia Trần Thị Kim Chi 53 Package Class Dependency relationship Component Client ClientPackage SupplierPackage Supplier Dependency relationship Dependency relationship Client Supplier ĐA HÌNH (POLYMORPHISM)  Cùng một hành vi nhưng thể hiện khác nhau bởi những lớp đối tượng khác nhau. • Ví dụ đa hình (Polymorphism) Trần Thị Kim Chi 54 ĐA HÌNH (POLYMORPHISM) • Ví dụ thực thi đa hình (Polymorphism) Trần Thị Kim Chi 55 THÔNG ĐIỆP – Message • Thông điệp là một phép gọi tác vụ đến một đối tượng cụ thể. • Thông điệp gồm 3 phần: – Đối tượng đích – Dấu hiệu nhận dạng tác vụ muốn gọi – Danh sách thông số gọi Trần Thị Kim Chi 56 Class Modeling - An Example FastData Inc. wants a subsystem to process office supply orders via the Web. The user will supply via a form their name, password, account number, and a list of supplies along with an indication of the quantities desired. The subsystem will validate the input, enter the order into a database, and generate a receipt with the order number, expected ship date, and the total cost of the order. If the validation step fails, the subsystem will generate an error message describing the cause of the failure. Trần Thị Kim Chi 57 Class Modeling - Concise Problem Definition •Define the problem concisely – Use only a single sentence “FastData, Inc. employees may order office supplies via the Web and receive a receipt confirming the order” •This is the first step towards identifying the classes of the subsystem Trần Thị Kim Chi 58 Class Modeling - Informal Strategy •Identify the constraints governing the system – Use only a single paragraph “FastData, Inc. employees may order office supplies via the Internal Web and receive a receipt confirming the order. The order must include the user name, user password, account number, and the list of supplies. A receipt must be generated containing an order number, ship date, and total cost. If the order is valid, it must be entered into an order database. If the order is invalid, an error message must be generated.” •We now have more information to be used in identifying classes for the subsystem Trần Thị Kim Chi 59 Class Modeling - Formalize the Strategy • Identify the nouns of the description, which serve as the basis for identifying the subsystem’s classes. – Look for out-of-domain nouns (and throw them out!) – Look for abstract nouns (use these for attributes) – The remaining nouns are good candidates! “FastData, Inc. employees may order office supplies via the Internal Web and receive a receipt confirming the order. The order must include the user name, user password, account number, and the list of supplies. A receipt must be generated containing an order number, ship date, and total cost. If the order is valid, it must be entered into an order database. If the order is invalid, an error message must be generated.” Trần Thị Kim Chi 60 Nouns • Out-of-Domain – Internal Web • Abstract – user name – user password – account number – order number – ship date – total cost – list of supplies – office supplies -> item • Good Candidates – employee – item (was office supplies) – receipt – order – order database – error message • Notes We have decided not to worry about the Web in this design. Instead we focus on the inputs and outputs and defer the Web details until later. Trần Thị Kim Chi 61 Class Model order DBemployee name password order number account total cost receipt order number ship date total cost item name quantity price error message explanation Trần Thị Kim Chi 62 Class Model, continued response receipt order number ship date total cost error message explanation Since both receipts and error messages will be generated as output it might make sense to have them as subclasses of a more general class. We do not know enough yet to assign it attributes however. Trần Thị Kim Chi 63 Class Modeling - Relationships order DBemployee name password order number account total cost receipt order number ship date total cost item name quantity price 1+ error message explanation Trần Thị Kim Chi 64 Khái niệm lớp cấu trúc - Structured Class Trần Thị Kim Chi 65 • Lớp cấu trúc chứa các thành phần (part) và vai trò (Role) mà nó tạo thành cấu trúc và thực hiện hành vi của nó. • Mô tả cấu trúc hiện thực bên trong lớp cấu trúc • Các thành phần chính nó cũng tạo thành các lớp cấu trúc. • Cho phép phân cấp cấu trúc dạng mô hình phân cấp • Kết nối (connector) đ