Bài giảng Lập trình hướng đối tượng: Bài 12 - Phân tích thiết kế hướng đối tượng và biểu đồ lớp được biên soạn bao gồm các nội dung chính sau: Phân tích thiết kế hướng đối tượng; Biểu đồ lớp; Quan hệ giữa các lớp; Ví dụ và bài tập. Mời các bạn cùng tham khảo bài giảng.
Bài 12 Phân tích thiết kế hướng đối tượng biểu đồ lớp 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 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 Tầm quan trọng OOAD ❖ 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 q trình phân tích thiết kế phần mềm ❖ → 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 tiếp với thành viên khơng tốt ▪ Khơng tích hợp với module đồng nghiệp… ❖ → Họ nhận “Phân tích” “Thiết kế” cần coi trọng hơn, muộn Tầm quan trọng OOAD (2) ❖ Cần thiết lập chế hiệu để nắm bắt yêu cầu, phân tích thiết kế ❖ 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 ❖ → OOAD: Object Oriented Analysis and Design) Mục đích OOAD ❖ Chuyển yêu cầu toán thành thiết kế hệ thống xây dựng ❖ Tập trung vào q trình phân tích 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 ❖ Đượ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 ❖ Cung cấp cho người dùng, khách hàng, kỹ sư phân tích, thiết kế nhiều nhìn khác hệ thống Phương pháp OOAD ❖ OOAD chia thành giai đoạn ▪ Phân tích hướng đối tượng (OOA) ▪ Thiết kế hướng đối tượng (OOD) ❖ 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ọ ❖ OOD bổ sung thêm thông tin thiết kế chi tiết cho mơ hình nói Phương pháp OOAD (2) Use case modeling to define requirements External Specification Design Object extraction and message sequence design between objects Normalization of the data structure using E-R diagram Class design E-R modeling for persistent data OOA ❖ Xác định yêu cầu phần mềm ❖ Đặ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 ❖ 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 ❖ Mơ hình hóa thực thể, giữ nguyên cấu trúc, quan hệ, hành vi chúng OOA (2) ❖ Ví dụ với phịng bán ô tô: ▪ Các thực thể: • • • • • Khách hàng Người bán hàng Phiếu đặt hàng Phiếu (hố đơ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ả tiền xe Xe ô tô giao đến cho khách hàng 10 Phụ thuộc - Dependency ❖ Là quan hệ đối tượng lớp Client Supplier 49 Dependencies vs Associations ❖ Các đối tượng cần phải “biết nhau” để truyền thông điệp cho ▪ ▪ ▪ ▪ Local variable reference Parameter reference Global reference Field reference Supplier2 Client Dependency Association Supplier1 50 Local Variable Visibility ❖ Phương thức op1() tạo sử dụng biến cục tham chiếu tới đối tượng ClassB ClassA + op1 ( ) ClassB 51 Parameter Visibility ❖ 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 + op1 ([in] aParam : ClassB) ClassB 52 Tổng quát hóa (Generalization) ❖ 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 ❖ 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 kế thừa (Single inheritance) ▪ Đa kế thừa (Multiple inheritance) ❖ Là mối liên hệ “là loại” (“is a kind of”) 53 Lớp trừu tượng lớp cụ thể (Abstract and Concrete Class) ❖ Lớp trừu tượng có đối tượng ▪ Chứa phương thức trừu tượng ▪ Chữ nghiêng ❖ Lớp cụ thể có đối tượng Discriminator Abstract class Animal Abstract operation + communicate () Communication Lion + communicate () There are no direct instances of Animal Tiger + communicate () All objects are either lions or tigers 54 Ví dụ về Đơn kế thừa ❖ Một lớp kế thừa từ MỘT lớp khác Ancestor Account - balance - name - number Superclass (parent) + withdraw() + createStatement() Subclasses (children) Savings Generalization Relationship Checking Descendents 55 Ví dụ về Đa kế thừa ❖ Một lớp kế thừa từ nhiều lớp khác FlyingThing Animal Multiple Inheritance Airplane Helicopter Bird Wolf Horse Sử dụng đa kế thừa chỉ cần thiết và luôn phải cẩn thận! 56 Đa hình (Polymorphism) gì? ❖ Khả che giấu thực thi khác giao diện Manufacturer A Manufacturer B Manufacturer C OO Principle: Encapsulation Remote Control 57 Tổng quát hóa: Thực thi đa hình Animal + communicate () Lion + communicate () Without Polymorphism if animal = “Lion” then Lion communicate else if animal = “Tiger” then Tiger communicate end Tiger + communicate () With Polymorphism Animal communicate 58 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 Ví dụ https://www.uml-diagrams.org/software-licensing-domain-diagram-example.html 60 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 tin 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 tin 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 tin điểm lớp học sinh viên đăng ký Hãy xây dựng biểu đồ lớp 61 Bài tập ■ ■ ■ ■ ■ ■ Chương trình quản lý Thông tin nhà ga mô tả sau: Hoạt động chuyên chở nhà ga gồm nhiều đồn tàu Mỗi đồn tàu có số hiệu riêng, thơng tin 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 tính (khi khơng chở khách hay hàng hố) Mỗi toa chở khách cịn có thơng tin 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 tin 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 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ư (citizenCard) Khách mua vé tháng có thêm thơng tin 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 isEnableToLeaveStation(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 ...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 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 Tầm quan trọng... đặ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 Thiết kế đối tượng (2/2) ❖ 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ệ... ▪ use-a ▪ Các đối tượng lớp liên kết với đối tượng lớp khác ❖ Aggregation Car 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 ❖ Composition ▪ Kết tập