1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) đồ án bài tập CUỐI KHOÁ môn mẫu THIẾT kế xây DỰNG hệ THỐNG bán HÀNG THIẾT bị điện tử

35 6 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

Tiêu đề Đồ Án Bài Tập Cuối Khoá Môn Mẫu Thiết Kế Xây Dựng Hệ Thống Bán Hàng Thiết Bị Điện Tử
Tác giả Võ Hữu Thịnh, Nguyễn Quốc Quang Huy
Người hướng dẫn Nguyễn Thanh Phước
Trường học Trường Đại Học Tôn Đức Thắng
Chuyên ngành Mẫu Thiết Kế Xây Dựng Hệ Thống Bán Hàng Thiết Bị Điện Tử
Thể loại đồ án cuối khoá
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 35
Dung lượng 2,14 MB

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

Nội dung

Mô tả cấu trúc tĩnh của hệ thống bao gồm các đặc trưng cơ bảncủa chương trình thiết bị điện tử như các lớp class và các mẫu thiết kế DesignPattern được sử dụng nhằm tăng năng suất, giúp

Trang 1

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN BÀI TẬP CUỐI KHOÁ MÔN MẪU THIẾT KẾ

XÂY DỰNG HỆ THỐNG BÁN HÀNG THIẾT BỊ ĐIỆN TỬ

Người hướng dẫn: NGUYỄN THANH PHƯỚC Người thực hiện: VÕ HỮU THỊNH – MSSV: 518H0440

NGUYỄN QUỐC QUANG HUY-MSSV: 518H0630

Khoá : 22

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2021

Trang 2

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN BÀI TẬP CUỐI KHOÁ MÔN MẪU THIẾT KẾ

XÂY DỰNG HỆ THỐNG BÁN HÀNG THIẾT BỊ ĐIỆN TỬ

Người hướng dẫn: NGUYỄN THANH PHƯỚC Người thực hiện: VÕ HỮU THỊNH – MSSV: 518H0440

NGUYỄN QUỐC QUANG HUY-MSSV: 518H0630

Khoá : 22

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2021

2

Trang 3

LỜI CẢM ƠN

Trong thời gian làm đồ án, chúng tôi đã nhận được nhiều sự giúp đỡ, đóng góp

ý kiến và chỉ bảo nhiệt tình của thầy Nguyễn Thanh Phước Thầy đã hướng dẫn chúngtôi hoàn thành bài báo cáo này

Chúng tôi xin gửi lời cảm ơn chân thành đến thầy Nguyễn Thanh Phước, giảngviên Bộ môn Mẫu thiết kế- trường ĐH Tôn Đức Thằng người đã tận tình hướng dẫn,chỉ bảo chúng tôi trong suốt quá trình làm khoá luận

Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một học viên,luận văn này không thể tránh được những thiếu sót Rất mong nhận được sự chỉ bảo,đóng góp ý kiến của các thầy cô để chúng tôi có điều kiện bổ sung, nâng cao ý thứccủa mình, phục vụ tốt hơn công tác thực tế sau này

Trang 4

ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Chúng tôi xin cam đoan đây là sản phẩm đồ án của chúng tôi và được sự hướngdẫn của thầy Nguyễn Thanh Phước; Các nội dung nghiên cứu, kết quả trong đề tàinày là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệutrong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giảthu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo

Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệucủa các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc

Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm

về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến

những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)

TP Hồ Chí Minh, ngày 26 tháng 4 năm 2021

Tác giả (ký tên và ghi rõ họ tên)

Võ Hữu Thịnh

Nguyễn Quốc Quang Huy

4

Trang 5

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

Tp Hồ Chí Minh, ngày tháng năm

Tp Hồ Chí Minh, ngày tháng năm

(kí và ghi họ tên)

Trang 6

Giới thiệu tính năng của chương trình

Tổng thể thiết kế (sơ đồ lớp tổng thể, liệt kê danh sách mẫu áp dụng) Các mẫu thiết kế sử dụng

Kết quả đạt được và hướng mở rộng (source code link, video giới thiệu sản phẩm, và bài báo cáo , )

 Tài liệu tham khảo

Xây dựng hệ thống bán hàng thiết bị điện tử dựa trên 6 design pattern.

