You are on page 1of 15

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. Tên đề tài
Xây dựng game cờ caro trên ngôn ngữ java theo hướng cấu phần
2. 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 Thiết lập kích cỡ của thành phần
height)

Public void Thiết lập Layout Manager cho thành


setLayout(LayoutManager m) 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 Control & Miêu ta


T

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.
Tải bản FULL (file word 29 trang): bit.ly/2Ywib4t
Dự phòng: fb.com/KhoTaiLieuAZ
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.
Tải bản FULL (file word 29 trang): bit.ly/2Ywib4t
Dự phòng: fb.com/KhoTaiLieuAZ
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 đó “plug-
and-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
5191819
15

You might also like