Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 130 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
130
Dung lượng
6,78 MB
Nội dung
BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG TS VŨ HỮU TIẾN ThS ĐỖ THỊ LIÊN BÀI GIẢNG NGƠN NGỮ LẬP TRÌNH JAVA Mã học phần: INT13108 (03 tín chỉ) Hà Nội, 11/2019 MỤC LỤC MỤC LỤC .2 DANH SÁCH HÌNH VẼ CHƯƠNG TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ NGƠN NGỮ LẬP TRÌNH JAVA 1.1 Các phương pháp tiếp cận lập trình ứng dụng 1.2 Các khái niệm lập trình hướng đối tượng 1.2.1 Lớp đối tượng 1.2.2 Phương thức thông điệp 1.2.3 Tính đóng gói 1.2.4 Kế thừa 1.2.5 Đa hình 1.3 Giới thiệu ngơn ngữ lập trình hướng đối tượng Java 1.3.1 Lịch sử Java 1.3.2 Đặc trưng ngôn ngữ Java 10 1.3.3 Các công nghệ Java 12 1.3.4 Áp dụng Java thực tế .12 1.3.5 Mơi trường lập trình Java 12 1.3.6 Cấu trúc chương trình Java .13 1.3.7 Chương trình Java : .14 1.4 Các kiểu liệu Java 16 1.5 Các phép toán Java 17 1.5.1 Biến 17 1.5.2 Phép toán số học .18 1.5.3 Phép toán bit 19 1.5.4 Phép toán mối quan hệ 19 1.5.5 Phép toán logic 20 1.5.6 Độ ưu tiên phép toán 21 1.6 Cấu trúc lệnh Java .21 1.6.1 Lệnh in liệu hình 21 1.6.2 Lệnh nhập liệu từ bàn phím 23 1.6.3 Các lệnh điều khiển Java 24 BÀI TẬP CHƯƠNG 28 CHƯƠNG LỚP VÀ ĐỐI TƯỢNG TRONG JAVA 29 2.1 Cơ lớp .29 2.1.1 Khai báo lớp 29 2.1.2 Mô tả lớp UML 30 2.1.2.1 Mơ tả thuộc tính có cú pháp sau: 31 2.1.2.2 Mơ tả hành vi (operation) có cú pháp sau: .32 2.1.3 Phương thức lớp 32 2.1.4 Truyền tham số cho phương thức .34 2.1.5 Phương thức khởi tạo (Constructor) 36 2.1.6 Khai báo khởi tạo đối tượng 36 2.1.7 Lớp lồng lớp nội .38 2.2 Phân loại biến Java 40 2.3 Một số thư viện Java .42 2.3.1 Lớp bao (Wrapper class) 42 2.3.2 ArrayList 43 2.3.3 Lớp xử lý chuỗi String 44 2.3.4 Lớp java.lang.Math 45 BÀI TẬP CHƯƠNG 46 CHƯƠNG TÍNH KẾ THỪA VÀ ĐA HÌNH TRONG JAVA 47 3.1 Mối quan hệ lớp .47 3.1.1 Mối quan hệ “Phụ thuộc” – Dependency 47 3.1.2 Mối quan hệ “Kết nối” – Association: 47 3.1.3 Mối quan hệ “Kết nối hai chiều” – Bidirectional Association 49 3.1.4 Mối quan hệ “Thành phần” – Aggregation .49 3.1.5 Mối quan hệ “Hợp thành” – Composition 50 3.1.6 Mối quan hệ “Kế thừa” – Inheritance .51 3.1.7 Kế thừa phương thức khởi tạo lớp cha .53 3.1.8 Thiết kế kế thừa 54 3.2 Tính đa hình Java 57 3.2.1 Tính đa hình 57 3.2.2 Cài đè phương thức (Override) 59 3.2.3 Cài chồng phương thức (Overload) 60 3.2.4 Lớp trừu tượng phương thức trừu tượng 61 3.2.5 Lớp giao diện (interface) 62 BÀI TẬP CHƯƠNG 65 CHƯƠNG XỬ LÝ NHẬP/XUẤT TRONG .67 4.1 File luồng liệu .67 4.2 Lớp File 68 4.3 Kiến trúc luồng xuất liệu file 69 4.3.1 Dữ liệu dạng byte 70 4.3.2 Dữ liệu dạng văn 71 4.4 Ghi/đọc chuỗi ký tự tệp văn 71 4.5 Đọc/ghi liệu luồng byte 73 4.5.1 Đọc/ghi liệu dạng .73 4.5.2 Đọc/ghi liệu đối tượng .74 BÀI TẬP CHƯƠNG 78 CHƯƠNG XỬ LÝ NGOẠI LỆ TRONG JAVA 79 5.1 Xử lý ngoại lệ .79 5.2 Khối try/catch .83 5.2.1 Hoạt động khối try/catch 83 5.2.2 Xử lý nhiều ngoại lệ 85 5.3 Ném ngoại lệ 86 5.4 Lan truyền lỗi ngoại lệ 86 5.5 Ngoại lệ kiểm tra không kiểm tra 87 5.6 Lỗi người dùng định nghĩa 88 BÀI TẬP CHƯƠNG 89 CHƯƠNG LẬP TRÌNH ĐA LUỒNG 90 6.1 Đa luồng (Multithreading) 90 6.2 Các cách tạo luồng .90 6.3 Vòng đời luồng .94 6.4 Tạm ngừng, chạy lại ngừng luồng 95 6.5 Mức độ ưu tiên lập lịch cho luồng 96 6.6 Đồng (Synchronization) 98 6.7 Tương tác luồng 100 BÀI TẬP CHƯƠNG 104 CHƯƠNG LẬP TRÌNH GIAO DIỆN TRONG JAVA 105 7.1 Lập trình giao diện với đối tượng .105 7.2 Container 106 7.2.1 Frame 107 7.2.2 Panel 107 7.2.3 Dialog 108 7.3 Component 109 7.3.1 Label .109 7.3.2 TextField 110 7.3.3 TextArea 111 7.3.4 Button 111 7.3.5 Checkbox RadioButton 113 7.3.6 Choice .113 7.4 Layout 115 7.4.1 FlowLayout Manager 115 7.4.2 BorderLayout Manager 115 7.4.3 GridLayout Manager .116 7.5 Xử lý kiện 118 7.5.1 Khái niệm xử lý kiện 118 7.5.2 Các bước lập trình xử lý kiện .120 7.5.3 Các lớp xử lý kiện 120 7.6 Applet 123 7.6.1 Khái niệm Applet 123 7.6.2 Cấu trúc Applet 123 7.7 Lập trình giao diện với Swing 127 7.7.1 Tạo thành phần giao diện với Java Swing 127 7.7.2 Một số ví dụ với Swing 128 BÀI TẬP CHƯƠNG 129 TÀI LIỆU THAM KHẢO 130 DANH SÁCH HÌNH VẼ Hình 1 Biên dịch chương trình theo cách truyền thống 11 Hình Biên dịch chương trình Java .11 Hình Cấu trúc chương trình Java 13 Hình Cách khai báo lớp 13 Hình Cách khai báo phương thức 14 Hình Các lệnh phương thức 14 Bảng Các từ khóa mô tả phạm vi truy nhập 33 Bảng 2 Các lớp bao liệu 42 Bảng So sánh Array ArrayList 44 Bảng Một số phương thức lớp file 68 Bảng Một số lớp ngoại lệ thường gặp 83 Bảng Luồng xử lý try/catch/finally 85 Bảng Một số phương thức Label 110 Bảng Một số phương thức TextField .111 Bảng Một số phương thức TextArea .111 Bảng Một số lớp xử lý kiện .121 CHƯƠNG TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VÀ NGƠN NGỮ LẬP TRÌNH JAVA 1.1 Các phương pháp tiếp cận lập trình ứng dụng Lập trình công đoạn quan trọng chủ chốt thiếu để tạo sản phẩm phần mềm Phần mềm trở nên đa dạng ngành công nghiệp phần mềm phát triển người ta thấy rõ tầm quan trọng phương pháp lập trình Phương pháp lập trình tốt khơng đảm bảo tạo phần mềm tốt mà cịn hỗ trợ thiết kế phần mềm có tính mở hỗ trợ khả sử dụng lại module Nhờ dễ dàng bảo trì, nâng cấp phần mềm giảm chi phí phát triển phần mềm Trong thập kỷ 1970, 1980, phương pháp phát triển phần mềm chủ yếu lập trình có cấu trúc (structured programming) Cách tiếp cận cấu trúc việc thiết kế chương trình dựa chiến lược chia để trị: Để giải tốn lớn, tìm cách chia thành toán nhỏ giải riêng bài; để giải bài, coi tốn tiếp tục chia thành toán nhỏ hơn; cuối cùng, ta đến tốn giải mà không cần phải chia tiếp Cách tiếp cận gọi lập trình từ xuống (top-down programming) Lập trình từ xuống phương pháp tốt áp dụng thành công cho phát triển nhiều phần mềm Tuy nhiên, với đa dạng va phức tạp phần mềm, phương pháp bộc lộ hạn chế Trước hết, đáp ứng việc tạo lệnh quy trình để giải tốn Dần dần, người ta nhận thiết kế cấu trúc liệu cho chương trình có tầm quan trọng không việc thiết kế hàm/thủ tục cấu trúc điều khiển Lập trình từ xuống khơng quan tâm đủ đến liệu mà chương trình cần xử lý Thứ hai, với lập trình từ xuống, khó tái sử dụng phần chương trình cho chương trình khác Bằng việc xuất phát từ toán cụ thể chia thành mảnh cho thuận tiện, cách tiệp cận có xu hướng tạo thiết kế đặc thù cho tốn Chúng ta khó có thả lấy đoạn mã lớn từ chương trình cũ lắp vào dự án mà sửa đổi Thứ ba, môi trường hoạt động thực tế ứng dụng thay đổi Dẫn đến việc yêu cầu phần mềm phải liên tục thay đổi theo để đáp ứng nhu cầu người dùng không muốn phần mềm bị đào thải Do đó, thiết kế linh hoạt mềm dẻo mà nhà phát triển phầm mềm mong muốn Phương pháp tiếp cận từ lên (bottom-up) hỗ trợ tốt cho tính linh hoạt mềm dẻo Trong thực tế, thiết kế lập trình từ xuống thường kết hợp với thiết kế lập trình từ lên Trong tiếp cận từ lên, từ vấn đề mà ta biết cách giải có sẵn thành phần tái sử dụng xây dựng dần theo hướng lên trên, hướng đến giải pháp cho toán tổng Các thành phần tái sử dụng nên có tính module hóa cao Mỗi module thành phần hệ thống lớn hơn, tương tác với phần cịn lại hệ thống theo cách đơn giản quy ước chặt chẽ Chi tiết xảy bên module không cần xem xét đến hệ thống nói chung Đây gọi che giấu thơng tin, nguyên lý quan trọng công nghệ phần mềm Các module hỗ trợ dạng che giấu thông tin bắt đầu trở nên phổ biến ngơn ngữ lập trình đầu thập kỷ 80 Từ đó, hình thức tiên tiến ý tưởng lan rộng ngành cơng nghệ phần mềm Cách tiếp cận gọi lập trình hướng đối tượng (object-oriented programming) 1.2 Các khái niệm lập trình hướng đối tượng 1.2.1 Lớp đối tượng Trong thực tế, vật có thuộc tính hay trạng thái ta nhóm chung vật vào nhóm hay cịn gọi lớp vật Ví dụ lớp động vật bốn chân gồm động vật bốn chân, lớp phương tiện giao thông gắn máy gồm phương tiện gắn máy, v.v Trong lớp đó, vật coi đối tượng cụ thể lớp Trong ứng dụng Java, đối tượng có đặc điểm tương tự xếp vào nhóm, lớp (class) Mỗi lớp mơ tả đặc điểm chung cho đối tượng lớp Cụ thể, định nghĩa lớp mơ tả tất thuộc tính đối tượng thành viên lớp phương thức thực thi hành vi đối tượng Các đối tượng tạo chương trình chạy lớp khn mẫu mà từ tạo đối tượng thuộc lớp Mỗi đối tượng tạo từ lớp gọi thực thể (instance) lớp 1.2.2 Phương thức thơng điệp Trong Java, hành vi đối tượng lớp gọi phương thức lớp Ví dụ, thấy đối tượng tơ có chức chuyển số lớp tơ tạo phương thức chuyển số cho lớp Các đối tượng dùng thông điệp (message) để liên lạc với Nhìn từ phương diện lập trình, việc gửi thơng điệp tới đối tượng gọi phương thức đối tượng đó, cịn việc đối tượng nhận thơng điệp việc phương thức đối tượng khác gọi Ví dụ người dùng click chuột vào nút bấm cửa sổ chương trình thông điệp gửi đến đối tượng điều khiển nút bấm để thơng báo nút bấm click 1.2.3 Tính đóng gói Dữ liệu đối tượng thay đổi đối tượng Đặc tính gọi tính bao đóng Chúng ta tạo lớp bao đóng hồn tồn Java việc tạo tất thành viên liệu lớp hoạt động phạm vi lớp Đối tượng giao tiếp với phần khác chương trình thơng qua phương thức cụ thể gọi giao diện (interface) 1.2.4 Kế thừa Là quan hệ mang tính phân cấp mà hành viên lớp kế thừa lớp dẫn xuất trực tiếp gián tiếp từ lớp Đây chế cho phép định nghĩa lớp dựa định nghĩa lớp có sẵn, cho tất thành viên lớp cha có mặt lớp đối tượng thuộc lớp sử dụng thay cho đối tượng lớp cha đâu 1.2.5 Đa hình Đa hình khả tồn nhiều hình thức khác Trong hướng đối tượng, đa hình kèm với quan hệ kế thừa có nghĩa tên hiểu theo cách khác tùy tình Ví dụ có lớp Hình Vng, Hình Trịn lớp lớp Hình Học Khi ta sử dụng đối tượng Hình Học, đối tượng hiểu Hình Vng Hình Trịn tùy theo ngữ cảnh cụ thể 1.3 Giới thiệu ngơn ngữ lập trình hướng đối tượng Java 1.3.1 Lịch sử Java Cho đến tận ngày nay, đóng góp quan trọng cách mạng vi xử lý việc cho đời hệ máy tính cá nhân Ngồi ra, vi xử lý cịn có tác động mạnh mẽ tới việc phát triển thiết bị điện tử dân dụng thông minh Nhận thức điều này, Sun microsystems vào năm 1991 phát triển dự án nghiên cứu nội công ty James Gosling dẫn đầu, kết ngôn ngữ lập trình hướng đối tượng dựa C ++ mà Sun gọi Java đời Mục tiêu Java viết chương trình chạy nhiều hệ thống máy tính thiết bị điện tử khác Điều gọi “viết lần, chạy đâu” Công nghệ Web phát triển bùng nổ vào năm đầu thập niên 90 Sun thấy tiềm việc sử dụng Java để thêm nội dung động tính tương tác hình ảnh động vào trang web Nhờ vào phát triển hướng này, Java thu hút ý cộng đồng doanh nghiệp, khách hàng thường xuyên phải sử dụng web Java sử dụng để phát triển ứng dụng doanh nghiệp quy mô lớn, để tăng cường chức máy chủ web, để cung cấp ứng dụng cho thiết bị tiêu dùng (ví dụ: điện thoại di động, điện thoại thông minh, thiết bị thu giải mã tín hiệu truyền hình (set-top box),…) cho nhiều mục đích khác Sun microsystems Oracle mua lại vào năm 2009 Tại hội nghị JavaOne 2010, Oracle thơng báo 97% máy tính để bàn doanh nghiệp, ba tỷ thiết bị cầm tay 80 triệu thiết bị truyền hình sử dụng Java Hiện có triệu nhà phát triển Java so với 4,5 triệu năm 2005 Java ngôn ngữ phát triển phần mềm sử dụng rộng rãi giới 1.3.2 Đặc trưng ngôn ngữ Java Đơn giản: Các nhà thiết kế ngôn ngữ Java cố gắng phát triển ngơn ngữ lập trình dễ dàng cho người học Họ muốn tạo ngôn ngữ thân thiện với hầu hết lập trình viên Do vậy, họ loại bỏ khái niệm phức tạp C C++ trỏ, struct, union,… Hướng đối tượng: Tất thứ đề cập đến Java liên quan đến đối tượng định nghĩa trước, chí hàm chương trình viết Java (đó hàm main) phải đặt bên lớp Dữ liệu (Data) phương thức (Method) xử lý liệu khái niệm nhắc nhiều đến Java Dữ liệu mô tả trạng thái đối tượng, phương thức mô tả hành vi đối tượng Độc lập với tảng (Platform independent): Độc lập với tảng coi khả chương trình chạy hệ điều khác (Windows, Unix, Linux,…) Java độc lập với tảng mức chương trình (source code level) mức nhị phân (byte code) Độc lập mức chương trình có nghĩa chương trình chuyển từ hệ điều hành sang hệ điều hành khác, biên dịch chạy ln hệ điều hành Độc lập mức nhị phân có nghĩa chạy file biên dịch nhiều hệ điều hành khác mà không cần phải biên dịch lại Đối với ngôn ngữ trước C C++, trình biên dịch làm nhiệm vụ chuyển lệnh chương trình thành lệnh vi xử lý máy tính hay cịn gọi mã máy Các mã máy thay đổi tùy theo vi xử lý Do vậy, chương trình muốn chạy tảng khác cần phải biên dịch lại chương trình cho phù hợp với tảng Hình 1.1 mơ tả việc biên dịch chương trình C++ để chạy tảng khác 10 // Constructor to setup GUI components and event handlers public AWTBorderLayoutDemo () { setLayout(new BorderLayout(3, 3)); // "super" Frame sets layout to BorderLayout, // horizontal and vertical gaps of pixels // The components are added to the specified zone btnNorth = new Button("NORTH"); add(btnNorth, BorderLayout.NORTH); btnSouth = new Button("SOUTH"); add(btnSouth, BorderLayout.SOUTH); btnCenter = new Button("CENTER"); add(btnCenter, BorderLayout.CENTER); btnEast = new Button("EAST"); add(btnEast, BorderLayout.EAST); btnWest = new Button("WEST"); add(btnWest, BorderLayout.WEST); setTitle("BorderLayout Demo"); // "super" Frame sets title size setSize(280, 150); // "super" Frame sets initial setVisible(true); // "super" Frame shows } // The entry main() method public static void main(String[] args) { new AWTBorderLayoutDemo(); // Let the constructor the job } } Kết quả: 7.4.3 GridLayout Manager Cách đặt chia cửa sổ container thành ô lưới Các thành phần đồ họa đặt vào vào ô lưới theo tọa độ Hàm khởi tạo GridLayout : GridLayout gl = GridLayout(4,4) ; // Tạo lưới GridLayout gồm 16 116 Ví dụ : import java.awt.*; import java.awt.event.*; // An AWT GUI program inherits the top-level container java.awt.Frame public class AWTPanelDemo extends Frame { private Button[] btnNumbers; // Array of 10 numeric Buttons private Button btnHash, btnStar; private TextField tfDisplay; // Constructor to setup GUI components and event handlers public AWTPanelDemo () { // Set up display panel Panel panelDisplay = new Panel(new FlowLayout()); tfDisplay = new TextField("0", 20); panelDisplay.add(tfDisplay); // Set up button panel Panel panelButtons = new Panel(new GridLayout(4, 3)); btnNumbers = new Button[10]; // Construct an array of 10 numeric Buttons btnNumbers[1] = new Button("1"); // Construct Button "1" panelButtons.add(btnNumbers[1]); // The Panel adds this Button btnNumbers[2] = new Button("2"); panelButtons.add(btnNumbers[2]); btnNumbers[3] = new Button("3"); panelButtons.add(btnNumbers[3]); btnNumbers[4] = new Button("4"); panelButtons.add(btnNumbers[4]); btnNumbers[5] = new Button("5"); panelButtons.add(btnNumbers[5]); btnNumbers[6] = new Button("6"); panelButtons.add(btnNumbers[6]); btnNumbers[7] = new Button("7"); panelButtons.add(btnNumbers[7]); btnNumbers[8] = new Button("8"); panelButtons.add(btnNumbers[8]); btnNumbers[9] = new Button("9"); panelButtons.add(btnNumbers[9]); // You should use a loop for the above statements!!! btnStar = new Button("*"); panelButtons.add(btnStar); btnNumbers[0] = new Button("0"); panelButtons.add(btnNumbers[0]); btnHash = new Button("#"); panelButtons.add(btnHash); 117 setLayout(new BorderLayout()); // "super" Frame sets to BorderLayout add(panelDisplay, BorderLayout.NORTH); add(panelButtons, BorderLayout.CENTER); setTitle("BorderLayout Demo"); // "super" Frame sets title setSize(200, 200); initial size setVisible(true); } // "super" Frame sets // "super" Frame shows // The entry main() method public static void main(String[] args) { new AWTPanelDemo(); // Let the constructor the job } } 7.5 Xử lý kiện 7.5.1 Khái niệm xử lý kiện Trong lập trình giao diện đồ họa, kiện (event) định nghĩa hành động thực người sử dụng Ví dụ người dùng ấn vào phím, kích chuột, nhấn lên nút, cuốn, Xử lý kiện (event handling) trình phát kiện thực nhiệm vụ mà u cầu Ví dụ người dùng nhấn vào nút Exit chương trình phải có nhiệm vụ phát việc khỏi chương trình chạy Vậy làm để phát kiện thực nhiệm vụ ? Câu trả lời phần mềm phải ln nằm vịng lặp để chờ kiện xảy để thực Tuy nhiên, người lập trình khơng phải viết vịng lặp mà Java hỗ trợ việc cho người lập trình Cụ thể, Java ln trạng thái lắng nghe kiện (event listening), kiện xảy ra, Java tự động gọi đến phương thức xử lý người lập trình viết Đây gọi mơ hình điều khiển theo kiện (event – drivent) Mơ hình mơ tả sau : 118 Hình Mơ hình xử lý kiện Mơ hình gồm thành phần : Nguồn tạo kiện (Source): thành phần giao diện mà kiện xuất Ví dụ button, textfield,… Source chịu trách nhiệm cung cấp thông tin kiện xảy tới xử lý Handler Khối xử lý kiện (Listener): Còn biết Event Handler Listener chịu trách nhiệm tạo phản hồi tới kiện Theo quan điểm Java, Listener đối tượng Khi kiện nhận, Listener xử lý kiện sau trả kết Các bước hoạt động mơ hình : Thành phần giao diện đăng ký khối xử lý kiện tương ứng để khối xử lý kiện xử lý kiện phù hợp với thành phần giao diện Về chất, khối xử lý kiện lớp giao diện cung cấp Java Trong lớp giao diện có phương thức để xử lý kiện tạo thành phần giao diện Ví dụ : Lớp xử lý kiện MouseListener có phương thức để xử lý kiện liên quan đến chuột : public interface MouseListener { // Xử lý kiện chuột ấn giữ public void mousePressed(MouseEvent evt); // Xử lý kiện chuột thả public void mouseReleased(MouseEvent evt); // Xử lý kiện chuột ấn thả public void mouseClicked(MouseEvent evt); // Xử lý kiện trỏ chuột đặt vào phạm vi thành phần giao diện 119 public void mouseEntered(MouseEvent evt); // Xử lý kiện trỏ chuột kéo khỏi phạm vi thành phần giao diện public void mouseExited(MouseEvent evt); } Thành phần kiện thay đổi trạng thái người dùng tác động Thành phần giao diện tạo đối tượng tương ứng với kiện xảy Thành phần giao diện gọi phương thức tương ứng lớp xử lý kiện để xử lý đối tượng vừa tạo truyền vào phương thức để xử lý 7.5.2 Các bước lập trình xử lý kiện Bước 1: Khai báo lớp xử lý kiện Lớp có nhiệm vụ implement lớp giao diện Listener public class DemoClass extends Frame implements ActionListener { } Bước 2: Gán đối tượng xử lý kiện lớp xử lý kiện khai báo cho components liên quan Component.addActionListener(instanceOf DemoClass); Bước 3: Triển khai phương thức xử lý kiện lớp giao diện Listener public void actionPerformed(ActionEvent e) { //code that reacts to the action } 7.5.3 Các lớp xử lý kiện Sự kiện Listener Interface Mô tả ActionEvent ActionListener Sự kiện xảy nút click, danh sách item double click menu lựa chọn AdjustmentEvent AdjustmentListener Sự kiện xảy scrollbar sử dụng ComponentEvent ComponentListener Sự kiện xảy component thay đổi kích thước, di chuyển, ẩn FocusEvent FocusListener Sự kiện xảy component chuột bàn phím lựa chọn 120 ItemEvent ItemListener Xảy menu item chọn, giải phóng checkbox list item click WindowEvent WindowListener Xảy cửa sổ activated, closed, opened quit TextEvent TextListener Xảy giá trị text field text area thay đổi MouseEvent MouseListener MouseMotionListener Xảy chuột di chuyển, click, giữ giải phóng KeyEvent KeyListener Xảy input nhận từ keyboard Bảng Một số lớp xử lý kiện Ví dụ : Sử dụng thành phần giao diện Choice 121 Kết : Ví dụ : Sử dụng thành phần giao diện Button 122 Kết : 7.6 Applet 7.6.1 Khái niệm Applet Applet chương trình Java chạy với hỗ trợ web browser Về chất, Applet giống Frame Frame dùng cho ứng dụng chạy độc lập Applet dùng cho ứng dụng chạy trên web Lớp Applet nằm gói java.applet Java Để tạo Applet, ta cần import hai gói sau: - Java.applet Java.awt 7.6.2 Cấu trúc Applet Mỗi Applet có phương thức mặc định chạy tự động init(), start(), stop() destroy() init – Hàm gọi trình khởi tạo applet Trong trình khởi tạo, đối tượng cụ thể Applet tạo Ngoài ra, phương thức sử dụng để nạp đối tượng đồ họa, khởi tạo biến tạo đối tượng 123 start- Khi hàm start gọi thực thực thi chương trình applet trình duyệt bạn Ngồi hàm dùng để khởi động lại applet sau tạm dừng stop – Hàm ngược lại với start, dừng hoạt động chương trình applet thực thi destroy – Hàm thực đóng hẳn chương trình applet Ngồi phương thức chương trình cịn số phương thức khác repaint(), paint(), paintComponents(),… Phương thức repaint() dùng để cập nhật lại toàn hiển thị cửa sổ Applet Hai phương thức lại dùng để vẽ hình ảnh, màu sắc, chữ, hình học,… lên Applet thơng q đối tượng Graphics Hình ảnh mơ tả chu trình hoạt động Applet cách Applet thực Hình Chu trình sống Applet - - Bước chạy applet trình “khởi tạo” Sau khởi tạo xong, applet “bắt đầu trình làm việc” Bước lặp lại trước applet bị tạm dừng Ví dụ người dùng chuyển đến trang web sau quay trở lại trang chứa applet Sự khác biệt init() start() start() gọi nhiều lần init() gọi lần Phương thức stop() gọi người dùng rời trang web thu nhỏ trang web Phương thức destroy() gọi người dùng tắt trang web Phương thức giúp giải phịng nhớ số cơng việc nhằm “dọn dẹp” tài nguyên Sự khác Application Applet: 124 - - Để Application thực thi phải dùng trình thơng dịch java, applet chạy trình duyệt có hỗ trợ java sử dụng AppletViewer Quá trình thực thi Application hàm main() cịn Applet bắt đầu hàm init() Application sử dụng lệnh system.out.println() để hiển thị kết hình console, Applet sử dụng phương thức drawString() để đưa dịng chữ lên hình Vì Applet chạy web nên có số giới hạn hoạt động để chương trình Applet khơng làm ảnh hưởng đến hệ thống web người sử dụng khơng thể xóa file, lấy thơng tin hệ thống,… Cụ thể, Applet có số hạn chế sau: - Không thể đọc ghi file hệ thống file người dùng Chỉ giao tiếp hai website hai website có chương trình Applet Khơng thể chạy chương trình hệ thống người dùng Khơng thể tải chương trình lưu trữ hệ thống người dùng Ví dụ chương trình Applet Netbeans: Giả sử ta tạo lớp AppletExample kế thừa lớp Applet : Bước : Chọn New Project : Bước : Chọn Next -> nhập tên Project Bước : Tại cửa sổ bên trái, click phải chuột vào Project Applet Example chọn New -> Other -> New File 125 Bước : Chọn Next -> Nhập tên file : AppletExample Bước : Viết chương trình cho người dùng nhập tuổi vào TextField Nếu tuổi nhỏ 18 báo người dùng ‘‘Chưa đủ tuổi bầu cử’’ Ngược lại, chương trình thơng báo người dùng ‘‘Bạn đủ tuổi bầu cử’’ Trong chương trình ta thấy hai phương thức init() paint() cài đè Một ứng dụng frame chạy có hàm main, cịn applet chạy có hàm init, paint, start, stop,… đặc biệt phải kế thừa từ đối tượng Applet Khi Applet chạy tự động gọi tới hàm init() để khởi tạo có trước, sau gọi tới hàm paint() thực nội dung hàm Phương thức paint() sử dụng để hiển thị văn hình đồ họa lên hình Nó gọi trình duyệt Web trình applet viewer cần phải vẽ lên hình 126 7.7 Lập trình giao diện với Swing Java Swing lớp tảng Java (Java Foundation Classes - JFC) sử dụng để tạo ứng dụng dựa cửa sổ Nó phát triển dựa API AWT hồn tồn viết java Tuy nhiên, khơng giống AWT, Java Swing cung cấp thành phần đồ họa nhẹ độc lập với tảng Gói javax.swing cung cấp lớp cho API swing java JButton, JTextField, JTextArea, JRadioButton, JCheckbox, JMothy, JColorChooser, v.v Cấu trúc gia phả Java Swing thể hình 7.6 7.7.1 Tạo thành phần giao diện với Java Swing Tương tự với AWT, tạo giao diện Java Swing cách viết lệnh trực tiếp Ngồi ra, ta dùng cách kéo thả thành phần giao diện vào cửa sổ Với cách này, chủ động xếp thành phần giao diện vào vị trí cách trực quan Hình Cây gia phả lớp SWING Ví dụ : import javax.swing.JFrame; public class Test extends JFrame { public Test() { setSize(300, 200); setTitle("Test"); 127 setDefaultCloseOperation(EXIT_ON_CLOSE); } } public static void main(String[] args) { Test test = new Test(); test.setVisible(true); } 7.7.2 Một số ví dụ với Swing Ví dụ : Tạo nút bấm Ví dụ : Tạo Bảng với Swing 128 BÀI TẬP CHƯƠNG Bài : Viết chương trình cho phép người dùng click chuột vào giao diện hiển thị tọa độ chuột người dùng click : Bài : Tạo giao diện hình vẽ : Bài : Tạo giao diện với chức hình vẽ : 129 TÀI LIỆU THAM KHẢO Kathy Sierra , Bert Bates Head First Java O’reilly Media, Inc, 2005 Bruce Eckel Thinking in Java President, MindView, Inc, 2006 Nguyễn Tiến, Ngơ Quốc Việt, Phạm Nguyễn Tuấn Kỳ Giáo trình lý thuyết thực hành Java Nhà xuất thống kê,2000 Trần Đình Quế Lập trình hướng đối tượng Học Viện Cơng Nghệ Bưu Chính Viễn Thơng 130 ... 4,5 triệu năm 2005 Java ngôn ngữ phát triển phần mềm sử dụng rộng rãi giới 1.3.2 Đặc trưng ngôn ngữ Java Đơn giản: Các nhà thiết kế ngôn ngữ Java cố gắng phát triển ngơn ngữ lập trình dễ dàng cho... chương trình Java Hình 2.2 mơ tả q trình biên dịch thơng dịch ngơn ngữ Java sang ngơn ngữ máy tính Macintosh Java program Trình biên dịch JVM IBM Sparc Hình Biên dịch chương trình Java Java ngơn ngữ. .. 1.3 Giới thiệu ngôn ngữ lập trình hướng đối tượng Java 1.3.1 Lịch sử Java 1.3.2 Đặc trưng ngôn ngữ Java 10 1.3.3 Các công nghệ Java 12 1.3.4 Áp dụng Java thực tế