Các nội dung kể trên được trình bày chi tiết và rõ ràng về mặc hình thức lẫn nội dung Giới thiệu các vấn đề của hai mẫu thiết kết trên và cách hoàn thành nó thông qua việc trình bày các giải pháp kèm theo ví dụ minh hoạ cụ thể Các vấn đề được giải quyết một cách rõ ràng, mạch lạc Bên cạnh đó bài viết còn liệt kê các thư viện cũng như công nghệ hay được sử dụng trong bài báo cáo này Source code của các ví dụ mẫu thiết kế trên được đặt tại github của nhóm.

Đây là github của nhóm:

https://github.com/huyquag/Design-Pattern-FinalProject

6

Trang 7

MỤC LỤC

LỜI CẢM ƠN 3

ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG 4

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN 5

TÓM TẮT 6

I Giới thiệu tính năng của chương trình: 9

II III 1 Tổng thể thiết kế: 11

Các mẫu thiết kế: 12

) Data Access Object pattern: 12

a) Giới thiệu pattern: 12

b) UML minh họa: 13

c) Ứng dụng của pattern: 14

d) Mô tả khái quát về code: 14

) Singleton pattern: 16

a) Giới thiệu pattern: 16

b) UML minh họa: 16

c) Ứng dụng của pattern: 16

d) Mô tả khái quát về code: 17

) Factory pattern: 17

a) Giới thiệu pattern: 17

b) UML minh họa: 18

c) Ứng dụng của pattern: 18

d) Mô tả khái quát về code: 19

) Template Pattern: 25

a) Giới thiệu pattern: 25

b) UML minh hoạ: 25

c) Ứng dụng của pattern: 26

d) Mô tả khái quát về code: 26

) Decorator pattern: 28

a) Giới thiệu pattern: 28

b) UML minh hoạ: 29

c) Ứng dụng của pattern: 29

d) Mô tả khái quát về code: 30

) Command pattern: 31

a) Giới thiệu pattern: 31

b) UML minh hoạ: 31

2

3

4

5

6

Trang 8

d) Mô tả khái quát về code: 32 Kết quả đạt được và hướng mở rộng: 34 IV.

V Tài liệu tham khảo: 34

8

Trang 9

I Giới thiệu tính năng của chương trình:

Chương trình thiết bị điện tử được xây dựng trên ngôn ngữ lập trình java vàdựa theo các Design Pattern để tối ưu hoá cũng như dễ dàng phát triển và bảo trì hệthống Thiết bị điện tử là chương trình cho phép người dùng có thể mua bán hàng hoá(thiết bị điện tử), lưu trữ dữ liệu người dùng sau khi đăng kí, lưu trữ thông tin các mặthàng được bán, cho phép xuất hoá đơn sau khi xác nhận và thanh toán mua hàng

- Chức năng mua bán hàng hoá:

Người dùng có để mua bán các mặt hàng sản phẩm có trong chương trìnhthiết bị điện tử Bằng cách chọn mặt hàng muốn mua sau đó xác nhận

- Chức năng lưu trữ dữ liệu:

Thông tin các nhân của khách hàng

Thông tin các mặt hàng được bán

- Chức năng xuất hoá đơn:

Trang 10

II Tổng thể thiết kế:

Trang 11

UML Classdiagram của chương trình biểu hiện rõ chi tiết các class của chươngtrình thiết bị điện tử Mô tả cấu trúc tĩnh của hệ thống bao gồm các đặc trưng cơ bảncủa chương trình thiết bị điện tử như các lớp (class) và các mẫu thiết kế (DesignPattern) được sử dụng nhằm tăng năng suất, giúp code chất lượn hơn, giảm tiêu tốn tàinguyên trong quá trình maintain.

Chương trình thiết bị điện tử sử dụng 6 mẫu thiết kế (Design Pattern) bao gồm:

Data access object Pattern

