1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

22 19 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 1,57 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

ĐẠ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

Trang 2

MỤC LỤC

MỤC LỤC _2 BẢNG PHÂN CÔNG 3 PROTOTYPE PATTERN _4

1 Giới thiệu Prototype Pattern 4 1.1 Đặt vấn đề (Problem) _4 1.2 Giải pháp cho vấn đề (Solution) _4 1.3 Ví dụ thực tiễn (Real-word Analogy) _4

2 Cấu trúc (Structure) và UML Diagram _5 2.1 Cấu trúc (Structure) 5 2.2 UML Diagram _7

3 Triển khai lập trình 7 3.1 Mã giả (Pseudocode) _7 3.2 Cách triển khai (Implement) _10

4 Tổng kết _12 4.1 Tính ứng dụng của Prototype Pattern _12 4.2 Ưu – nhược điểm (Pros - Cons) của Prototype Pattern 13

BUILDER PATTERN _15

1 Giới thiệu Builder Pattern _15

2 Triển khai lập trình _15 2.1 Cách thức triển khai (implement) 15 2.2 Cài đặt builder pattern _15

3 Ưu - Nhược điểm (Pros - Cons) của Builder Pattern _21 3.1 Ưu điểm 21 3.2 Nhược điểm: 21

NGUỒN THAM KHẢO _22

Thành phố Hồ Chí Minh - 2021

Trang 3

 Viết report44

46

47

Thành phố Hồ Chí Minh - 2021

Trang 4

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

Prototype Pattern giao việc sao chép cho chính đối tượng cần được sao chép Pattern (khuôn mẫu)này tạo ra một giao diện cho mọi đối tượng có phương thức sao chép Giao diện này cho phép bạnsao chép một đối tượng mà không phụ thuộc vào lớp của đối tượng đó Vì thế một giao diện chỉ cầnmột phương thức sao chép duy nhất

Phương thức trên khởi tạo một đối tượng thuộc lớp xác định và đem toàn bộ thuộc tính từ đối tượng

cũ sao đối tượng mới Bạn hoàn toàn có thể sao chép những thuộc tính riêng tư vì phần lớn ngônngữ lập trình cho phép đối tượng truy cập vào những thuộc tính đó, miễn là cả hai đối tượng cùngthuộc một lớp

Một đối tượng có khả năng hỗ trợ sao chép được gọi là bản mẫu

Phương thức hoạt động: bạn tạo ra một vài đối tượng để làm bản mẫu, khai báo theo nhiều cáchkhác nhau Khi bạn cần sao chép một trong những bản mẫu trên, chỉ cần sao chép bản mẫu đó

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

Vì những bản mẫu trong công nghiệp không thể tự sao chép, một ví dụ gần nhất là quá trình nguyênphân tế bào Tế bào gốc có thể được xem là bản mẫu, trải qua nguyên phân, tạo ra tế bào mới

Thành phố Hồ Chí Minh - 2021

Trang 5

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

3 Client (chương trình cho người sử dụng) có khả năng tạo ra bản sao của bất kì đối tượng nàothuộc giao diện sao chép ở trên

Thành phố Hồ Chí Minh - 2021

Trang 6

Prototype Registry (khối khởi tạo bản mẫu) cung cấp phương thức tiếp cận dễ dàng những bản mẫuthường được sử dụng Nó lưu trữ một nhóm những bản mẫu sẵn sàng được sao chép Khối khởi tạobản mẫu đơn giản nhất sử dụng name -> prototype (tên -> bản mẫu) hash map (mảng băm) Tuynhiên, nếu bạn cần một tiêu chuẩn để tìm kiếm tốt hơn, bạn có thể thiết kế một phiên bản hiệu quảhơn.

Thành phố Hồ Chí Minh - 2021

Trang 7

2.2 UML Diagram

3 Triển khai lập trình

3.1 Mã giả (Pseudocode)

Trong ví dụ này, mẫu Nguyên mẫu cho phép tạo các bản sao chính xác của các đối tượng hình học

mà không cần ghép mã với các lớp của chúng

Sao chép một tập hợp các đối tượng thuộc một hệ thống phân cấp lớp

Tất cả các lớp hình dạng tuân theo cùng một giao diện, cung cấp một phương pháp sao chép Một lớp con có thể gọi phương thức sao chép của lớp cha trước khi sao chép các giá trị trường của chính

nó vào đối tượng kết quả

Trong source code dưới đây thì Ironman đại diện cho một nguyên mẫu: ( Ngôn ngữ : C++)

Thành phố Hồ Chí Minh - 2021

Trang 10

3.2 Cách triển khai (Implement)

a) Tạo giao diện của Nguyên mẫu và khai báo phương thức Clone trong đó Hoặc chỉ cần thêm

giải pháp vào tất cả các lớp của hệ thống phân cấp lớp hiện có, nếu bạn có một cái

b) Phải xác định phương thức khởi tạo thay thế, chấp nhận một đối tượng của lớp đó làm đối

số Hàm tạo phải sao chép các giá trị của tất cả các trường được xác định trong lớp từ đốitượng được truyền vào đối tượng mới được tạo Nếu bạn đang thay đổi một lớp con, bạn phảigọi hàm tạo cha để cho phép lớp cha xử lý việc sao chép các trường riêng tư của nó

Nếu ngôn ngữ lập trình của bạn không hỗ trợ nạp chồng phương thức, bạn có thể xác định mộtphương thức đặc biệt để sao chép dữ liệu đối tượng Hàm tạo là một nơi thuận tiện hơn để làm điều

này vì nó cung cấp đối tượng kết quả ngay sau khi bạn gọi new toán tử.

c) Phương thức nhân bản thường chỉ bao gồm một dòng: chạy một new toán tử với phiên bản

nguyên mẫu của hàm tạo Lưu ý rằng mọi lớp phải ghi đè rõ ràng phương thức nhân bản và

Thành phố Hồ Chí Minh - 2021

Trang 11

sử dụng tên lớp của chính nó cùng với new toán tử Nếu không, phương thức nhân bản có

thể tạo ra một đối tượng của lớp cha

d) Theo tùy chọn, tạo một sổ đăng ký nguyên mẫu tập trung để lưu trữ danh mục các nguyên

mẫu được sử dụng thường xuyên

Bạn có thể triển khai sổ đăng ký dưới dạng một lớp nhà máy mới hoặc đặt nó vào lớp nguyên mẫu

cơ sở với một phương thức tĩnh để tìm nạp nguyên mẫu Phương pháp này nên tìm kiếm một nguyênmẫu dựa trên các tiêu chí tìm kiếm mà mã khách hàng chuyển đến phương thức Tiêu chí có thể làmột thẻ chuỗi đơn giản hoặc một tập hợp các tham số tìm kiếm phức tạp Sau khi tìm thấy nguyênmẫu thích hợp, cơ quan đăng ký sẽ sao chép nó và trả lại bản sao cho máy khách

Cuối cùng, thay thế các lệnh gọi trực tiếp đến các hàm tạo của lớp con bằng các lệnh gọi đếnphương thức gốc của sổ đăng ký nguyên mẫu

Thành phố Hồ Chí Minh - 2021

Trang 12

4 Tổng kết

4.1 Tính ứng dụng của Prototype Pattern

a) Sử dụng mẫu Prototype khi mã của bạn độc lập và không phụ thuộc vào các lớp đối tượng

cụ thể mà bạn cần sao chép, tức là:

 Khi mã của bạn hoạt động với các đối tượng được chuyển cho bạn từ mã của bên thứ 3 thôngqua một số gia diện / phương thức thì điều đó xả ra rất nhiều Các lớp cụ thể của những đối tượng này là không xác định và bạn không thể 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 một giao diện chung để làm việc với tất cả các đối tượng hỗ trợ nhân bản Giao diện này làm cho mã máy khách độc lập với các lớp cụ thể của các đối tượng mà nó sao chép

b) Sử dụng mẫu khi bạn muốn giảm số lượng lớp con khi nó chỉ khác nhau về cách chúng khởi tạo các đối tượng tương ứng của chúng (Tránh sự trùng lặp không cần thiết) Bất kì

ai cũng có thể tạo ra các lớp con này để có thể tạo các đối tượng với một cấu hình cụ thể.

 Mẫu Prototype cho phép bạn sử dụng một tập hợp các đối tượng được tạo sẵn, được định cấuhình theo nhiều cách khác nhau, làm nguyên mẫu

 Thay vì khởi tạo một lớp con phù hợp với một số cấu hình, bạn chỉ cần tìm một nguyên mẫu thích hợp và sao chép nó

c) Ngoài ra sử dụng mẫu Prototype khi :

 Khi lớp được khởi tạo được chỉ định trong thời gian chạy hoặc

 Để tránh xây dựng một hệ thống phân cấp của các lớp nhà máy hoặc

 Sẽ thuận tiện hơn khi sao chép một đối tượng hơn là tạo một đối tượng mới

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

a) Ưu điểm:

Có thể sản xuất các đối tượng phức tạp một cách thuận tiện hơn – Nguyên mẫu cho

phép bạn sao chép đối tượng mẫu một cách nhanh chóng mà không cần thông qua bất kì bướckhởi tạo nào

Thêm và xóa sản phẩm trong thời gian chạy - Nguyên mẫu cho phép bạn kết hợp một lớp

sản phẩm cụ thể mới vào hệ thống chỉ bằng cách đăng ký một phiên bản nguyên mẫu với khách

Thành phố Hồ Chí Minh - 2021

Trang 13

hàng Điều đó linh hoạt hơn một chút so với các mẫu sáng tạo khác, bởi vì khách hàng có thể cài đặt và gỡ bỏ các nguyên mẫu tại thời điểm chạy.

Chỉ định các đối tượng mới theo các giá trị khác nhau - Các hệ thống năng động cao cho

phép bạn xác định hành vi mới thông qua thành phần đối tượng bằng cách chỉ định các giá trị cho các biến của đối tượng chứ không phải bằng cách xác định các lớp mới

