Tải bản đầy đủ (.docx) (29 trang)

Xây dựng game cờ caro trên ngôn ngữ java theo hướng cấu phần

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 (923.53 KB, 29 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
----------------------------------

BÁO CÁO BÀI TẬP LỚN
PHÁT TRIỂN PHẦM MỀM THEO CẤU PHẦN

Đề tài:
Xây dựng game cờ caro trên ngôn ngữ java
theo hướng cấu phần
Giáo viên hướng dẫn

: Nguyễn Thái Cường

Nhóm thực hiện

: Nhóm 19

Lớp

: ĐH-KTPM4 – K10

Thành viên thực hiện

:
1. Đào Hồng Nhung
2. Đỗ Thị Thêu
3. Đặng Thị Thơ

Hà Nội, 2018



TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
----------------------------------

BÁO CÁO BÀI TẬP LỚN
PHÁT TRIỂN PHẦM MỀM THEO CẤU PHẦN

Đề tài:
Xây dựng game cờ caro trên ngôn ngữ java
theo hướng cấu phần
Giáo viên hướng dẫn

: Nguyễn Thái Cường

Nhóm thực hiện

: Nhóm 19

Lớp

: ĐH-KTPM4 – K10

Thành viên thực hiện

:
1. Đào Hồng Nhung
2. Đỗ Thị Thêu
3. Đặng Thị Thơ


Hà Nội, 2018


LỜI NÓI ĐẦU
Nói đến công nghệ thông tin chúng ta hình dung ngay đến một môi trường phát
triển năng động vào bậc nhất trên thế giới hiện nay. Nó được áp dụng vào mọi mặt
đời sống, xã hội của con người, từ công việc cho tới giải trí.
Cùng với sự phát triển vượt bậc của CNTT, con người đã làm nên những sản
phẩm hữu ích để phục vụ cho đời sống tiêu biểu phải nói đến ngành giải trí. Hiện
nay có rất nhiều chương trình game ra đời mang tính giải trí mạnh mẽ và thú vị, tuy
nhiên những chương trình nhỏ mang tính trí tuệ vẫn chiếm một phần nào đó trong
lĩnh vực này. Một trong những chương trình đó phải nói đến các chương trình chơi
cờ, đại diện là “Trò chơi cờ caro”. Một trong những loại cờ khá được nhiều người
yêu thích vì tính đơn giản, thú vị của trò chơi. Chương trình được viết bằng ngôn
ngữ Java, là một loại ngôn ngữ có tính tương tác khá mạnh với những công cụ có
sẵn giúp cho người lập trình dễ dàng phát triển ứng dụng nhanh và thuận lợi.
Nhóm chúng em là một nhóm sinh viên với kinh nghiệm lập trình chưa có nhiều,
kiến thức còn hạn hẹp, kĩ năng còn nhiều hạn chế nhưng nhận được sự giúp đỡ tận
tình của thầy Nguyễn Thái Cường cũng như các bạn trong lớp, nhóm em đã cố gắng
hoàn thành xong bài tập lớn. Tuy nhiên bài tập lớn còn nhiều thiếu xót và lỗi rất
mong nhận được sự đóng góp tích cực của mọi người để nhóm em hoàn thiện tốt
hơn nữa.
Nhóm em xin chân thành cảm ơn!
Hà Nội, ngày … tháng 11 năm 2018
Nhóm sinh viên thực hiện!

3


Tóm tắt bài tập lớn

Đề tài: Xây dựng game cờ caro trên ngôn ngữ java theo hướng cấu phần
Nội dung bài tập lớn gồm có 3 chương:
Chương 1. Tổng quan về ngôn ngữ Java và lập trình hướng cấu phần
-

Nêu loại ứng dụng trong BTL, ngôn ngữ sử dụng, đặc điểm của kiểu ứng
dụng đó trong ngôn ngữ lập trình.
Kiến thức tổng quát về cấu phần, cách xây dựng kiểu ứng dụng đó theo
cấu phần.

Chương 2. Phân tích thiết kế hệ thống game cờ caro
-

Chức năng chính của chương trình, phân bố các chức năng theo các
modul (cấu phần), phân rã chức năng dựa theo các cấu phần đó.
Phân tích thiết kế dựa vào UML.

Chương 3: Thực nghiệm và kết qua
Nêu ngắn gọn cách xây dựng chương trình từ mã nguồn (sử dụng command line
và công cụ). Cần chỉ rõ những cấu phần đã xây dựng ra.

4


MỤC LỤC
Trang

DANH MỤC HÌNH
Trang


PHẦN I. MỞ ĐẦU
1.
2.

Tên đề tài
Xây dựng game cờ caro trên ngôn ngữ java theo hướng cấu phần
Lý do chọn đề tài

Game cờ caro hiện nay có thể nói là đã quá quen thuộc với mọi người trên mọi
lứa tuổi đặc biệt là sinh viên, học sinh. Cách chơi game rất dễ, đơn giản: bạn chỉ cần

5


tích vào những ô vuông “X” hoặc “O” sao cho 5 chữ “X” hoặc “O” đứng liền nhau
tạo thành 1 hàng thẳng , dọc, chéo, có thể là ngang là bạn thắng.
Chính vì lối chơi đơn giản không phức tạp và không bị nhàm chán nên cờ caro đã
trở nên rất phổ biến trong cuộc sống.
3.

Mục đích
Làm quen với các ngôn ngữ, các câu lệnh cơ bản và một số công nghệ.
Nhằm giải trí nhẹ nhàng cho những ai đang căng thẳng, nâng cao trí tuệ.

4.

Mục tiêu
Hiểu được kiến thức về hướng cấu phần.
Cách xây dựng một chương trình theo hướng cấu phần.
Phân tích thiết kế hệ thống UML.

Phân tích thành phần cho game.

5.

Phương pháp thực hiện
Thu thập nghiên cứu tài liệu
Phương pháp mô tả
Phương pháp lập kế hoạch
Phương pháp phân tích
Phương pháp thiết kế
Ngôn ngữ lập trình: Java
Công cụ: IntelliJ IDEA

PHẦN II. PHẦN NỘI DUNG
Chương 1. Tổng quát về ngôn ngữ Java và lập trình hướng cấu
phần
1.1. Ngôn ngữ lập trình Java
1.1.1. Khái niệm chung

6


Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong
những năm cuối thế kỉ 20, đầu thế kỉ 21. Nó được coi là công nghệ mang tính cách
mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất
trên nhiều nền tảng mà chỉ cần biên dịch một lần.
Đặc điểm nổi bật:
- Máy ảo Java (JVM - Java Virtual Machine)
- Thông dịch
- Độc lập nền

- Hướng đối tượng
- Đa nhiệm - đa luồng (MultiTasking - Multithreading)
- Khả chuyển (portable)
- Hỗ trợ mạnh cho việc phát triển ứng dụng
1.1.2. Java Swing

Java Swing là một phần của Java Foundation Classes (JFC) được sử dụng để tạo
các ứng dụng Window-Based. Nó được xây dựng ở trên cùng của AWT (Abstract
Windowing Toolkit) API và được viết hoàn toàn bằng Java.
Không giống AWT, Java Swing cung cấp các thành phần (Component) gọn nhẹ
và độc lập nền tảng. Javax.swing. Package cung cấp các lớp cho Java Swing chẳng
hạn như JButton, JTextField, JTextArea, JRadioButton, JCheckbox, JMenu,
JcolorChooser.
Cấu trúc thứ bậc của các lớp trong Java Swing
Sơ đồ dưới đây cung cấp cho các bạn cái nhìn tổng quan về cấu trúc theo thứ bậc
của các lớp trong Java Swing.

7


Hình 1.1. Cấu trúc thứ bậc trong Java Swing

Các phương thức được sử dụng phổ biến của lớp Component
Trong bảng sau, chúng tôi liệt kê một số phương thức thường được sử dụng
trong Java Swing.
Phương thức

Miêu ta

public void add(Component c)


Thêm một thành phần trên một thành
phần khác

public void setSize(int width,int
height)

Thiết lập kích cỡ của thành phần

Public void
setLayout(LayoutManager m)

Thiết lập Layout Manager cho thành
phần

8


public void setVisible(boolean b)

Thiết lập tính nhìn thấy (visible) của
thành phần. Theo mặc định là false

Có hai cách để tạo một Frame:
-

Bởi tạo đối tượng của lớp Frame (quan hệ kết hợp - Association)
Bởi kế thừa lớp Frame (quan hệ kế thừa - inheritance)

Phương thức setBounds(int xaxis, int yaxis, int width, int height) được sử

dụng để thiết lập vị trí của button.
Giới thiệu Swing Control
Mỗi UI (User Interface) bao gồm ba mặt chính:
-

Các phần tử UI: Đó là các phần tử nhìn thấy chủ yếu mà người dùng cuối
cùng nhìn thấy và tương tác với. GWT cung cấp rất nhiều các phần tử đa
dạng từ cơ bản tới nâng cao. Chúng ta sẽ giới thiệu chúng trong chương này.

-

Layout: Chúng định nghĩa cách các phần tử UI nên được tổ chức trên màn
hình và cung cấp đối tượng L&F (là viết tắt của Look and Feel) cuối cùng tới
GUI (Graphical User Interface). Phần này sẽ được trình bày trong chương
Layout.

-

Hành vi: Đó là các sự kiện xảy ra khi người dùng tương tác với các phần tử
UI. Phần này sẽ được trình bày trong chương Xử lý sự kiện.

Mỗi SWING control kế thừa các thuộc tính từ cấu trúc thứ bậc của lớp
Component.
Lớp Component trong Java Swing
Lớp Component là lớp abstract cho các điều khiển trên UI mà không có menu
của SWING. Component biểu diễn một đối tượng với sự biểu diễn đồ họa. Sau đây
là cú pháp để khai báo lớp:
public abstract class Component
extends Object
implements ImageObserver, MenuContainer, Serializable


9


Lớp Component này có một Constructor có tên là protected Component(). Nó
được sử dụng để tạo một Component mới.
Lớp Component bao gồm các trường sau:
static float BOTTOM_ALIGNMENT: Hằng này dễ dàng sử dụng cho
getAlignmentY.
static float CENTER_ALIGNMENT: Hằng này dễ dàng sử dụng cho
getAlignmentY và getAlignmentX.
static float LEFT_ALIGNMENT: Hằng này dễ dàng sử dụng cho
getAlignmentX.
static float RIGHT_ALIGNMENT: Hằng này dễ dàng sử dụng cho
getAlignmentX.
static float TOP_ALIGNMENT: Hằng này dễ dàng sử dụng cho
getAlignmentY.
Các phần tử Swing UI
Bảng dưới đây liệt kê danh sách các control được sử dụng phổ biến nhất trong
khi thiết kế GUI bởi sử dụng SWING.
ST
T

Control & Miêu ta

1

Lớp JLabel Một đối tượng JLabel là một thành phần để đặt text vào
trong một Container


2

Lớp JButton
Lớp này tạo một button đã được gán nhãn

3

Lớp JTable
Lớp JTable được sử dụng để hiển thị dữ liệu trên các ô của bảng hai
chiều

10


4

Lớp Graphics
Lớp này cung cấp nhiều phương thức để lập trình đồ họa

5

Lớp JColorChooser
Một JColorChooser cung cấp một pane gồm các control được thiết kế để
cho phép một người dùng thao tác và lựa chọn màu

6

Lớp JCheck Box
Một JCheckBox là một thành phần đồ họa mà có thể trong trạng
thái on (true) hoặc off(false)


7

Lớp JRadioButton
Lớp JRadioButton là một thành phần đồ họa mà có thể trong trạng
thái on (true) hoặc off (false) trong một nhóm

8

Lớp JList
Một thành phần JList biểu diễn cho người dùng một danh sách các item

9

Lớp JComboBox
Một thành phần JComboBox biểu diễn cho người dùng một menu các
lựa chọn

10

JTextField
Một đối tượng JTextField là một thành phần text cho phép chỉnh sửa
một dòng text đơn

11

Lớp JTextArea

11



Một đối tượng JTextArea là một thành phần text cho phép sửa đổi một
text có nhiều dòng
12

Lớp ImageIcon
Một ImageIcon control là một trình triển khai của Icon Interface mà tô
màu các Icon từ Image

13

Lớp JScrollbar
Một Scrollbar control biểu diễn một thành phần scroll bar để cho người
dùng khả năng lựa chọn từ trong một dãy các giá trị

14

Lớp JOptionPane
JOptionPane cung cấp tập hợp các dialog box chuẩn mà gợi ý người
dùng về một giá trị hoặc thông báo cho họ một cái gì đó

15

JFileChooser
Một JFileChooser control biểu diễn một dialog window từ đó người
dùng có thể lựa chọn một file

15

Lớp JProgressBar

Thanh tiến trình hiển thị phần trăm hoàn thành tác vụ đang diễn ra

17

Lớp JSlider
Một JSlider cho phép người dùng lựa chọn một giá trị từ một dãy cụ thể

18

Lớp JSpinner
Một JSpinner là một trường input dòng đơn, cho phép người dùng lựa
chọn một số hoặc một giá trị đối tượng từ dãy đã qua sắp xếp
12


JPanel là một container (thùng chứa) nó dùng để chứa các đối tượng tương tự
như JFrame tuy nhiên nó không phải là 1 JFrame. Dễ hiểu hơn thì bạn có thể hình
dùng ngôi nhà của chúng ta là 1 JFrame, còn phòng ngủ, phòng khách, phòng ăn đó
là các JPanel, tức là trong một JFrame chứa các JPanel, trong mỗi JPanel lại có thể
chứa các đối tượng hoặc thậm chí là các JPanel khác.
Tạo Jpanel
Chúng ta có 2 Phương thức khởi tạo JPanel hay dùng đó là:
JPanel(): Tạo 1 JPanel với Layout mặc định là FlowLayout
JPanel(LayoutManager layout): Tạo 1 JPanel với Layout được chỉ định
1.2. Lập trình hướng cấu phần
1.2.1. Khái niệm lập trình hướng cấu phần
-

Lập trình hướng cấu phần (COP – Component Oriented Programming) cho phép
các chương trình có thể được xây dựng lên từ các cấu trúc phần mềm có sẵn, bằng

việc tái sử dụng, tự chữa các khối mã máy tính. Các thành phần phải tuân theo tiêu
chuẩn nhất định, bao gồm giao diện, các kết nối, phát triển và triển khai các cấu
phần theo nhiều hình dạng và kích cỡ khác nhau, từ các cấu phần ứng dụng kích cỡ
nhỏ có thể giao dịch trung gian trực tiếp, cho đến những cấu phần khổng lồ bao
chứa những chức năng mở rộng. Về nguyên tắc, mỗi cấu phần có thể tái sử dụng
độc lập với ngữ cảnh, nói cách khác, có thể sử dụng mọi lúc, mọi nơi.
Các ngôn ngữ sử dụng lập trình hướng cấu phần: Visual Basic, Delphi, C#,
Java…
1.2.2.

Nguyên tắc của hướng cấu phần

Từ “cấu phần” đã được dùng trong ngành công nghiệp máy tính một thời gian
dài. Có một điều thực tế, khái niệm về cấu phần đã xuất hiện xung quanh chúng ta
từ trước khi máy tính ra đời. Mặc dù chúng ta có thể có nhiều định nghĩa khác nhau
về phần mềm hướng cấu phần, nhưng các nguyên tắc về phần mềm cấu phần giống
như cũ từ những các định nghĩa khác nhau.
Các nguyên tắc cơ bản trong công nghệ phần mềm hướng cấu phần nói chung và
lập trình hướng cấu phần nói riêng.
Nguyên tắc 1: Cách phân tích các thành phần đại diện và trừu tượng
Chiến lược cơ bản và hiệu quả để giải quyết bất kỳ vấn đề lớn và phức tạp
trong khoa học máy tính là “phân chia và xử lý”. Một ý tưởng chính trong phát
triển phần mềm hướng cấu phần là tạo ra các module phần mềm mà nó tự khép
kín và có khả năng độc lập triển khai. Do đó các nhà phát triển phần mềm khác
nhau sẽ có thể làm việc trên các thành phần độc lập khác nhau mà không cần
phải giao tiếp với nhau nhiều, và các thành phần này sẽ làm việc liền mạch với
nhau. Ngoài ra, trong giai đoạn duy trì phần mềm, sẽ có thể thay đổi một số
thành phần mà không ảnh hưởng đến tất cả các thành phần khác.




13


Khi chúng ta phân tách một hệ thống, chúng ta phân tách yếu tố của nó thành
các phần riêng biệt bằng một số cách sau:
- Mỗi thành phần như là một mức chi tiết.
- Mỗi thành phần có thể được giải quyết một cách độc lập.
- Các triển khai của các thành phần này có thể được tích hợp để đáp ứng
các yêu cầu của hệ thống.
Sự trừu tượng là 1 cách để phân chia sản phẩm bằng cách thay đổi các mức
chi tiết được xem xét. Các thành phần phần mềm cố gắng che giấu một số chi
tiết để cung cấp chỉ các thông tin cần thiết cho khách hàng thông qua giao diện
của họ. Chiến lược trừu tượng hóa và sau đó phân chia thành các kiểu điển hình
trong quá trình phát triển phần mềm. Sự phân chia được sử dụng để phân mảnh
phần mềm thành các thành phần mà có thể kết hợp được với nhau nhằm giải
quyết các vấn đề được đặt ra. Sự trừu tượng hỗ trợ đưa ra một lựa chọn tốt cho
các thành phần. Khoa học máy tính đã trải qua trừu tượng hóa khác nhau. Thủ
tục trừu tượng cho phép chúng ta phân chia một vấn đề thành các đơn vị chức
năng độc lập. Dữ liệu trừu tượng hoặc kiểu dữ liệu gói gọn các đối tượng với
một tập hợp các hoạt động đặc trưng cho các hành vi của các đối tượng.
Nguyên tắc 2: Có thể dùng lại nên đạt được ở các trình độ khác nhau
Phần mềm tồn tài dưới nhiều hình thức khác nhau trong suốt quá trình kỹ
phát triển phần mềm. Tại các mô hình và các giai đoạn phân tích, các đặc tả yêu
cầu được xem như là một hình thức của phần mềm. Trong giai đoạn thiết kế,
thiết kế kiến trúc và thiết kế chi tiết các tài liệu là một phần của phần mềm. Mã
nguồn trong giai đoạn thực hiện và thực thi triển khai code đến các khách hàng
là chắc chắn. Do đó, phần mềm có thể dùng lại, bao gồm việc tái sử dụng bất kỳ
sản phẩm phần mềm trong các định dạng khác nhau.
Có năm hình thức của các thành phần phần mềm, cụ thể là: thành phần đặc

tả, thành phần giao diện, thành phần thực hiện, các thành phần được cài đặt và
các thành phần đối tượng. Mỗi hình thức của các thành phần phần mềm có thể
được tái sử dụng trong các giai đoạn khác nhau của một vòng đời phần mềm.
• Nguyên tắc 3: Phát triển phần mềm hướng cấu phần tăng độ tin cậy của
phần mềm
Với những tiến bộ nhanh chóng của phần cứng máy tính, độ tin cậy cao,
mạnh mẽ và rẻ hơn phần cứng có sẵn cho các ứng dụng khác nhau. Độ tin cậy
của một hệ thống tính toán chủ yếu dựa vào sự tin cậy của bộ phận một phần
mềm. Phát triển phần mềm hướng cấu phần và lập trình hướng thành phần cung
cấp một cách có hệ thống để đạt được các hệ thống đáng tin cậy. Do sự trừu
tượng của các thành phần và hệ thống tích hợp của các thành phần, nó dễ dàng
hơn nhiều để xác nhận yêu cầu quan trọng và xác minh an toàn cho các hệ
thống hướng thành phần. Mặt khác, thành phần tái sử dụng thường đã được
kiểm nghiệm qua quá trình xác nhận và sử dụng thực tế trong một thời gian dài,
do đó, chất lượng của nó có thể yên tâm.


14


Nguyên tắc 4: Phát triển phần mềm hướng cấu phần có thể tăng năng
xuất phần mềm
Phần mềm hướng cấu phần được xây dựng bằng cách lắp ráp và tái sử dụng
các thành phần hiện có hơn là phát triển từ đầu mỗi lần – tái sử dụng thay vì
làm mới. Quá trình này nhanh hơn nhiều so với việc phát triển một ứng dụng từ
đầu trong hầu hết các trường hợp.
• Nguyên tắc 5: Phát triển phần mềm hướng cấu phần thúc đẩy tiêu
chuẩn phần mềm
Như Clemens Czyoerski mô tả, các thị phần để phát triển, thành phần tiêu
chuẩn phải được đạt đúng chỗ. Tiêu chuẩn có thể được sử dụng để tạo ra một

thỏa thuận về chi tiết kỹ thuật giao diện vững chắc, tạo điều kiện cho hiệu quả
của thành phần và đảm bảo COP là một mô hình lập trình mới, trong đó “plugand-play” trở thành hiện thực trong phát triển phần mềm cũng như các thành
phần phần cứng.
1.2.3. Tại sao COP quan trọng?


Với lập trình hướng cấu phần, người ta có thể tiến hành lập trình theo phương
thức sau:
-

Xây dựng một thư viện các thành phần, mỗi thành phần thực hiện một công
việc xác định.
Khi cần phát triển một phần mềm cụ thể, người ta chỉ cần chọn những thành
phần có sẵn trong thư viện để ghép lại với nhau. Người lập trình chỉ phát
triển thêm các thành phần mình cần mà chưa có trong thư viện.

COP cung cấp một phương thức cao hơn mức độ trừu tượng. Có một số lượng
ngày càng lớn các thành phần tái sử dụng thư viện hỗ trợ trong việc phát triển các
ứng dụng cho các lĩnh vực khác nhau.
COP có 3 mục tiêu chính: giải quyết phức tạp, quản lý thay đổi, và tái sử dụng.
-

Giai quyết phức tạp:

Chúng ta sống giới phức tạp ở thời đại bùng nổ thông tin. Theo nhóm nghiên
cứu ở trường đại học Berkeley năm 2000, “Thế giới sản xuất từ một đến hai
exabytes (exabytes = 1018bytes) thông tin mỗi năm, đó là khoảng 250 MB cho
mỗi người đàn ông, mỗi người phụ nữ và mỗi đứa trẻ trên trái đất. Như vậy
trong khoa học máy tính, kích thước độ phức và độ phức tạm tăng lên đáng kể.
Và thật may mắn, COP cung cấp một cách hiệu quả để đối phó với sự phức tạp

của phần mềm: phân chia và chinh phục.
Quan lý thay đổi:
Thay đôi là vốn có trong ngành công nghiệp công nghệ phần mềm. Các yêu
cầu người dùng thay đổi, thay đổi thông số kỹ thuật, thay đổi nhân sự, thay đổi
công nghệ, thay đổi ngân sách và còn nhiều nguyên nhân thay đổi khác.
Một trong những nguyên tắc cơ bản của kỹ thuật phần mềm là để nhấn mạnh
tầm quan trọng của quản lý các thay đổi. Điều quan trọng cần nhấn mạnh trong

-

15


kiến trúc và trong dự án. COP cung cấp một cách hiệu quả để thực hiện theo các
nguyên tắc cơ bản kỹ thuật phần mềm nhằm đối phó với các thay đổi: lên kế
hoạch cho sự thay đổi, thiết kế cho sự thay đổi và xây dựng các thay đổi. Phần
mềm sẽ dễ dàng thích ứng với những yêu cầu mới và các thay đổi mới. Các kỹ
sư phần mềm đã đi đến thống nhất rằng cách tốt nhất để đối phó với các thay
đổi liên tục là xây dựng hệ thống ra các thành phần để có thể tái sử dụng phù
hợp với một tiêu chuẩn và kiến trúc plug-in.
- Tái sử dụng:
Một phần mềm phải cho phép tái sử dụng thiết kế và thưc hiện một việc gì
đó và phải được sử dụng lại trong những hoàn cảnh khác nhau. Điều này sẽ làm
tăng năng suất làm việc, cải thiện chất lượng phần mềm…
Có nhiều cấp độ khác nhau trong việc tái sử dụng phần mềm.
Ví dụ:
Sao chép mã nguồn – Đây là cấp thấp nhất của việc tái sử dụng phần mềm.
Xây dựng lớp thư viện các hàm, thủ tục là hình thức tốt hơn về việc tái sử
dụng hơn so với việc sao chép mã nguồn nhưng không phổ biến.
Các lớp thư viện này tốt hơn về việc tái sử dụng và họ đang cố gắng phổ biến

nó. Tuy nhiên, vấn đề đặt ra là nó đòi hỏi sự hiểu biết trước khi các lớp có thể
tái sử dụng. Hơn nữa, nó chỉ hỗ trợ tái sử dụng hộp trắng. Và như vậy khách
hàng sẽ bị ảnh hưởng nếu cấu trúc bên trong các lớp thư viện này thay đổi.
Ví dụ, trong một ngôn ngữ hướng đối tượng (OPP) như C++ hay Java, các
lớp thư viện được kết hợp thực hiện với các lớp cơ sở. Những thay đổi bất kỳ
trong các lớp cơ sở sẽ phá vỡ kết cấu các lớp thư viện. Hơn nữa mức độ tái sử
dụng trong ngôn ngữ cụ thể, không thể tái sử dụng trên các ngôn ngữ khác.
COP hỗ trợ cấp độ cao nhất của việc tái sử dụng phần mềm vì nó cho phép
tái sử dụng bao gôm hộp trắng, hộp xám và hộp đen.
Tái sử dụng hộp trắng có nghĩa là phần source code của một thành phần phần
mềm được cung cấp, được nghiên cứu, tái sử dụng, điều chỉnh hoặc sửa đổi.
Tái sử dụng hộp đen được dựa trên nguyên tắc ẩn thông tin. Các giao diện cụ
thể cho các dịch vụ người dùng có thể yêu cầu từ một thành phần. Các thành
phần cung cấp được thực hiện các giao dịch mà khách hàng thao tác. Miễn là
các giao diện này không thay đổi, các thành phần có thể được thay đổi trong nội
bộ chương trình mà không ảnh hưởng tới người dùng.
Tái sử dụng hộp xám nằm giữa tái sử dụng hộp đen và tái sử dụng hộp trắng.
Khi kích thước và độ phức tạp của hệ thống phần mềm tăng lên, việc xác
định và quản lý phù hợp các mối liên hệ giữa các thành phần của hệ thông sẽ trở
thành trọng tâm. COP cung cấp một giải pháp quản lý để đối phó với sự phức
tạp của phần mềm, sự thay đổi liên tục của hệ thống và các vấn đề tái sử dụng
phần mềm. COP là mô hình thực tế để phát triển hệ thống phần mềm lớn. Ví dụ
như các doanh nghiệp có quy mô lớn và nằm phân tán, các ứng dụng web và
các dịch vụ web.
1.2.4.

Ưu và nhược điểm
16



Ưu điểm:
-

Tư duy giải thuật rõ ràng
Đơn giản, dễ hiểu

Nhược điểm:
-

-

-

Trong lập trình hướng cấu phần ta thường quan tâm đến việc phát triển các
hàm mà ít quan tâm tới dữ liệu – thứ mà chúng dùng để xử lý công việc.
(Điều này khiến cho dữ liệu khó kiểm soát)
Không hỗ trợ sử dụng lại mã nguồn: mỗi cấu trúc dữ liệu chỉ phù hợp với
một số giải thuật, khi thay đổi cấu trúc dữ liệu thì giải thuật phải thay đổi
theo
Không phù hợp với các bài toán lớn có nhiều module

Chương 2. Phân tích thiết kế hệ thống game cờ caro
2.1.

Giới thiệu game caro
17


Là một loại game đối kháng hai người chơi trên một tờ giấy hay màn hình có kẻ
các ô vuông đều nhau và người chơi đánh các kí tự O----X vào đó.

Luật chơi: trò chơi gồm hai người chơi mỗi bên lần lượt đánh dấu O—X, nếu bên
nào đạt được năm dấu chung hàng (có thể là hàng dọc, hàng ngang, hàng chéo) thì
thắng ngược lại người còn lại sẽ thua.
2.2.

Mô hình Use case

Hình 2.2. Biểu đồ Use case game caro
2.2.1. Danh sách các Actor

Tên Actor

Ý nghĩa

Người chơi

Người điều khiển toàn bộ trò chơi

2.2.2. Danh sách các Use-case

STT

Tên Use-case

Ý nghĩa / Ghi chú

1

Game


Use case hệ thống giúp quản lý chế độ chơi như: New,
End Game

2

Help

Use case giúp người xem thông tin về game và hướng
dẫn chơi game

3

Hight soccer

Use case giúp người chơi lưu điểm cao nhất

4

Exit

Use case giúp người chơi thoát trò chơi.

5

New game

Use case giúp người chơi chơi ván mới.
18



6

End game

2.2.3. Đặc
2.2.3.1.

Use case giúp người chơi thoát trò chơi.

tả use case
Use case Game

Hình 2.3. Use case game

Tóm tắt: Use case hệ thống giúp quản lý chế độ chơi như: New, End Game
Các dòng sự kiện chính:
Người chơi khởi động chương trình và chọn chơi “Game”.
Hệ thống hiển thị giao diện của trò chơi cho người chơi.
Trong quá trình chơi, người dùng có thể chọn 2 chức năng là kết thúc trò
chơi “End game” hoặc chơi lại “new game”.
o

Người chơi lựa chọn 1 trong 2 chức năng
Nếu người chơi chọn New game. Dòng sự kiện A1 được thực
hiện.
Nếu người chơi chọn End game. Dòng sự kiện A2 được thực
hiện.

Các dòng sự kiện rẽ nhánh:
Luồng sự kiện A1: Hệ thống sẽ thực hiện load lại trò chơi trở về trạng

thái ban đầu.
Luồng sự kiện A2: Hệ thống sẽ dừng trò chơi.
Tiền điều kiện: Yêu cầu người chơi khởi động chương trình.
Hậu điều kiện: Hiển thị giao diện trò chơi và 2 chức năng chơi lại và kết
thúc trò chơi.
2.2.3.2.

Use-case New

Tóm tắt: Use case giúp người chơi tạo màn chơi mới.
Các dòng sự kiện chính
Người chơi khởi động chương trình chọn chơi Game.
Hệ thống sẽ hiển thị các lựa chọn cho người chơi: New và End Game
19


Người chơi lựa chọn từ danh sách là New.
Chương trình được khởi động lại như trạng thái đã lưu trước đó.
Các dòng sự kiện rẽ nhánh: Không có.
Tiền điều kiện: Yêu cầu người chơi khởi động chương trình.
Hậu điều kiện: Người chơi được tạo được màn chơi mới.
Use-case End game
Tóm tắt: Use case giúp người chơi kết thúc trò chơi
Các dòng sự kiện chính
Người chơi khởi động chương trình chọn chơi Game.
Hệ thống sẽ hiển thị các lựa chọn cho người chơi: New và End Game
Người chơi lựa chọn từ danh sách là End Game.
Chương trình được tắt, người chơi thoát khỏi trò chơi

2.2.3.3.


Các dòng sự kiện rẽ nhánh: Không có.
Tiền điều kiện: Yêu cầu người chơi khởi động chương trình
Hậu điều kiện: Người chơi thoát được ra khỏi trò chơi
2.2.3.4.
Use case Hight soccer

Hình 2.4. Use case hight soccer

Tóm tắt: Use case hệ thống hiển thị top người chơi có điểm số cao.
Các dòng sự kiện chính:
Người chơi khởi động chương trình chọn High Score.
Hệ thống hiển thị thông tin về danh sách người chơi có điểm số cao.
Các dòng sự kiện rẽ nhánh: Không có
Tiền điều kiện: Lựa chọn menu High Score
Hậu điều kiện: Hiển thị danh sách người chơi có điểm số cao.
2.2.3.5.
Use case Help

20


Hình 2.5. Use case help

Tóm tắt: Use case hệ thống hiển thị luật chơi của game
Các dòng sự kiện chính:
Người chơi khởi động chương trình chọn help.
Hệ thống hiển thị thông tin luật chơi.
Các dòng sự kiện rẽ nhánh: Không có
Tiền điều kiện: Lựa chọn menu help

Hậu điều kiện: Hiển thị luật chơi.
2.2.3.6.
Use case Exit

Hình 2.6. Use case exit

Tóm tắt: Use case hệ thống thoát khỏi chương trình.
Các dòng sự kiện chính:
Người chơi khởi động chương trình chọn exit.
Hệ thống thoát khỏi chương trình.
Các dòng sự kiện rẽ nhánh: Không có.
Tiền điều kiện: Lựa chọn menu exit.
2.2.3.7.
Use case Sound

Hình 2.7. Use case Sound

Tóm tắt: Use case giúp người chơi cài đặt âm thanh cho trò chơi
Các dòng sự kiện chính
21


Người chơi lựa chọn từ danh sách là Sound. Chương trình hiển thị lên
chức năng Tắt/bật âm thanh.
Chương trình được mở ra được mặc định là có âm thanh. Người chơi
chọn tắt âm thanh thì dòng sự kiện A1 được thực hiện.
Nếu người chơi đang chơi ở chế độ không có âm thanh mà chọn bật âm
thanh thì dòng sự kiện A2 được thực hiện.
Các dòng sự kiện rẽ nhánh:
Luồng sự kiện A1: Âm thanh của trò chơi được tắt đi.

Luồng sự kiện A2: Âm thanh của trò chơi được bật lên.
Tiền điều kiện: Yêu cầu người chơi khởi động chương trình, chọn Sound.
Hậu điều kiện: Người chơi thay đổi được âm thanh của trò chơi.
2.2.4.

Sơ đồ lớp

Hình 2.8. Sơ đồ lớp

22


Chương 3. Thực nghiệm - Ứng dụng
3.1. Xây dựng chương trình bằng Command Line
3.1.1. Phân tích các cấu phần cho Game Caro

Từ những phân tích chức năng đã thực hiện ở Chương II, có thể chia Game
Caro thành các cấu phần như sau:
Cấu phần giao diện:

-

Hình 3.9. Giao diện game
-

-

3.1.2.

Cấu phần Âm thanh game: Cho phép thay đổi các âm thanh phát ra khi

chơi... tạo sự cuốn hút, thích thú cho người chơi.
Cấu phần luật chơi: Cho phép mức độ chơi.
Các cấu phần này được built ra thành thư viện file .class có thể được dễ
dàng thay thế.
Cấu phần chức năng Save: Lưu trữ trạng thái hiện hành của trò chơi lên
tệp dữ liệu ghi trên đĩa cứng máy tính, trạng thái này sẽ được nạp trở lại
trong lần khởi động trò chơi sau đó.
Cấu hình biến môi trường để sử dụng Command Line

Đầu tiên bạn thiết lập biến môi trường:
Bước 1: My computer >Nháy chuột phải > Properties > Advanced >
Environment.
Bước 2: Tại mục "System variables" bạn tìm tới "Path" rồi chọn "Edit".
Bước 3: Tìm đường dẫn tới thư mục bin của java, máy mình là:
23


C:\Program Files\Java\jdk1.8.0_152\bin.
Chèn đường dẫn trên vào cuối ô “Variable value”.
Bước 4: Ok và lưu lại.
Kiểm tra việc thiết lập biến môi trường có thành công hay không bằng cách
mở cửa sổ Run lên (ấn tổ hợp phím Window + r), gõ cmd rồi ấn Enter gõ câu
lệnh sau.

Nếu màn hình hiện như sau là việc thiết lập biến môi trường của bạn đã thành
công.

3.1.3.

Xây dựng Game Caro bằng Command Line


Bước 1: Xây dựng mã nguồn GameView.java, SoundView.java, Menu.java,
Main.java trong Intelliji IDEA.
Bước 2: Trong Command line sử dụng câu lệnh.

Để build file.java thành file.class
Bước 3: Sau khi build thành file.class  sử dụng câu lệnh sau để chạy chương
trình.

24


Lưu ý: chỉ lấy tên file bỏ .class
Sau khi build xong ta sẽ có thêm một thư mục “out” chứa các file.class.

Hình 3.10. Thư mục “out”

3.2. Giao diện Game Caro
3.2.1. Giao diện menu

Hình 3.11. Giao diện menu

3.2.2.

Giao diện GameView

25



×