Với việc áp dụng các mẫu thiết kế được liệt kê phía trên, chương trình có thểthực hiện dầy đủ các chức năng cơ bản như lưu trữ dữ liệu khách hàng và hàng hoá(thông qua Data access object Pattern ), xuất hoá đơn bán hàng (thông qua CommandPattern), tái sử dụng code cũng như mở rộng các hàm, hoặc lớp mà không cần phảithay đổi code (thông qua Decorator Pattern ), định nghĩa lại cách thực hiện của một sốlớp (lớp Prepare) mà không cần phải thay đổi nội dung thuật toán (thông quaTemplate Pattern ), hạn chế sự khởi tạo của lớp đối tượng và cho phép 1 lớp (class) cóthể điều kiển nhiều lớp con khác (thông qua Singleton Pattern - ở đây được minh hoạ

cụ thể qua lớp SmartPhone, chi tiết phần này sẽ được cụ thể ở mục III tiếp theo), vàcuối cùng, hệ thống được quản lí và thực thi một cách theo yêu cầu của người dùng(thông qua Factory Pattern )

III Các mẫu thiết kế:

1) Data Access Object pattern:

a) Giới thiệu pattern:

Tình huống thực tế:

Tôi có một dự án bán thiết bị điện tử sử dụng cơ sở dữ liệu là MySQL để lưu

trữ thông tin người dùng bao gồm email và mật khẩu Vì vậy, tôi phải sử dụng trìnhđiều khiển là SQL để tương tác với cơ sở dữ liệu Nhưng trong quá trình phát triển hệ

thống bán hàng, giám đốc sản xuất phần mềm đề xuất nên thay đổi Oracle

Trang 12

Database Sau đó chúng tôi phải định dạng lại mã sao cho phù hợp với cơ sở dữ liệu

Ý tưởng là thay vì có logic giao tiếp trực tiếp với cơ sở dữ liệu, hệ thống file,dịch vụ web hoặc bất kỳ cơ chế lưu trữ nào mà ứng dụng cần sử dụng, chúng ta sẽ đểlogic này sẽ giao tiếp với lớp trung gian DAO Lớp DAO này sau đó giao tiếp với hệthống lưu trữ, hệ quản trị CSDL như thực hiện các công việc liên quan đến lưu trữ vàtruy vấn dữ liệu (tìm kiếm, thêm, xóa, sửa,…)

Vì vậy, lớp DAO là lớp trung gian giúp các lớp khác giao tiếp với các lớp logiclưu trữ (persistence) bất kể cơ chế lưu trữ nào như quản lý tệp, cơ sở dữ liệu,…, sau

đó, thực hiện một số thao tác như CRUD

12

Trang 13

b) UML minh họa:

c) Ứng dụng của pattern:

DAO Pattern dựa trên các nguyên tắc thiết kế abstraction và encapsulation.

Nó bảo vệ phần còn lại của ứng dụng khỏi mọi thay đổi trong lớp lưu trữ, ví dụ: thayđổi database từ Oracle sang MySQL, thay đổi công nghệ lưu trữ từ file sang database

d) Mô tả khái quát về code:

Để tạo một ví dụ DATA ACCESS OBJECT PATTERN kể trên chúng ta sẽ tiếnhành 4 bước sau:

1 Tạo lớp Accounts bao gồm các thuộc tính (name, email, id) chứa các phươngthức get/set được sử dụng để lưu trữ dữ liệu và được sử dụng trong DAO class

Trang 14

2 Tạo lớp DAO (phương thức Design Access Object) là một interface định nghĩacác phương thức trừu tượng việc triển khai truy cập dữ liệu cơ bản choBusinessObject để cho phép truy cập vào nguồn dữ liệu.

3 Tạo lớp AdminDAO và sử dụng thư viện List để cho dữ liệu vào và cài đặt cácchức năng (function: delete, get) Lớp này sẽ thao tác trực tiếp với nguồn dữliệu (DataSource)

14

Trang 15

4 Tạo lớp Client để có thể chạy thử code

2) Singleton pattern:

a) Giới thiệu pattern:

Singleton là 1 trong 5 design pattern của nhóm Creational Design Pattern

Trang 16

Singleton đảm bảo chỉ duy nhất một thể hiện (instance) được tạo ra và nó sẽcung cấp cho bạn một method để có thể truy xuất được thể hiện duy nhất đó mọi lúcmọi nơi trong chương trình.

b) UML minh họa:

c) Ứng dụng của pattern:

