Báo cáo môn: Phương pháp lập trình hướng đối tượng đề tài DESIGN PATTERN

24 18 0
Báo cáo môn: Phương pháp lập trình hướng đối tượng đề tài DESIGN PATTERN

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bạn muốn chép đối tượng Cách mà bạn nghĩ tới tạo đối tượng thuộc lớp đó, chép thuộc tính từ đối tượng cần chép sang đối tượng Nhưng đối tượng có thuộc tính riêng tư khơng thể truy cập từ bên ngồi sao? Cịn vài vấn đề Vì bạn phải xác định rõ lớp đối tượng, chương trình bạn phụ thuộc hồn tồn vào lớp 1.2 Giải pháp cho vấn đề (Solution) Prototype Pattern giao việc chép cho đối tượng cần chép Pattern (khuôn mẫu) tạo giao diện cho đối tượng có phương thức chép Giao diện cho phép bạn chép đối tượng mà không phụ thuộc vào lớp đối tượng Vì giao diện cần phương thức chép Phương thức khởi tạo đối tượng thuộc lớp xác định đem tồn thuộc tính từ đối tượng cũ đối tượng Bạn hồn tồn chép thuộc tính riêng tư phần lớn ngơn ngữ lập trình cho phép đối tượng truy cập vào thuộc tính đó, miễn hai đối tượng thuộc lớp Một đối tượng có khả hỗ trợ chép gọi mẫu Phương thức hoạt động: bạn tạo vài đối tượng để làm mẫu, khai báo theo nhiều cách khác Khi bạn cần chép mẫu trên

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN NHÓM 3V1T OOP SEMINAR ǀ Đề tài ǀ DESIGN PATTERN ǀ Giáo viên hướng dẫn ǀ Ts Nguyễn Minh Huy ThS Nguyễn Duy Quang ThS Hồ Tuấn Thanh Môn: Phương pháp lập trình hướng đối tượng Thành phố Hồ Chí Minh - 2021 Đại học Khoa học Tự nhiên TPHCM Khoa: Cơng nghệ Thơng tin MỤC LỤC NHĨM 3V1T TRANG / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Cơng nghệ Thơng tin BẢNG PHÂN CƠNG STT 42 CƠNG VIỆC • • • PHẦN TRĂM ĐĨNG GĨP Giới thiệu builder pattern Vẽ diagram cho builder pattern Viết report 44 46 47 NHÓM 3V1T TRANG / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin PROTOTYPE PATTERN Giới thiệu Prototype Pattern 1.1 Đặt vấn đề (Problem) Bạn muốn chép đối tượng Cách mà bạn nghĩ tới tạo đối tượng thuộc lớp đó, chép thuộc tính từ đối tượng cần chép sang đối tượng Nhưng đối tượng có thuộc tính riêng tư khơng thể truy cập từ bên ngồi sao? Cịn vài vấn đề Vì bạn phải xác định rõ lớp đối tượng, chương trình bạn phụ thuộc hồn tồn vào lớp 1.2 Giải pháp cho vấn đề (Solution) Prototype Pattern giao việc chép cho đối tượng cần chép Pattern (khuôn mẫu) tạo giao diện cho đối tượng có phương thức chép Giao diện cho phép bạn chép đối tượng mà không phụ thuộc vào lớp đối tượng Vì giao diện cần phương thức chép Phương thức khởi tạo đối tượng thuộc lớp xác định đem tồn thuộc tính từ đối tượng cũ đối tượng Bạn hồn tồn chép thuộc tính riêng tư phần lớn ngơn ngữ lập trình cho phép đối tượng truy cập vào thuộc tính đó, miễn hai đối tượng thuộc lớp Một đối tượng có khả hỗ trợ chép gọi mẫu Phương thức hoạt động: bạn tạo vài đối tượng để làm mẫu, khai báo theo nhiều cách khác Khi bạn cần chép mẫu trên, cần chép mẫu 1.3 Ví dụ thực tiễn (Real-word Analogy) Vì mẫu công nghiệp tự chép, ví dụ gần q trình ngun phân tế bào Tế bào gốc xem mẫu, trải qua nguyên phân, tạo tế bào NHÓM 3V1T TRANG / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin Cấu trúc (Structure) UML Diagram 1.4 Cấu trúc (Structure) Prototype interface (giao diện chính) khai báo phương thức chép Thơng thường, phương thức chép Concrete Prototype class (lớp đối tượng mẫu) thực phương thức chép Ngoài phương thức chép ra, lớp thực số phương thức khác nâng cao Client (chương trình cho người sử dụng) có khả tạo đối tượng thuộc giao diện chép NHÓM 3V1T TRANG / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin Prototype Registry (khối khởi tạo mẫu) cung cấp phương thức tiếp cận dễ dàng mẫu thường sử dụng Nó lưu trữ nhóm mẫu sẵn sàng chép Khối khởi tạo mẫu đơn giản sử dụng name -> prototype (tên -> mẫu) hash map (mảng băm) Tuy nhiên, bạn cần tiêu chuẩn để tìm kiếm tốt hơn, bạn thiết kế phiên hiệu NHÓM 3V1T TRANG / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin 1.5 UML Diagram Triển khai lập trình 1.6 Mã giả (Pseudocode) Trong ví dụ này, mẫu Nguyên mẫu cho phép tạo xác đối tượng hình học mà khơng cần ghép mã với lớp chúng Sao chép tập hợp đối tượng thuộc hệ thống phân cấp lớp Tất lớp hình dạng tuân theo giao diện, cung cấp phương pháp chép Một lớp gọi phương thức chép lớp cha trước chép giá trị trường vào đối tượng kết Trong source code Ironman đại diện cho nguyên mẫu: ( Ngơn ngữ : C++) NHĨM 3V1T TRANG / 23 Đại học Khoa học Tự nhiên TPHCM NHÓM 3V1T Khoa: Công nghệ Thông tin TRANG / 23 Đại học Khoa học Tự nhiên TPHCM NHĨM 3V1T Khoa: Cơng nghệ Thông tin TRANG / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin 1.7 Cách triển khai (Implement) a) Tạo giao diện Nguyên mẫu khai báo phương thức Clone Hoặc cần thêm giải pháp vào tất lớp hệ thống phân cấp lớp có, bạn có b) Phải xác định phương thức khởi tạo thay thế, chấp nhận đối tượng lớp làm đối số Hàm tạo phải chép giá trị tất trường xác định lớp từ đối tượng truyền vào đối tượng tạo Nếu bạn thay đổi lớp con, bạn phải gọi hàm tạo cha phép lớp cha xử lý việc chép trường riêng tư NHĨM 3V1T TRANG 10 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin Nếu ngơn ngữ lập trình bạn khơng hỗ trợ nạp chồng phương thức, bạn xác định phương thức đặc biệt để chép liệu đối tượng Hàm tạo nơi thuận tiện để làm điều cung cấp đối tượng kết sau bạn gọi new toán tử c) Phương thức nhân thường bao gồm dịng: chạy new tốn tử với phiên ngun mẫu hàm tạo Lưu ý lớp phải ghi đè rõ ràng phương thức nhân sử dụng tên lớp với new tốn tử Nếu khơng, phương thức nhân tạo đối tượng lớp cha d) Theo tùy chọn, tạo sổ đăng ký nguyên mẫu tập trung để lưu trữ danh mục nguyên mẫu sử dụng thường xuyên Bạn triển khai sổ đăng ký dạng lớp nhà máy đặt vào lớp nguyên mẫu sở với phương thức tĩnh để tìm nạp nguyên mẫu Phương pháp nên tìm kiếm nguyên mẫu dựa tiêu chí tìm kiếm mà mã khách hàng chuyển đến phương thức Tiêu chí thẻ chuỗi đơn giản tập hợp tham số tìm kiếm phức tạp Sau tìm thấy ngun mẫu thích hợp, quan đăng ký chép trả lại cho máy khách NHÓM 3V1T TRANG 11 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin Cuối cùng, thay lệnh gọi trực tiếp đến hàm tạo lớp lệnh gọi đến phương thức gốc sổ đăng ký nguyên mẫu Tổng kết 1.8 Tính ứng dụng Prototype Pattern a) Sử dụng mẫu Prototype mã bạn độc lập không phụ thuộc vào lớp đối tượng cụ thể mà bạn cần chép, tức là: • Khi mã bạn hoạt động với đối tượng chuyển cho bạn từ mã bên thứ thông qua số gia diện / phương thức điều xả nhiều Các lớp cụ thể đối tượng không xác định bạn phụ thuộc vào chúng dù bạn muốn hay khơng • Mẫu Prototype cung cấp cho mã máy khách giao diện chung để làm việc với tất đối tượng hỗ trợ nhân Giao diện làm cho mã máy khách độc lập với lớp cụ thể đối tượng mà chép b) Sử dụng mẫu bạn muốn giảm số lượng lớp khác cách chúng khởi tạo đối tượng tương ứng chúng (Tránh trùng lặp không cần thiết) Bất kì tạo lớp để tạo đối tượng với cấu hình cụ thể • Mẫu Prototype cho phép bạn sử dụng tập hợp đối tượng tạo sẵn, định cấu hình theo nhiều cách khác nhau, làm ngun mẫu • Thay khởi tạo lớp phù hợp với số cấu hình, bạn cần tìm ngun mẫu thích hợp chép c) Ngồi sử dụng mẫu Prototype : NHÓM 3V1T TRANG 12 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin • Khi lớp khởi tạo định thời gian chạy • Để tránh xây dựng hệ thống phân cấp lớp nhà máy • Sẽ thuận tiện chép đối tượng tạo đối tượng 1.9 Ưu – nhược điểm (Pros - Cons) Prototype Pattern a) Ưu điểm: • Có thể sản xuất đối tượng phức tạp cách thuận tiện – Nguyên mẫu cho phép bạn chép đối tượng mẫu cách nhanh chóng mà khơng cần thơng qua bước khởi tạo • Thêm xóa sản phẩm thời gian chạy - Nguyên mẫu cho phép bạn kết hợp lớp sản phẩm cụ thể vào hệ thống cách đăng ký phiên nguyên mẫu với khách hàng Điều linh hoạt chút so với mẫu sáng tạo khác, khách hàng cài đặt gỡ bỏ nguyên mẫu thời điểm chạy • Chỉ định đối tượng theo giá trị khác - Các hệ thống động cao cho phép bạn xác định hành vi thông qua thành phần đối tượng cách định giá trị cho biến đối tượng cách xác định lớp • Chỉ định đối tượng theo cấu trúc khác - Nhiều ứng dụng xây dựng đối tượng từ phận phần Để thuận tiện, ứng dụng thường cho phép bạn khởi tạo cấu trúc phức tạp, người dùng xác định để sử dụng lặp lặp lại mạch cụ thể • Giảm bớt phân lớp - Phương thức Nhà máy thường tạo hệ thống phân cấp lớp Người tạo song song với hệ thống phân cấp lớp sản phẩm Mẫu Prototype cho phép bạn chép nguyên mẫu thay yêu cầu phương pháp gốc để tạo đối tượng Do đó, bạn hồn tồn khơng cần phân cấp lớp Người sáng tạo NHĨM 3V1T TRANG 13 / 23 Đại học Khoa học Tự nhiên TPHCM NHĨM 3V1T Khoa: Cơng nghệ Thơng tin TRANG 14 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Cơng nghệ Thơng tin b) Nhược điểm: • Q mức cho dự án sử dụng đối tượng / khơng có trọng tâm việc mở rộng chuỗi ngun mẫu • Nó ẩn lớp sản phẩm cụ thể khỏi khách hàng • Mỗi lớp Nguyên mẫu phải triển khai hoạt động clone () khó, lớp xem xét tồn Ngoài ra, việc triển khai clone () khó khăn bên chúng bao gồm đối tượng không hỗ trợ chép có tham chiếu tuần hồn NHĨM 3V1T TRANG 15 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin BUILDER PATTERN Giới thiệu Builder Pattern Triển khai lập trình 1.10 Cách thức triển khai (implement) Mặc định, cách thức triển khai thơng thường Builder pattern gồm có thành phần bản: • Builder: thành phần định nghĩa lớp trừu tượng (abstract class) để tạo nhiều phần đối tượng Product • ConcreateBuilder: thành phần triển khai, cụ thể hóa lớp trừu tượng cho để tạo thành phần tập hợp thành phần với Thành phần xác định nắm giữ thông số đối tượng mà tạo Đồng thời cung cấp phương thức để trả đối tượng mà tạo trước • Product: thành phần viết đại diện cho đối tượng phức tạp phải tạo • Director: thành phần khởi tạo đối tượng Builder thực xếp trình tự xây dựng thành phần 1.11 Cài đặt builder pattern a) Xác Định rõ ràng thành phần bước chung cần thiết để xây dựng sản phẩm NHÓM 3V1T TRANG 16 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thơng tin Ví dụ: Khi xây dựng máy bay cần có phận là: Thân, động bánh xe Một báy bay có nhiều động nhiều bánh xe Xây dựng lớp Body, Engine, Wheel lớp có thuộc tính khác thành phần lớp Plane NHÓM 3V1T TRANG 17 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin b) Khai báo bước xây dựng phận lớp Builder- lớp Interface Trong lớp chứa hàm ảo có nhiệm vụ dẫn hướng để hàm xây dựng người dùng định Trong C++, sử dụng phương thức vitural để cài đặt Ví dụ: c) Tạo concrete builder class cho sản phẩm tiến hành cài đặt cho thành phần chúng NHÓM 3V1T TRANG 18 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin Trong bước này, ta sử dụng kế thừa để trả đối tượng khác có nhiều thuộc tính chung Vì đối tườn khơng khai báo class Builder Ví dụ: Thành phần Engine Class Plane có nhiều loại JET Propeller : Ví dụ: Tạo Class AirBusBuiler Class BoeingBuilder Concrete Builder Class NHÓM 3V1T TRANG 19 / 23 Đại học Khoa học Tự nhiên TPHCM NHĨM 3V1T Khoa: Cơng nghệ Thơng tin TRANG 20 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin d) Tạo Class Director sử dụng hàm ảo Class Builder để xây dựng nên sản phẩm Ví dụ: Class Director nhận tham số từ trỏ builder để cấu trúc nên máy bay NHÓM 3V1T TRANG 21 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin e) Cài đặt hàm main Đầu tiên hàm main phải tạo đối tượng sản phẩm cuối sau tạo đối tượng director để thực hàm dựng cuối tạo Concrete Builder sản phẩm yêu cầu C++ tạo Concrete Builder trỏ dùng tốn tử new Vì cần sử dụng hàm ảo class Builder Sau truyền đối tượng Concrete Buidler vào Director Ở Concerte Builder truyền trực tiếp phương phác cấu trúc Director Sản phầm kết thu từ Director NHÓM 3V1T TRANG 22 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin Ưu - Nhược điểm (Pros - Cons) Builder Pattern 1.12 Ưu điểm • Bạn xây dựng đối tượng theo bước, trì hỗn bước xây dựng • chạy đệ quy bước Bạn tái sử dụng lại tập bước xây dựng xây dựng hình thức • khác đối tượng Single Responsibility Principle (đơn nhiệm) mối class làm nhiêm vụ khác Trong builder design pattern, class builder chịu trách nhiệm nhận thuộc tính cách thụ động class director thực thu tập thuộc tính xây dựng đối tượng Bạn tách biệt code xây dựng phức tạp khỏi logic kinh doanh sản phẩm 1.13 • Nhược điểm: Độ phức tạp tổng thể mã code tăng lên phải tạo nhiều class NHÓM 3V1T TRANG 23 / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin NGUỒN THAM KHẢO Pericherla Suryateja startertutorials [Online] // patterns - November 24, 2013 https://www.startertutorials.com/patterns/prototype-pattern.html refactoring.guru [Online] // PROTOTYPE - https://refactoring.guru/design-patterns/prototype Saket Kumar; Pushpender007 geeksforgeeks.org [Online] // Prototype Design Pattern September 22, 2021 - https://www.geeksforgeeks.org/prototype-design-pattern/ NHÓM 3V1T TRANG 24 / 23 ... [Online] // patterns - November 24, 2013 https://www.startertutorials.com/patterns/prototype -pattern. html refactoring.guru [Online] // PROTOTYPE - https://refactoring.guru /design- patterns/prototype... vài vấn đề Vì bạn phải xác định rõ lớp đối tượng, chương trình bạn phụ thuộc hồn tồn vào lớp 1.2 Giải pháp cho vấn đề (Solution) Prototype Pattern giao việc chép cho đối tượng cần chép Pattern. .. builder pattern Vẽ diagram cho builder pattern Viết report 44 46 47 NHÓM 3V1T TRANG / 23 Đại học Khoa học Tự nhiên TPHCM Khoa: Công nghệ Thông tin PROTOTYPE PATTERN Giới thiệu Prototype Pattern

Ngày đăng: 26/12/2021, 22:07

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • BẢNG PHÂN CÔNG

  • PROTOTYPE PATTERN

  • 1 Giới thiệu Prototype Pattern

    • 1.1. Đặt vấn đề (Problem)

    • 1.2. Giải pháp cho vấn đề (Solution)

    • 1.3. Ví dụ thực tiễn (Real-word Analogy)

    • 2 Cấu trúc (Structure) và UML Diagram

      • 1.4. Cấu trúc (Structure)

      • 1.5. UML Diagram

      • 3 Triển khai lập trình

        • 1.6. Mã giả (Pseudocode)

        • 1.7. Cách triển khai (Implement)

        • 4 Tổng kết

          • 1.8. Tính ứng dụng của Prototype Pattern

          • 1.9. Ưu – nhược điểm (Pros - Cons) của Prototype Pattern

          • BUILDER PATTERN

          • 5 Giới thiệu Builder Pattern

          • 6 Triển khai lập trình

            • 1.10. Cách thức triển khai (implement)

            • 1.11. Cài đặt builder pattern

            • 7 Ưu - Nhược điểm (Pros - Cons) của Builder Pattern

              • 1.12. Ưu điểm

              • 1.13. Nhược điểm:

              • NGUỒN THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan