Tải bản đầy đủ - 0 (trang)
Chương 1. Tổng quát về ngôn ngữ Java và lập trình hướng cấu phần

Chương 1. Tổng quát về ngôn ngữ Java và lập trình hướng cấu phần

Tải bản đầy đủ - 0trang

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 hồn tồ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 hồ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.

Ngun 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. Ngồ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 q 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 tố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ể n tâm.





14



Ngun 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 số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 tố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



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Chương 1. Tổng quát về ngôn ngữ Java và lập trình hướng cấu phần

Tải bản đầy đủ ngay(0 tr)

×