Vì class dùng Singleton chỉ tồn tại 1 Instance (thể hiện) nên nó thường đượcdùng cho các trường hợp giải quyết các bài toán cần truy cập vào các ứng dụng như:Shared resource, Logger, Configuration, Caching, Thread pool, …

Một số design pattern khác cũng sử dụng Singleton để triển khai: AbstractFactory, Builder, Prototype, Facade,…

d) Mô tả khái quát về code:

Để tạo một ví dụ Singleton Pattern kể trên chúng ta sẽ tiến hành 1 bước sau:Cách đơn giản nhất là chúng ta gọi phương thức synchronized của hàmgetInstance() và như vậy hệ thống đảm bảo rằng tại cùng một thời điểm chỉ có thể có

1 luồng có thể truy cập vào hàm getInstance() và đảm bảo rằng chỉ có duy nhất 1 thểhiện của class

16

Trang 17

3) Factory pattern:

a) Giới thiệu pattern:

Factory Pattern là một trong những Pattern thuộc nhóm Creational DesignPattern Nhiệm vụ của Factory Pattern là quản lý và trả về các đối tượng theo yêu cầu,giúp cho việc khởi tạo đổi tượng một cách linh hoạt hơn

Factory Pattern đúng nghĩa là một nhà máy, và nhà máy này sẽ “sản xuất” cácđối tượng theo yêu cầu của chúng ta

Ví dụ: Hệ thống mua bán điện thoại có cung cấp API để truy cập đến hệ thống.Team được giao nhiệm vụ thiết kế một API để khác hàng (Client) có thể sử dụng tùychọn đặt hàng của loại điện thoại bất kì Hiện tại, phía Client chỉ cần sử dụng dịch vụcủa 2 loại hàng điện thoại Tuy nhiên để dễ mở rộng sau này, và phía client mongmuốn không cần phải thay đổi code của họ khi cần sử dụng thêm dòng điện thoại mới

để có thể hướng đến đối tượng khác nhau Với yêu cầu như vậy, chúng ta có thể sửdụng một Pattern phù hợp là Factory Pattern

Trang 18

b) UML minh họa:

c) Ứng dụng của pattern:

Chúng ta có một super class với nhiều class con và dựa trên đầu vào, chúng tacần trả về một class con Mô hình này giúp chúng ta đưa trách nhiệm của việc khởi tạomột lớp từ phía người dùng (client) sang lớp Factory

Chúng ta không biết sau này sẽ cần đến những lớp con nào nữa Khi cần mởrộng, hãy tạo ra sub class và implement thêm vào factory method cho việc khởi tạosub class này

Factory Pattern được áp dụng trong:

JDK: java.util.Calendar, ResourceBundle, NumberFormat, …

BeanFactory trong Spring Framework

18

Trang 19

SessionFactory trong Hibernate Framework.

d) Mô tả khái quát về code:

Để tạo một ví dụ Factory Pattern kể trên chúng ta sẽ tiến hành 6 bước sau:

1 Tạo lớp smartphone chứa các phương thức price, Delivery, getDescriptionđược sử dụng để mô tả giá thành và tên sản phẩm đồng thời để áp dụngtemplate pattern

2 Tạo lớp Dienthoaicaocap là môt supper class trong Factory Pattern có thể làmột interface, abstract class hay một class thông thường

Trang 20

3 Tạo lớp Dienthoaitamtrung là môt supper class trong Factory Pattern có thể làmột interface, abstract class hay một class thông thường.

20

Trang 22

4 Smartphonefactory là một class chịu tránh nhiệm khởi tạo các đối tượng subclass dựa theo tham số đầu vào.

22

Trang 23

5 Iphone12promax và Samsung21ultra là những lớp con được kế thừa từ lớpDienthoaicaocap đồng thời có các tính năng mua sản phẩm khác như airpod.

6 Realmesix và Xiaominote8 là những lớp con được kế thừa từ lớpDienthoaitamtrung

Trang 24

7 Tạo lớp Client để chạy thử code

24

Trang 25

vụ như vận chuyển, thanh toán… Ở phân khúc điện thoại cao cấp có thêm một số dịch

vụ khác như phụ kiện, bảo hành tại nhà…

