Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 201 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
201
Dung lượng
3,02 MB
Nội dung
VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TS Dương Thăng Long ThS Phạm Cơng Hịa ThS Trương Cơng Đồn HÀ NỘI 02/2012 (Lưu hành nội bộ) Lập trình hướng đối tượng LỜI NÓI ĐẦU Lịch sử đời phát triển máy tính điện tử có bƣớc tiến vƣợt bậc mặt Bên cạnh đó, cơng nghệ lập trình ứng dụng cho máy tính trải qua phƣơng pháp từ đơn giản đến đại Xuất phát với phƣơng pháp lập trình đến phƣơng pháp Lập lập trình cấu trúc (hƣớng chức năng) phƣơng pháp hƣớng đối tƣợng Phƣơng pháp lập trình cấu trúc phƣơng pháp tổ chức, phân chia chƣơng trình thành đơn vị nhỏ (gọi hàm, thủ tục) dựa chức cần giải quyết, chúng đƣợc dùng để hàm xử lý liệu mà cần nhƣng đƣợc tổ chức lại tách rời cấu trúc cấu trúc liệu Chúng ta, ngƣời làm tin học quen với phƣơng pháp lập trình thơng qua ngơn ngữ nhƣ Pascal, C Phƣơng pháp Lập trình hƣớng đối tƣợng dựa việc tổ chức chƣơng trình thành lớp đối tƣợng Khác với lập trình cấu trúc, phƣơng pháp đóng gói hàm với liệu mà hàm xử lý tạo thành lớp (class) Các lớp đối tƣợng mơ tả thực thể tốn cách chân thực, đầy đủ phần liệu yêu cầu quản lý Hiện nay, hầu hết ngơn ngữ lập trình đại cung cấp phƣơng pháp lập trình hƣớng đối tƣợng, việc nghiên cứu áp dụng phƣơng pháp lập trình cần thiết tất ngƣời quan tâm, u thích Tin học Ngơn ngữ lập trình java đời đƣợc nhà nghiên cứu công ty Sun MicroSystem giới thiệu vào năm 1995 Sau đời khơng lâu, ngơn ngữ lập trình đƣợc sử dụng rộng rãi phổ biến lập trình viên chuyên nghiệp nhƣ nhà phát triển phần mềm Gần ngôn ngữ lập trình java với cơng nghệ đƣợc phát triển đƣợc đƣa vào giảng dạy sở đào tạo lập trình viên chuyên nghiệp Một số trƣờng đại học Việt Nam giảng dạy mơn lập trình java nhƣ chun đề tự chọn cho sinh viên ngành công nghệ thông tin giai đoạn chuyên ngành Nội dung giáo trình tập trung giới thiệu kiến thức phƣơng pháp lập trình hƣớng đối tƣợng sử dụng ngơn ngữ java để minh họa giúp ngƣời đọc bƣớc đầu tiếp cập dễ dàng với phƣơng pháp lập trình hƣớng đối tƣợng thông qua việc sử dụng, khai thác kỹ thuật xử lý ngôn ngữ java Cuốn sách gồm chƣơng với nội dung tóm tắt sau: Chƣơng 1: giới thiệu tổng quan phƣơng pháp lập trình hƣớng đối tƣợng khái niệm bản, giới thiệu số ngơn ngữ lập trình hƣớng đối tƣợng Lập trình hướng đối tượng Chƣơng trình bày kỹ thuật xử lý ngôn ngữ java nhƣ: nhập, xuất liệu, xử lý mảng, chế nhớ động, phép xử lý tốn học, xâu ký tự,… Chƣơng nói khái niệm trung tâm lập trình hƣớng đối tƣợng lớp gồm: khai báo định nghĩa lớp, khai báo biến, mảng đối tƣợng (kiểu lớp), kỹ thuật lập trình xử lý lớp đối tƣợng, phƣơng thức, dùng trỏ this phƣơng thức, phạm vi truy xuất thành phần Chƣơng trình bày vấn đề tạo dựng đối tƣợng, vấn đề khác có liên quan nhƣ xây dựng lớp nhƣ: Nạp chồng, tham chiếu thành viên lớp con, Chƣơng trình bày khái quan trọng tạo nên khả mạnh lập trình hƣớng đối tƣợng việc phát triển, mở rộng phần mềm, khả thừa kế lớp Các vấn đề chi tiết liên quan đến kế thừa đƣợc nêu chƣơng Chƣơng trình bày khái niệm quan trọng khác cho phép xử lý vấn đề khác nhau, thực thể khác nhau, thuật toán khác theo lƣợc đồ thống nhất, vấn đề tƣơng đối khó nhƣng lại hữu ích đem lại ý nghĩa to lớn phƣơng pháp hƣớng đối tƣợng chế ảo trừu tƣợng Các kỹ thuật lập trình xử lý liên quan đến chế đƣợc nêu chi tiết Chƣơng nói kỹ thuật lập trình mở rộng nâng cao cung cấp java nhƣ kỹ thuật đa luồng, kỹ thuật giao diện lớp, lớp khung hay giới thiệu số thƣ viện lập trình giao diện ngƣời dùng đồ họa, lập trình giao diện hƣớng giao tiếp với internet Để đọc hiểu giáo trình ngƣời đọc cần nắm vững kiến thức nhập mơn lập trình Nhóm tác giả có nhiều cố gắng để hồn thiện tài liệu cách tốt có thể, nhiên, lần xuất chắn tránh khỏi sai sót Khi viết chúng tơi cố gắng để sách đƣợc hoàn chỉnh, song chắn khơng tránh khỏi thiếu sót, chúng tơi mong nhận đƣợc góp ý q độc giả Xin chân thành cảm ơn! Hà nội ngày 31 tháng 08 năm 2012 Nhóm tác giả Lập trình hướng đối tượng Chƣơng MỞ ĐẦU 1.1 Phương pháp lập trình hướng đối tượng Sự đời phát triển máy tính điện tử kéo theo phát triển phƣơng pháp lập trình cho máy tính điện tử Bắt đầu từ phƣơng pháp sơ khai, đơn giản lập trình tuần tự, tiếp đến lập trình có cấu trúc nay, đƣợc sử dụng rộng rãi môi trƣờng đại phƣơng pháp lập trình hƣớng đối tƣợng (Object-Oriented Programming, viết tắt OOP) Phƣơng pháp lập trình có cấu trúc dựa cách thức giải toán theo hƣớng chức Theo đó, để giải toán lớn phân rã (theo chức năng) thành nhiều toán nhỏ, tiếp tục nhƣ để đạt đƣợc tốn đơn giản triển khai lập trình dễ dàng Quá trình gọi phân tích từ xuống “top-down” Phƣơng pháp dựa ngơn ngữ mơ tả tốn, chủ yếu phải tìm “động từ” để đƣa chức cần giải trình phân tích Mỗi tốn thu đƣợc phƣơng pháp đƣợc lập trình để thực dƣới dạng chƣơng trình con, nhƣ để giải tốn lớn có nhiều mơ-đun chƣơng trình hệ thống chƣơng trình Hiện nay, hầu hết mơi trƣờng lập trình cung cấp phƣơng pháp lập trình hƣớng đối tƣợng Các nguyên lý việc áp dụng phƣơng pháp đƣợc khởi nguồn từ năm 1960, sau vào năm 1980, ngơn ngữ lập trình hƣớng đối tƣợng đƣợc phát triển nhƣ Smalltalk, Eiffel, C++ đặc biệt vào năm 1990, ngôn ngữ Java đƣợc phát triển mạnh hãng Sun Microsystems, đƣợc sử dụng rộng rãi Phƣơng pháp lập trình hƣớng đối tƣợng dựa cách thức giải toán theo hƣớng đối tƣợng Theo đó, xem xét tồn đối tƣợng toán, mối quan hệ tƣơng tác chúng để thực mục tiêu đặt cho tốn, từ áp dụng phƣơng pháp phân tích thiết kế từ dƣới lên (“bottom-up”) Trong tài liệu không sâu trình bày phƣơng pháp phân tích thiết hƣớng đối tƣợng, làm quen với phƣơng pháp thơng qua ví dụ minh họa so sánh phƣơng pháp dựa chức phƣơng pháp dựa đối tƣợng nhƣ sau Để minh họa, xem xét toán quản lý sinh viên chẳng hạn Lập trình hướng đối tượng Hình vẽ 1.1: Minh họa toán quản lý sinh viên Rõ ràng, theo hƣớng chức đơn giản liệt kê công việc thực gồm: cập nhật hồ sơ sinh viên; lên kế hoạch đào tạo; tổ chức thi lên điểm; Ở phân rã tốn cần làm thành cơng việc (hay chức năng) nhỏ, nhƣ phía lập trình xây dựng mơ-đun chƣơng trình để giải công việc Đối với phƣơng pháp giải dựa đối tƣợng, xem xét toán cần có đối tƣợng sinh viên, đối tƣợng giáo viên, đối tƣợng ngƣời quản lý, đối tƣợng mơn học, Trong đó, loại có nhiều đối tƣợng khác nhƣ sinh viên lên đến hàng nghìn đối tƣợng Số lƣợng cho loại đối tƣợng khác phụ thuộc vào tốn cụ thể Sau xem xét mối quan hệ tƣơng tác đối tƣợng để thực mục tiêu toán đặt Phƣơng pháp lập trình hƣớng đối tƣợng phát sinh nhiều khái niệm mới, yêu cầu ngƣời lập trình cần nắm vững chúng đƣợc trình bày phần tiếp sau 1.2 Các khái niệm, đặc trưng lập trình hướng đối tượng 1.2.1 Các khái niệm lập trình hướng đối tượng - Đối tƣợng (objects): thể nhớ gói gồm biến hàm chƣơng trình phần mềm Trong thực tế khái niệm rộng, ám đến vật, tƣợng giới thực Tuy nhiên, khái niệm đối tƣợng lập trình (hay cịn gọi đối tƣợng phần mềm – software objects) hạn hẹp nhiều, chủ yếu đề cập đến khía cạnh thơng tin đối tƣợng Do đó, có đối tƣợng khơng gian thực tốn, tƣơng ứng đối tƣợng khơng gian chƣơng trình Ví dụ đối tƣợng nhƣ sinh viên, giáo viên, môn học, lớp học, hay đối tƣợng xe máy, xe ơ-tơ, chí bánh xe, cánh quạt, Lập trình hướng đối tượng Chúng ta phân loại gồm đối tƣợng vơ hình hữu hình Trong ví dụ mơn học, lớp học đối tƣợng vơ hình, cịn sinh viên, giáo viên,… đối tƣợng hữu hình - Thuộc tính (properties): thành phần (dƣới dạng biến - variables) đối tƣợng để mô tả thông tin liệu hay trạng thái (states) đối tƣợng (Hình vẽ 1.2) Ví dụ đối tƣợng sinh viên có thuộc tính họ tên, ngàytháng-năm sinh, q qn, hay đối tƣợng mơn học có tên mơn học, số tín chỉ, điều kiện tiên quyết, - Phƣơng thức (methods): thành phần (dƣới dạng hàm) đối tƣợng để mô tả hành vi (behavior) hay khả xử lý đối tƣợng (Hình vẽ 1.2) Các phƣơng thức thực xử lý thuộc tính làm biến đối trạng thái đối tƣợng, tức làm thay đổi giá trị thuộc tính Ví dụ đối tƣợng xe ơ-tơ có phƣơng thức khởi động máy, tăng/giảm ga, chuyển số, hay đối tƣợng sinh viên có phƣơng thức nhận kiểm tra, làm kiểm tra, tham dự buổi học Hình vẽ 1.2: Đối tƣợng thành phần đối tƣợng - Thông điệp (messages): Chúng ta thấy rằng, đối tƣợng phần mềm quan hệ tƣơng tác với nhằm để thực mục tiêu toán đặt Khi đối tƣợng A muốn đối tƣợng B thực phƣơng thức B, đối tƣợng A phải gửi thông điệp tƣơng ứng đến đối tƣợng B Thực chất việc đối tƣợng A gọi thực phƣơng thức đối tƣợng B Hình vẽ 1.3 sau minh họa cho thơng điệp F(x) đƣợc gọi đối tƣợng A đến đối tƣợng B Hình vẽ 1.3: Thơng điệp từ đối tƣợng A đến đối tƣợng B Lập trình hướng đối tượng Một thông điệp gồm thành phần nhƣ sau: + Đối tƣợng (object): xác định thông điệp chuyển đến, hay địa nơi đối tƣợng đƣợc thể nhớ mà phƣơng thức đƣợc thực Hình vẽ 1.3 minh họa thơng điệp với thành phần đối tƣợng B + Tên phƣơng thức (method) cần gọi: Hình vẽ 1.3 có tên phƣơng thức “F” + Các tham số truyền cho phƣơng thức (parameters): Hình vẽ 1.3 có tham số “x” đƣợc truyền cho lời gọi phƣơng thức “F” đối tƣợng B - Lớp đối tƣợng (classes, hay gọi tắt lớp): Trong chƣơng trình hƣớng đối tƣợng, xuất nhiều đối tƣợng có kiểu (hay đặc trƣng) nhƣ hình chữ nhật, cơng nhân, Do đó, lớp đối tƣợng đƣợc xem nhƣ thiết kế chi tiết để định nghĩa thành phần (thuộc tính phƣơng thức) cho tất đối tƣợng kiểu Lớp khái niệm trừu tƣợng, đóng vai trị nhƣ mẫu cho việc tạo lập hay xây dựng (tức thể - instance) đối tƣợng chƣơng trình Hình vẽ 1.4 sau minh họa cho lớp “Dog” đối tƣợng “Rayne” “Dog” Lớp “Dog” có thuộc tính gồm Color (màu), Eye Color (màu mắt), Height (chiều cao), Length (chiều dài), Weight (cân nặng) đối tƣợng “Rayne” có giá trị thuộc tính tƣơng ứng màu xám, mắt xanh, cao 18 inc, dài 36 inc nặng 30 pound Các phƣơng thức “Dog” gồm Sit (ngồi), Lay Down (nằm xuống), Shake (lắc mình), Come (đi) Hình vẽ 1.4: Lớp “Dog” đối tƣợng “Rayne” Hình vẽ 1.5 sau minh họa cho lớp “Student” đối tƣợng sinh viên tƣơng ứng Lập trình hướng đối tượng Hình vẽ 1.5: Lớp “Student” đối tƣợng 1.2.2 Các đặc trưng lập trình hướng đối tượng Cho đến nay, nhà phát triển ứng dụng nhƣ tác giả nghiên cứu phƣơng pháp lập trình hƣớng đối tƣợng đề cập đến đặc trƣng phƣơng pháp lập trình hƣớng đối tƣợng Các vấn đề chi tiết nhƣ phƣơng pháp lập trình khai thác đặc trƣng đƣợc đề cập chƣơng sau, phần điểm qua khái niệm chúng - Tính đóng gói (incapsulation): nhƣ khái niệm đối tƣợng đƣợc đề cập, đối tƣợng bao gồm thành phần thuộc tính để mơ tả thơng và phƣơng thức thể hành vi xử lý thông tin Nhƣ vậy, đóng gói thành phần lại với nhằm phản ánh toàn nội dung đối tƣợng (minh họa Hình vẽ 1.6) Xem xét từ góc độ lập trình thấy chƣơng trình gồm biến chứa liệu, đơn vị xử lý (hàm) thao tác biến nhằm xử lý tính tốn để thực u cầu đặt tốn Vì thế, kết đóng gói từ biến hàm để hình thành lớp đối tƣợng đem lại hiệu thực chƣơng trình tốt hay khơng khác Mục tiêu đặt đóng gói cho phản ánh đƣợc nội dung thông tin hành vi xử lý thơng tin lớp đối tƣợng mà chƣơng trình cần có Hình vẽ 1.6: Minh họa đóng gói thành phần Tính đóng gói cịn làm đơn giản hóa q trình tƣơng tác xử lý đối tƣợng, che phức tạp cố hữu nội bên đối tƣợng Các đối tƣợng khác tƣơng tác xử lý thông qua giao tiếp bên ngồi mà khơng cần phải quan tâm đến phức tạp bên đối tƣợng Chẳng hạn, Lập trình hướng đối tượng máy tính cá nhân thân bên chứa phận chi tiết, vi mạch phức tạp nhƣng sử dụng cần vài thao tác bấm nút tƣơng tác với Hình vẽ 1.6: Đóng gói nhằm che chi tiết phức tạp bên - Tính che dấu thơng tin (data-hiding): thành phần sau đƣợc đóng gói thiết lập chế khả truy xuất xử lý đến thành phần hay đƣợc gọi phạm vi tác động (scope) Rõ ràng, tính chất có đƣợc nhờ đóng gói (Hình vẽ 1.8) Hình vẽ 1.8: Minh họa chế che dấu thơng tin - Tính kế thừa (inheritance): khái niệm quan trọng lập trình hƣớng đối tƣợng Thực tế, đối tƣợng khơng hồn tồn tách rời mà chúng có quan hệ định Chẳng hạn, mèo chó có chung số đặc điểm chúng đƣợc gọi vật nuôi, hay sinh viên giáo viên có đặc điểm chung ngƣời Nhƣ vậy, lớp đối tƣợng có chung số đặc điểm đƣợc xem nhƣ có quan hệ “là” (is a) với lớp đối tƣợng khác nói có kế thừa chúng Hình vẽ 1.9: Minh họa kế thừa lớp đối tƣợng Lập trình hướng đối tượng Trong Hình vẽ 1.9, đối tƣợng “oHuman” “oPet” kế thừa đặc điểm từ “oAnimal” tức chúng có não (brain = true) có chân, nhƣng số chân “oHuman” “oPet” khác nhau, tƣơng tự “oDog” “oCat” với “oPet” - Tính đa hình (polymorphism): khái niệm phức tạp lập trình hƣớng đối tƣợng, cho phép nhiều đối tƣợng xử lý, phản hồi cho thông điệp Một khía cạnh khác, đa hình tức đối nhƣng đƣợc khai thác, xử lý dƣới nhiều hình thức khác Tính đa hình đƣợc gắn liền với ngữ cảnh chƣơng trình, ngữ cảnh cho hình thức khai thác, xử lý cụ thể phù hợp Chẳng hạn, Hình vẽ 1.9 cho thấy mèo xem nhƣ vật nuôi, động vật, phụ thuộc vào ngữ cảnh khai thác Bốn tính chất phƣơng pháp lập trình hƣớng đối tƣợng tính chất đặc trƣng, vấn đề kỹ thuật phƣơng pháp sử dụng, khai thác tính chất đƣợc trình bày kỹ chƣơng Phần sau xem xét ngơn ngữ lập trình hƣớng đối tƣợng 1.3 Ngơn ngữ lập trình hướng đối tượng 1.3.1 Sự phát triển ngơn ngữ lập trình hướng đối tượng Về bản, ngơn ngữ lập trình đƣợc gọi hƣớng đối tƣợng cung cấp đủ đặc trƣng xem xét trên: tính đóng gói, tính che dấu thơng tin, tính kế thừa tính đa hình Ngơn ngữ lập trình hƣớng đối tƣợng đƣợc phát triển với hình thành phát triển phƣơng pháp lập trình hƣớng đối tƣợng (Hình vẽ 1.10) Phƣơng pháp đƣợc khởi xƣớng vào năm 1960 Na-uy, sau đƣợc nhà nghiên cứu, ứng dụng phát triển mạnh mẽ Có thể xem ngôn ngữ Simula Christian Nygaard cộng đại học Oslo ngôn ngữ hỗ trợ hƣớng đối tƣợng Sau năm 1970 1980 phát triển ngôn ngữ Smalltalk, Eiffel C++ Ngôn ngữ Java đƣợc xây dựng phát triển James Gosling cộng hãng Sun Microsystems, trở nên phổ biến vào cuối năm 1990 Khác với C++ có kết hợp lập trình cấu trúc hƣớng đối tƣợng, Java ngôn ngữ hƣớng đối tƣợng, tức thành phần chƣơng trình phải đƣợc đóng gói thành lớp đối tƣợng, hành động (actions) đƣợc thực đối tƣợng lớp Đặc điểm thứ hai Java khác C++ đối tƣợng khơng cần đến việc giải phóng nhớ sau khai thác xử lý xong ngƣời lập trình chế tự động “thu gom rác” (garbage collection) đƣợc cung cấp sẵn Java, điều giống với ngôn ngữ Smalltalk Eiffel 10 Lập trình hướng đối tượng 180 @Override 181 public void run()// cho phép ngƣời dùng nhập tin nhắn kết nối 182 { 183 enterField.setEditable(editable); 184 } // kết thúc phƣơng thức run 185 } // kết thúc lớp lớp 186 ); // kết thúc lời gọi tới SwingUtilities.invokeLater 187 } // kết thúc phƣơng thức setTextFieldEditable 188 } // kết thúc lớp Client Ví dụ: Lớp kiểm tra Client 10 11 12 13 14 15 16 17 18 19 20 // ClientTest.java // Test ứng dụng Client import javax.swing.JFrame; public class ClientTest { public static void main(String args[]) { Client application; // khai báo ứng dụng client // không đặt địa IP server if (args.length == 0) application = new Client("127.0.0.1"); // kết nối tới localhost else application = new Client(args[0]); // sử dụng IP để kết nối application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); application.runClient(); // chạy ứng dụng Client } // kết thúc hàm main } // kết thúc lớp ClientTest Kết quả: 187 Lập trình hướng đối tượng Client phƣơng thức runClient (các dòng từ 59 đến 79) cài đặt kết nối tới server, xử lý tin nhắn từ server ngắt kết nối hội thoại kết thúc Dòng 63 gọi phƣơng thức connectToServer (đƣợc khai báo dòng từ 95 đến 105) nhận tham chiếu tới đối tƣợng stream ứng với socket Sau đó, dịng 65 gọi phƣơng thức processConnection (khai báo từ dòng 108 đến 126) để nhận hiển thị tin nhắn đƣợc gửi đến từ server Khối finally (tại dòng 75 đến 78) gọi tới closeConnection (các dòng từ 129 đến 144) để đóng stream socket chí trƣờng hợp có lỗi xảy Phƣơng thức displayMessage (từ dòng 162 đến 173) đƣợc gọi phƣơng thức sử dụng “event-dispatch thread” để hiển thị tin nhắn cửa sổ ứng dụng Phƣơng thức connectToServer (các dòng từ 82 đến 92) khởi tạo socket gọi client (dịng 87) từ tạo lập kết nối Phƣơng thức truyền tham đối tới hàm khởi tạo socket gồm địa IP máy chủ cổng port (12345) mà ứng dụng server đợi yêu cầu kết nối Đối với tham đối đầu tiên, InetAddress static phƣơng thức getByName trả đối tƣợng InetAddress chứa địa IP đƣợc xác định ngƣời dùng thông qua tham đối truyền vào ứng dụng- “args” (hoặc mặc định 127.0.0.1) Phƣơng thức getByName nhận chuỗi đại diện cho địa IP thực host name server Tham đối thứ đƣợc thể dƣới cách viết khác Ví dụ localhost – 127.0.0.1, viết nhƣ sau: InetAddress.getByName( "localhost" ) Hoặc InetAddress getLocalHost() 188 Lập trình hướng đối tượng Ở đây, lựa chọn chạy ứng dụng máy (localhost) với mục đích testing Thơng thƣờng, tham đối thứ địa IP máy tính khác Khi ta dùng phƣơng thức getByName để lấy đối tƣợng InetAddress với tham đối địa IP host name máy tính Tham đối thứ hàm khởi tạo socket cổng port Port phải hoàn toàn trùng khớp với với cổng port mà server đợi yêu cầu kết nối (đƣợc gọi handshake point) Một kết nối đƣợc thiết lập, dòng 90, 91 hiển thị tin nhắn cho ta biết tên máy chủ mà máy khách kết nối tới Tƣơng tự nhƣ lớp Server Vòng lặp phƣơng thức processConnection (từ dòng 108 đến 126) thực thi nhận đƣợc tin nhắn “SERVER>>> TERMINATE” Dòng 117 đọc chuỗi tin nhắn gửi đến từ server dòng 118 gọi phƣơng thức displayMessage hiển thị tin nhắn cửa sổ ứng dụng Sau đối thoại hồn thành, phƣơng thức closeConnection (từ dịng 129 đến 144) đóng stream socket Khi ngƣời sử dụng ứng dụng client nhập vào tin nhắn nhấn Enter, chƣơng trình gọi phƣơng thức actionPerformed (các dịng 41 đến 45) đọc chuỗi nhập vào gửi tới server thông qua lời gọi phƣơng thức sendData (dòng 147 đến 159) Phƣơng thức sendData tạo đối tƣợng truyền output buffer đồng thời hiển thị chuỗi tin nhắn cửa sổ client Một lần nữa, không cần thiết phải gọi phƣơng thức displayMessage để thay đổi khung hiển thị đây, phƣơng thức sendData đƣợc gọi từ hàm xử lý kiện Bài tập 7.1 Xây dựng chƣơng trình sử dụng phƣơng thức getByname để tạo mọt InetAddress Bài tập 7.2 Xây dựng chƣơng trình lấy tên máy biết địa IP nó, cách sử dụng phƣơng thức getHostName Bài tập 7.3 Xây dựng chƣơng trình HostLookUp tƣơng tự nhƣ chƣơng trình NSLookUp Window, chƣơng trình có nhiệm vụ khị bạn gõ vào IP trả tên miền ngƣợc lại Bài tập 7.4 Xây dựng chƣơng trình tạo URL kiểm tra xem giao thức tƣơng ứng với URL có đƣợc hỗ trợ virtual machine bạn hay không? 189 Lập trình hướng đối tượng Bài tập 7.5 Xây dựng chƣơng trình ứng dụng chat hai máy tính Bài tập 7.6 Xây dựng chƣơng trình truyền nhận file hai máy tính 7.5 Lập trình ứng dụng Applet 7.5.1 Hai loại ứng dụng Java Applet Chƣơng trình Java chạy mộttrangweb nhờ vào trình duyệt hỗ trợ Java Stand-alone Application Giao diện dòng lệnh (console): Tƣơng tác với ngƣời dùng thơng qua dịng ký tự Giao diện đồ hoạ (GUI): Tƣơng tác với ngƣời dùng nhiều cách khác nhƣ hình ảnh, nút nhấn, biểu tƣợng…việc xử lý ứng dụng dựa kiện 7.5.2 Xây dựng applet LớpApplet Java có lớp java.applet.Applet kế thừa từ lớp java.awt.Component cho phép tạo applet Web 190 Lập trình hướng đối tượng Mọi lớp applet ngƣời dùng tạo phải kế thừa từ lớp Applet Ví dụ 1: Tạo file chuongtrinhapplet.java import java.applet.Applet; import java.awt.Graphics; public class chuongtrinhapplet1 extends Applet { public void paint(Graphics g) { g.drawString("Khoa CNTT-VDHM-HN", 24, 48); } } Dịch: javac chuongtrinhapplet.java Thực thi applet Tạo file thuapplet.html nhƣ sau: