ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN 1 Đề tài SỬ DỤNG PATTERNS ĐỂ ĐỊNH NGHĨA GIẢI PHÁP PHẦN MỀM (USING PATTERNS TO DEFINE A SOFTWARE SOLUTION) Lớp SE.
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO ĐỒ ÁN Đề tài: SỬ DỤNG PATTERNS ĐỂ ĐỊNH NGHĨA GIẢI PHÁP PHẦN MỀM (USING PATTERNS TO DEFINE A SOFTWARE SOLUTION) Lớp: SE121.M21.PMCL Giảng viên: ThS Nguyễn Công Hoan Sinh viên: Phan Mạnh Phát – 15520605 Thành phố Hồ Chí Minh, 6/2022 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ……………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ……………………………………………………………………………………… LỜI CẢM ƠN Để thực tốt đề tài này, với tất kính trọng, nhóm em xin kính gửi lời cảm ơn đến thầy Nguyễn Công Hoan trực tiếp giảng dạy, truyền đạt hỗ trợ cho nhóm q trình nghiên cứu để nhóm em hồn thành đề tài Trong trình thực hiện, trình làm báo cáo, chúng em khó tránh khỏi sai sót, nhóm em hi vọng thầy bỏ qua chúng em mong nhận ý kiến đóng góp thầy để học thêm nhiều kinh nghiệm để hoàn thành tốt đồ án lần sau Một lần nhóm em xin chân thành cảm ơn thầy Chúng em xin chân thành cảm ơn! Nhóm nghiên cứu Tp Hồ Chí Minh, tháng năm 2022 Báo cáo đồ án I Giới thiệu tổng quan Thơng tin nhóm Giới thiệu đề tài 2.1 Phạm vi nghiên cứu 2.2 Nội dung nghiên cứu 2.3 Nội dung nghiên cứu 2.4 Kết hướng tới Công cụ sử dụng II Design Patterns Giới thiệu chung Định nghĩa Ưu điểm Phân loại design patterns 4.1 Nhóm khởi tạo (Creational pattern) 4.2Nhóm cấu trúc (Structural pattern) 4.3Nhóm hành vi (Behavioral Pattern) III Factory Method Giới thiệu 1.1 Định nghĩa 1.2 Đặt vấn đề Giả sử ta có class Dog, Cat, Duck implement interface Animal Cấu trúc Ưu điểm .10 Nhược điểm 11 IV Abstract Factory 11 1.2 Vấn đề 11 2.Cấu trúc 14 V Builder 15 VI.Prototype 23 1.2Đặt vấn đề 24 2.Cấu trúc 26 3.Ưu điểm 28 4.Khuyết điểm 29 VII Adapter 29 VIII Bridge 34 IX Composite 38 X Decorator 42 XI Faỗade 54 XII.Flyweight 56 XIII Proxy 59 XIV Intepreter 62 XV Template Method 65 XVI Chain of Responsibility 68 XVII Command 71 XXVIII Iterator 78 XIX Mediator 81 XX Memento 84 XXI Observer 88 XXII State 92 XXIII Strategy 98 XXIV Visitor 101 XXV.Kinh nghiệm rút 104 Tài liệu tham khảo 105 Giới thiệu tổng quan I Thơng tin nhóm MSSV Họ tên Email 15520605 Phan Mạnh Phát 15520605@gm.uit.edu.vn Giới thiệu đề tài Với phần mềm ứng dụng lớn này, cần thiết kế rõ ràng hướng tới việc củng cố, chỉnh sửa trước sau hoạt động điều cần thiết Trong trình phát triển vận hành xảy nhiều vấn đề khác nhiều mặt nên việc đảm bảo ứng dụng có tính chỉnh sửa chạy tốt cần số chuẩn bị tốt kể từ khâu thiết kế hệ thống có quy tắc, bước cụ thể việc lập trình để hệ thống khối thống từ có phần mềm tốt sau Xét vấn đề: nhà nghiên cứu phát triển vấn đề việc thực dự án để hạn chế giải vấn đề xảy lập trình tiến tới phát triển mẫu thiết kế Xét ứng dụng: phương pháp lập trình nên ứng dụng nhiều dự án khác với ngơn ngữ lập trình khác 2.1 Phạm vi nghiên cứu Hiện nay, có nhiều mẫu thiết kế với mẫu gắn liền giải vấn đề định lập trình Nhưng bật ứng dụng nhiều ta có 23 mẫu thiết kế sử dụng nhiều 2.2 Nội dung nghiên cứu Tìm hiểu mẫu, đặc biệt 23 mẫu thiết kế (Tìm hiểu vấn đề mà mẫu hướng tới để giải vấn đề lập trình) 2.3 Nội dung nghiên cứu Tìm hiểu 23 mẫu thiết kế với ưu nhược điểm mẫu Tìm hiểu vấn đề ứng dụng mẫu việc giải vấn đề 2.4 Kết hướng tới Hiểu vấn đề lập trình, ứng dụng mẫu để thiết kế giải vấn đề lập trình để ứng dụng tốt kể việc vận hành lẫn chỉnh sửa bảo trì Cơng cụ sử dụng Trong q trình xây dựng phần mềm, nhóm sử dụng phần mềm sau: ● Eclipse IDE: IDE hỗ trợ xây dựng ứng dụng phía server (Spring Boot) ● Visual Studio Code: hỗ trợ xây dựng giao diện người dùng (ReactJS) II Design Patterns Giới thiệu chung Design Pattern giải pháp chung để giải vấn đề phổ biến thiết kế phần mềm lập trình hướng đối tượng OOP Định nghĩa Design pattern: giải pháp nghiên cứu để giải vấn đề thường gặp lập trình Được tái sử dụng nhiều việc thiết kế phần mềm nhằm giải vấn đề phần mềm Là kỹ thuật lập trình hướng đối tượng, kĩ thuật lập trình nên ứng dụng ứng dụng với ngơn ngữ lập trình khác java, C#, python,… Sử dụng patterns phương pháp tối ưu nghiên cứu Giải vấn đề cách tối ưu việc lập trình hướng đối tượng, phù hợp với chuyên viên vững lập trình OOP, thiết kế hiểu rõ ngơn ngữ lập trình cụ thể Ưu điểm Tăng tốc độ phát triển phần mềm: Cung cấp cho developers công cụ cụ thể để giải vấn đề thông dụng lập trình thiết kế phần mềm Ngay khơng gặp vấn đề, sử dụng patterns để lập trình, dựa vào nguyên tắc cụ thể mà patterns cung cấp Code tường minh, dễ dàng Team work: Do cung cấp nguyên tắc cụ thể nên việc lập trình developers dựa vào patterns với cấu trúc cụ thể => Tối ưu thời gian Tái sử dụng code: Giúp developers tái sử dụng sửa chữa code dễ dàng Hạn chế lỗi tiềm ẩn, dễ dàng nâng cấp: Việc thực dự án theo cấu trúc cụ thể tránh lỗi phát sinh sau này, dễ quản lý hơn, dễ chỉnh sửa nâng cấp Phân loại design patterns Hiện nay, có nhiều mẫu nghiên cứu phát triển Về ta có nhóm patterns 23 mẫu phổ biến thường ứng dụng Nhóm khởi tạo (Creational pattern) Nhóm cấu trúc (Structural pattern) Nhóm hành vi (Behavioral pattern) 4.1 Nhóm khởi tạo (Creational pattern) Gồm mẫu: - Singleton - Factory Method - Abstract Factory - Builder - Prototype Các patterns loại cung cấp giải pháp để tạo đối tượng che giấu logic việc tạo thay tạo đối tượng theo cách trực tiếp (sử dụng từ khố new) Điều giúp chương trình trở nên mềm dẻo việc định đối tượng cần tạo tình khác 4.2Nhóm cấu trúc (Structural pattern) Gồm mẫu: - Adapter - Bridge - Composite - Decorator - Facade - Flyweight - Proxy Những patterns loại liên quan tới class thành phần đối tượng Nó dùng để thiết lập, định nghĩa quan hệ đối tượng Hệ thống lớn mẫu đóng vai trị quan trọng Ta dựa vào class diagram để theo dõi mẫu 4.3Nhóm hành vi (Behavioral Pattern) Gồm 11 mẫu: - Interpreter - Template Method - Chain of Responsibility - Command - Iterator - Mediator - Memento - Observer - State - Strategy - Visitor III Factory Method Giới thiệu Factory method mẫu thiết kế thuộc nhóm khởi tạo 1.1 Định nghĩa Factory Method cung cấp interface Nhưng class kế thừa ghi đè để rõ đối tượng (object) tạo Factory method giao việc khởi tạo đối tượng (object) cụ thể cho lớp (subclass) 1.2 Đặt vấn đề Giả sử ta có class Dog, Cat, Duck implement interface Animal https://refactoring.guru/design-patterns ... Design Patterns Giới thiệu chung Design Pattern giải pháp chung để giải vấn đề phổ biến thiết kế phần mềm lập trình hướng đối tượng OOP Định nghĩa Design pattern: giải pháp nghiên cứu để giải. .. hiện, trình làm báo cáo, chúng em khó tránh khỏi sai sót, nhóm em hi vọng thầy bỏ qua chúng em mong nhận ý kiến đóng góp thầy để học thêm nhiều kinh nghiệm để hoàn thành tốt đồ án lần sau Một... cấp cho developers công cụ cụ thể để giải vấn đề thơng dụng lập trình thiết kế phần mềm Ngay không gặp vấn đề, sử dụng patterns để lập trình, dựa vào nguyên tắc cụ thể mà patterns cung cấp