Các phân khúc điện thoại đều dùng chung các phương thức dịch vụ cơ bảngiống nhau (như vận chuyển, thanh toán, hoặc thêm vào mục ưa thích…) Chúng tôi

có thể sử dụng lại các chức năng chung của hai dòng phân khúc này nhằm tiết kiệmthời gian, thêm vào một số chức năng mới cho dòng phân khúc cao cấp Chính vì vậy

mà Tempalte Method Pattern được chúng tôi sử dụng trong trường hợp này

Hướng giải pháp:

Template Pattern giúp định nghĩa một bộ khung của một thuật toán trong mộtchức năng, chuyển giao việc thực hiện nó cho các lớp con Mẫu Template Method chophép lớp con định nghĩa lại cách thực hiện của một thuật toán, mà không phải thay đổicấu trúc thuật toán

Template method giúp cho chúng tôi tạo nên một bộ khung (template) cho một

số vấn đề đang cần giải quyết cụ thể như việc sử dụng lại một số chức năng đã có trênmục phân khúc điện thoại tầm trung và thêm vào một số chức năng cho mục điệnthoại cao cấp Trong đó các đối tượng cụ thể (delivery, payment, addtocart…) sẽ cócùng các bước thực hiện, nhưng trong mỗi bước thực hiện đó có thể khác nhau Điềunày sẽ tạo nên một cách thức truy cập giống nhau nhưng có hành động và kết quảkhác nhau Chúng tô có thể viết một phương thức, dùng để xác định một loạt các thuậttoán, giống như hàm Delivery, Payment, Addtocart… được sử dụng trước đây ở điệnthoại tầm trung, để chạy một loạt các chức năng cho điện thoại cao cấp

b) UML minh hoạ:

Trang 26

d) Mô tả khái quát về code:

Để tạo một Template Pattern ứng dụng vào hệ thống bán hàng thiết bị điện tửcủa mình, chúng tôi thực hiện như sau:

Chúng tôi tạo một lớp Smartphone chứa các chức năng có thể sử dụng chungcủa hai phân khúc điện thoại cao cấp và điện thoại tầm trung

26

Trang 27

Sau đó tiến hành triển khai chức năng ỏ hai phân khúc điện thoại cao cấp vàđiện thoại tầm trung.

Trang 28

Sau khi thực hiện code các chức năng xong, chúng tôi có thể sử dụng chungcác chức năng giống nhau ở phân khúc điện thoại tầm trung và phân khúc điện thoạicao cấp Tiết kiệm được thời gian.

5) Decorator pattern:

a) Giới thiệu pattern:

Trong hệ thống thiết bị điện tử của chúng tôi, ở lớp (class) computer cần mởrộng một phương thức trong đối tượng, và cách thông thường là chúng tôi sẽ kế thừađối tượng đó Việc này không phải sai, nhưng trong một vài trường hợp sẽ làm cho mãnguồn trở lên phức tạp hơn chúng tôi mong muốn

28

Trang 29

Đó là lý do chính cho việc chúng tôi sử dụng mẫu thiết kế Decorator, là mộtcách để mở rộng các phương thức một cách linh động.

b) UML minh hoạ:

c) Ứng dụng của pattern:

Trang 30

Decorator pattern là mẫu thiết kế thuộc nhóm structural Nó cung cấp khả năng

mở rộng một object bằng cách “đính kèm” biến hoặc phương thức mới cho mộtobject

Đối với chương trình thiết bị điện tử Khả năng mở rộng của mặt hàngComputer rất nhiều, chính vì thế cho nên Decorator pattern được sử dụng để mang lạihiệu quả cao nhất cho chương trình

Từ lớp computer, chúng tôi có thể mở rộng tới nhiều lớp hơn nữa nhằm mụcđích tạo sự đa dạng cho mặc hàng được bày bán có nhiều sự lựa chọn phụ kiện cũngnhư các gói mở rộng khác nhau

d) Mô tả khái quát về code:

Chúng tôi mở rộng các đối tượng thuộc tính mà lớp computer có thểcomponents như CaseCPU, MainBoard… để làm cho khả năng tuỳ chọn của mặt hàngcomputer đa dạng hơn

30

Ngày đăng: 08/12/2022, 04:13

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