Tải bản đầy đủ (.pdf) (35 trang)

ĐỒ Á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Ử

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (911.58 KB, 35 trang )

TỔNG LIÊN ĐỒ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 KHỐ 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
Lớp

:

18H50302

Khố

:

22

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

1


TỔNG LIÊN ĐỒ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 KHỐ 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
Lớp

:

18H50302

Khố

:

22

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

2


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úng
tơi hồ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ảng
viê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 q trình làm khố 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ức
của mình, phục vụ tốt hơn cơng tác thực tế sau này.

3


ĐỒ ÁN ĐƯỢC HỒ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ướng
dẫn của thầy Nguyễn Thanh Phước;. Các nội dung nghiên cứu, kết quả trong đề tài
nà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ệu
trong 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.
Ngồi ra, trong đồ án cịn sử dụng một số nhận xét, đánh giá cũng như số liệu
củ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 hồn tồ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 q 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



PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Phần xác nhận của GV hướng dẫn

________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
_______
Tp. Hồ Chí Minh, ngày

tháng năm

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

Phần đánh giá của GV chấm bài

________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________
Tp. Hồ Chí Minh, ngày


tháng năm

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

5


TÓM TẮT
Bài báo cáo với nội dung như sau:






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 hồ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:

/>
6


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.

Tổng thể thiết kế:...................................................................................................................11

III.

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

1) 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
2) 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
3) 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
4) 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

5) 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

6) Command pattern:....................................................................................................................31
a)

Giới thiệu pattern:.............................................................................................................31

b)

UML minh hoạ:..................................................................................................................31

c)

Ứng dụng của pattern:......................................................................................................32
7


d)
IV.
V.

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


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

8


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 hố
(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ặt
hà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 hố:
Người dùng có để mua bán các mặt hàng sản phẩm có trong chương trình
thiế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:


9


II.

Tổng thể thiết kế:

10


UML Classdiagram của chương trình biểu hiện rõ chi tiết các class của chương
trì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ản
củ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ế (Design
Pattern) đượ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ài
nguyê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:
-

Singleton Pattern.
Template Pattern.
Factory Pattern.
Decorator Pattern.
Command Pattern.
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 hố
(thơng qua Data access object Pattern), xuất hố đơn bán hàng (thơng qua Command
Pattern), 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ải

thay đổ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 tốn (thơng qua
Template 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
11


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
này.
Nhưng vấn đề xảy ra ở đây là các lớp nghiệp vụ (Business) đã kết hợp chặt chẽ
với lớp logic lữu trữ (persistence) khi chúng ta thay đổi sang cơ sở dữ liệu khác.

Hướng giải pháp:
Data Access Object (DAO) Pattern là một trong những Pattern thuộc nhóm cấu
trúc (Structural Pattern). Mẫu thiết kế DAO được sử dụng để phân tách logic lưu trữ
dữ liệu trong một lớp riêng biệt. Theo cách này, các service được che dấu về cách các
hoạt động cấp thấp để truy cập cơ sở dữ liệu được thực hiện. Nó cịn được gọi là
ngun tắc Tách logic (Separation of Logic).
Ý 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 logic
lư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


b) UML minh họa:

c) Ứng dụng của pattern:
DAO Pattern dựa trên các ngun 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ến
hà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ương
thức get/set được sử dụng để lưu trữ dữ liệu và được sử dụng trong DAO class.


13


2. Tạo lớp DAO (phương thức Design Access Object) là một interface định nghĩa
các phương thức trừu tượng việc triển khai truy cập dữ liệu cơ bản cho
BusinessObject để 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ác
chứ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


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.

15


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úc
mọ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 được
dù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: Abstract
Factory, 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àm
getInstance() 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


3) Factory pattern:
a) Giới thiệu pattern:
Factory Pattern là một trong những Pattern thuộc nhóm Creational Design
Pattern. 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ùy
chọ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 mong
muố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.

17



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 ta
cầ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ạo
mộ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ạo
sub class này.
Factory Pattern được áp dụng trong:
JDK: java.util.Calendar, ResourceBundle, NumberFormat, …
BeanFactory trong Spring Framework.
18


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ụng
template 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.

19



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


21


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

22


5. Iphone12promax và Samsung21ultra là những lớp con được kế thừa từ lớp
Dienthoaicaocap đồ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ớp
Dienthoaitamtrung.

23


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

24


4) Template Pattern:

a) Giới thiệu pattern:
Tình huống thực tế:
Dự án bán thiết bị điện tử gồm có nhiều thiết bị điện tử khác nhau như điện
thoại, máy tính… Ở mục điện thoại gồm các dòng điện thoại thuộc phân khúc tầm
trung và phân khúc cao cấp. Đối với dòng điện thoại tầm trung chúng tơi có các dịch
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ản
giống nhau (như vận chuyển, thanh tố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ệm
thờ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ột
chức năng, chuyển giao việc thực hiện nó cho các lớp con. Mẫu Template Method cho
phé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 đổi
cấu trúc thuật tố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ên
mụ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ện
thoạ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ều
nà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ật
toán, giống như hàm Delivery, Payment, Addtocart… được sử dụng trước đây ở điện
thoạ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ạ:

25



×