Chỉ định các đối tượng mới theo cấu trúc khác nhau - Nhiều ứng dụng xây dựng các đối

tượng từ các bộ phận và phần con Để thuận tiện, các ứng dụng như vậy thường cho phép bạn khởi tạo các cấu trúc phức tạp, do người dùng xác định để sử dụng lặp đi lặp lại một mạch con

cụ thể

Giảm bớt phân lớp - Phương thức Nhà máy thường tạo ra một hệ thống phân cấp của các

lớp Người tạo song song với hệ thống phân cấp của lớp sản phẩm Mẫu Prototype cho phép bạnsao chép một nguyên mẫu thay vì yêu cầu một phương pháp gốc để tạo một đối tượng mới Do

đó, bạn hoàn toàn không cần phân cấp lớp Người sáng tạo

Thành phố Hồ Chí Minh - 2021

Trang 14

b) Nhược điểm:

 Quá mức cho một dự án sử dụng rất ít đối tượng và / hoặc không có trọng tâm cơ bản về việc

mở rộng chuỗi nguyên mẫu

 Nó cũng ẩn các lớp sản phẩm cụ thể khỏi khách hàng

 Mỗi lớp con của Nguyên mẫu phải triển khai hoạt động clone () có thể khó, khi các lớp đang được xem xét đã tồn tại Ngoài ra, việc triển khai clone () có thể khó khăn khi bên trong của chúng bao gồm các đối tượng không hỗ trợ sao chép hoặc có các tham chiếu tuần hoàn

Thành phố Hồ Chí Minh - 2021

Trang 15

BUILDER PATTERN

1 Giới thiệu Builder Pattern

2 Triển khai lập trình

4.3 Cách thức triển khai (implement)

Mặc định, cách thức triển khai thông thường của Builder pattern gồm có 4 thành phần cơ bản:

Builder: là thành phần định nghĩa một lớp trừu tượng (abstract class) để tạo ra một hoặc

nhiều phần của đối tượng Product

ConcreateBuilder: là thành phần triển khai, cụ thể hóa các lớp trừu tượng cho để tạo ra các

thành phần và tập hợp các thành phần đó với nhau Thành phần này sẽ xác định và nắm giữ các thông số của đối tượng mà nó tạo ra Đồng thời nó cũng cung cấp phương thức để trả cácđối tượng mà nó đã tạo ra trước đó

Product: thành phần này trong bài viết sẽ đại diện cho đối tượng phức tạp phải tạo ra.

Director: thành phần này sẽ khởi tạo đối tượng Builder và thực hiện sắp xếp trình tự xây

dựng các thành phần

4.4 Cài đặt builder pattern

a) Xác Định rõ ràng các thành phần cũng như các bước chung cần thiết để xây dựng một sản phẩm

Ví dụ: Khi xây dựng một chiếc máy bay cần có các bộ phận chính là: Thân, động cơ và bánh xe.Một báy bay có thể có nhiều động cơ và nhiều bánh xe

Xây dựng các lớp Body, Engine, Wheel mỗi lớp có những thuộc tính khác nhau là những thành phầncủa lớp Plane

Thành phố Hồ Chí Minh - 2021

Trang 16

b) Khai báo các bước xây dựng từng bộ phận trong lớp Builder- là lớp Interface

Thành phố Hồ Chí Minh - 2021

Trang 17

Trong lớp này sẽ chứa các hàm ảo có nhiệm vụ dẫn hướng để các hàm xây dựng do người dùng chỉ định Trong C++, sử dụng phương thức vitural để cài đặt.

Ví dụ: Thành phần Engine của Class Plane có nhiều loại là JET và Propeller :

Ví dụ: Tạo Class AirBusBuiler và Class BoeingBuilder là các Concrete Builder Class

Thành phố Hồ Chí Minh - 2021

Trang 19

d) Tạo Class Director sử dụng các hàm ảo trong Class Builder để xây dựng nên sản phẩm

Ví dụ: Class Director nhận các tham số từ con trỏ builder để cấu trúc nên một máy bay

Thành phố Hồ Chí Minh - 2021

Trang 20

e) Cài đặt trong hàm main

Đầu tiên trong hàm main phải tạo đối tượng sản phẩm cuối cùng sau đó là tạo đối tượng director đểthực hiện các hàm dựng và cuối cùng là tạo các Concrete Builder là các sản phẩm được yêu cầu.trong C++ tạo Concrete Builder bằng con trỏ và dùng toán tử new Vì cần sử dụng các hàm ảo trongclass Builder

Sau đó truyền một đối tượng Concrete Buidler vào Director Ở đây các Concerte Builder sẽ được truyền trực tiếp các phương phác cấu trúc của Director Sản phầm là kết quả thu được từ Director

Thành phố Hồ Chí Minh - 2021

Trang 21

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

5.2 Nhược điểm:

 Độ phức tạp tổng thể của mã code tăng lên vì phải tạo nhiều class mới

Thành phố Hồ Chí Minh - 2021

Trang 22

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/

Thành phố Hồ Chí Minh - 2021

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w