Kỹ thuật lập trình hướng đối tượng với ngôn ngữ java

290 104 0
Kỹ thuật lập trình hướng đối tượng với ngôn ngữ java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

VIỆN ĐẠI HỌC MỞ HÀ NỘI ! ! ! ! ! ! ! ! ! ! ! ! KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA TS DƯƠNG THĂNG LONG (Chủ biên) ThS PHẠM CƠNG HỊA ! ! ! ! ! HÀ NỘI, 2017 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA 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 ban đầu với phương pháp lập trình đến phương phá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 hay thủ tục) dựa chức cần giải quyết, đơn vị xử lý liệu mà cần tổ chức tách rời liệu Chúng ta quen với phương pháp lập trình thơng qua ngơn ngữ 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 Các lớp đối tượng mơ tả thực thể toán cách chân thực, đầy đủ phần liệu phần xử lý, tính tốn Hiện nay, hầu hết ngôn ngữ với môi trường lập trình đại cung cấp phương pháp lập trình hướng đối tượng Vì 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, yêu thích lập trình Ngơn ngữ lập trình Java nhà nghiên cứu hãng Sun MicroSystem giới thiệu vào năm 1995 Sau đời không lâu, ngôn ngữ lập trình sử dụng rộng rãi phổ biến lập trình viên chuyên nghiệp nhà phát triển phần mềm Gần ngơn ngữ lập trình Java với cơng nghệ phát triển DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA đưa vào giảng dạy sở đào tạo Một số trường đại học Việt Nam giảng dạy mơn lập trình Java chuyên đề 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 tài liệu 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 tiếp cập dễ dàng Qua đó, làm quen với 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 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, đề cập số ngơn 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ý toán học, xâu ký tự,… Chương trình bày khái niệm trung tâm lập trình hướng đối tượng đối tượng, lớp, thuộc tính, phương thức, thơng điệp,… Nêu phương pháp định nghĩa lớp, xử lý đối tượng lớp, kỹ thuật lập trình xử lý lớp đối tượng Chương trình bày vấn đề đặc biệt quan tâm việc lập trình xử lý đối tượng, vấn đề xây dựng lớp nạp chồng, tham chiếu thành viên, lớp con, Chương đề cập vấn đề quan trọng tạo nên sức 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 nêu chương Chương trình bày số vấn đề tương đối khó lại hữu ích đem lại ý nghĩa to lớn phương pháp hướng đối tượng DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA chế ảo trừu tượng Các kỹ thuật lập trình xử lý liên quan đến chế nêu chi tiết chương Chương nêu kỹ thuật lập trình mở rộng nâng cao cung cấp Java kỹ thuật đa luồng, kỹ thuật giao diện lớp, lớp khung hay giới thiệu phương pháp lập trình giao diện người dùng đồ họa, hướng giao tiếp với mạng Để đọc hiểu tài liệu 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ố gắng để hoàn thiện tài liệu cách tốt nhất, nhiên q trình biên soạn khơng thể tránh khỏi sai sót Chúng tơi mong nhận góp ý quý vị độc giả qua địa email: duongthanglong@hou.edu.vn Xin chân thành cảm ơn! Hà Nội, ngày 19 tháng năm 2017 Nhóm tác giả DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 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, 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 tốn theo 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 để đạt toán đơn giản triển khai lập trình dễ dàng Q trình gọi phân tích tốn từ xuống “topdown” Phương pháp dựa ngôn ngữ mô tả tốn, chủ yếu phải tìm “động từ” để hình thành chức cần giải q trình phân tích Mỗi tốn thu phương pháp lập trình để thực dạng đơn vị chương trình (còn gọi hàm hay thủ tục), để giải tốn lớn có nhiều đơn vị chương trình hệ thống chương trình Khác với lập trình cấu trúc, phương pháp lập trình hướng đối tượng cách tiếp cận giải toán dựa đối tượng tham gia tốn 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 toán Theo cách đòi hỏi phải áp dụng phương pháp phân tích thiết kế tốn theo hướng đối DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA tượng, tức từ 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 sau Để minh họa, xem xét toán quản lý sinh viên chẳng hạ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ã toán cần làm thành cơng việc (hay chức năng) nhỏ, phía lập trình xây dựng đơn vị (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 tố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, đối tượng lớp học,… Trong đó, loại có nhiều đối tượng khác 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 DƯƠNG THĂNG LONG, PHẠM CÔNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA 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 tố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 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 phần mềm Ví dụ đối tượng 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, ngơi nhà… 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 a) Thuộc tính Thuộc tính (properties) thành phần (dưới dạng biến variables) đối tượng để chứa liệu mô tả thông tin 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ày-thá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, DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA b) Phương thức Phương thức (methods) thành phần (dưới dạng hàm xử lý) đố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ẽ sau minh hoạ đối tượng thành phần đối tượng c) Thông điệp (message) 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) gọi đối tượng A đến đối tượng B Hình vẽ sau minh hoạ thông điệp từ đối tượng A đến đối tượng B DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA Một thông điệp gồm thành phần sau: + Đối tượng (object): xác định thông điệp chuyển đến, hay địa nơi đối tượng thể nhớ mà phương thứ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” truyền cho lời gọi phương thức “F” đối tượng B d) Lớp đối tượng Lớp đối tượng (class, 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) hình chữ nhật, cơng nhân, Do đó, lớp đối tượng xem 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 DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA Lớp khái niệm trừu tượng, đóng vai trị 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ẽ sau minh hoạ lớp “Dog” đối tượng “Rayne” Hình vẽ sau minh hoạ lớp “Student” đối tượng DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 10 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA Trong đó, chuỗi ký tự biểu thị tên phông chữ cài đặt hệ thống, ví dụ “Time New Roman”, sử dụng định nghĩa lớp ‘Font’ gồm Font.{ BOLD, ITALIC, PLAIN, ) giá trị số nguyên Đối tượng lớp ‘Font’ dùng phương thức quy định chữ đồ hoạ hiển thị đối tượng GUI Lệnh thường dùng là, *.setFont( ); Sau ví dụ sử dụng lớp đối tượng ‘Font’ để quy định chữ hiển thị đối tượng giao diện đồ hoạ (GUI) import java.applet.Applet; import java.awt.*; public class xulyfont extends Applet { public void paint(Graphics g) { Font font = new Font("Arial", Font.BOLD, 15); g.setFont(font); g.drawString("Dang ap dung phong Arial, Dam, kich thuoc 30", 50, 50); } } Kết chương trình là, DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 276 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 7.6 Bài tập cuối chương Bài tập 7.1) Lập trình tạo cửa sổ, có để nhập tên máy chủ nút lệnh để thực kết nối Nút lệnh kết nối phải chuyển đổi trạng thái (bằng văn hiển thị) xử lý để ngắt kết nối kết nối thành cơng Tiếp theo có để nhập văn thông điệp muốn gửi Mỗi lần muốn gửi nhập xong nhấn phím Enter Cuối cửa sổ hình hiển thị tồn nội dung gửi nhận trình trao đổi DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 277 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA Mô tả yêu cầu mô hình vẽ sau: Chương trình tổ chức gồm có lớp ‘Vidu_7x4’ kế thừa ‘JFrame’ để tạo cửa sổ, thực thi giao diện xử lý nút lệnh ‘ActionListener’ Trong lớp có hai lớp (inner class) gồm lớp ‘SServer’ để xử lý kết nối trao đổi liệu cho phía máy chủ, lớp ‘SClient’ để xử lý kết nối trao đổi liệu cho phía máy trạm Cả hai lớp kế thừa Thread để thực đa luồng, không ảnh hưởng đến luồng giao diện Chương trình, theo nội dung bên dưới, thiết kế chạy cho phía server phía client thể qua biến ‘isServer’ (dịng 11, 24) Theo đó, hoạt động phía server đối tượng ServerSocket (biến ‘ss’, dịng 12) thiết lập để quản lý kết nối từ phía server Đối tượng tạo lần (dịng 42) q trình chạy dùng nhiều lần để chờ chấp nhận yêu cầu kết nối (dịng 95) từ phía client DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 278 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA Lớp ‘SServer’ (từ dịng 76 đến 114) để thực kết nối trao đổi liệu từ phía server, có hàm ‘send’ (dịng 80-89) để gửi thông điệp đến client dựa đối tượng DataOutputStream (gói đối tượng OutputStream, dịng 101) lấy từ kết nối đối tượng ServerSocket Hàm gọi từ kiện chương trình Cịn hàm ‘run’ chạy đa luồng (dòng 90-113) dùng để chờ chấp nhận kết nối từ phía client, kết nối thiết lập trả đối tượng Socket (dịng 95) sau hai dịng nhập/xuất liệu để phục vụ cho gửi nhận thông điệp thiết lập (dòng 100-101) Việc chờ tiếp nhận yêu cầu kết nối từ client thực vòng lặp để đảm bảo thời gian trễ (timeout) thiết lập mà khơng có u cầu kết nối lặp lại đạt Tức là, trường hợp khơng có u cầu từ client để kết nối lặp vơ tận huỷ kết nối (biến isConnecting có giá trị ‘false’, dịng 93) Trong hàm ‘run’ cần thiết lập chế vòng lặp để sẵn sàng chờ liệu gửi đến tiếp nhận để hiển thị lên hình (dịng 104-107) Tương tự, lớp ‘SClient’ (dòng 117-147) xử lý kết nối trao đổi liệu từ phía client Lớp có hàm ‘send’ hàm ‘run’ Tuy nhiên, hàm ‘run’ chạy đa luồng có khác đơi chút, cần tạo yêu cầu kết nối đến server đối tượng Socket (dịng 133) sau tạo hai đối tượng nhập/xuất liệu để trao đổi (dòng 134-135) Q trình chờ tiếp nhận thơng điệp gửi đến từ phía server thực chế lặp (dịng 138-141) Mỗi thơng điệp nhận (kể server hay client) hiển thị lên hình đối tượng ‘tContent’ (‘JTextArea’ , dòng 18, 107, 140) Trong chương trình sử dụng biến ‘isConnecting’ để xác định xem trạng chương trình trạng thái có thiết lập kết nối hay khơng Biến xác lập thay đổi hàm xử lý kiện nút lệnh ‘bConnect’ (hàm ‘actionPerformed’, dòng 59-73) hình DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 279 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA Biến dùng để biết trạng thái xử lý kết nối trao đổi liệu sau (dòng 82, 93, 104, 123, 138) Trong hàm ‘actionPerformed’ này, tuỳ theo kiểu chạy chương trình server hay client, tạo đối tượng ‘SServer’ (dịng 62) hay ‘SClient’ (dòng 65) tương ứng thực thi luồng lệnh ‘*.start()’ (dịng 63, 66) Trong chương trình thiết kế lớp ‘PTextField’ kế thừa từ ‘JTextField’ (dòng 156-184) để xử lý vấn đề hiển thị chữ hướng dẫn nhập liệu đối tượng Theo đó, nhập trống hiển thị dòng chữ hướng dẫn (hàm kiện ‘focusLost’, dòng 165170), nhập liệu xố bỏ dịng chữ hướng dẫn (hàm kiện ‘focusGained’, dòng 172-177) Sau tồn mã lệnh chương trình mô tả để thực yêu cầu đặt import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class Vidu_7x4 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; 10 String 11 boolean 12 ServerSocket ss; 13 final sb1 = "Kết nối", sb2 = "Huỷ"; isServer, isConnecting = false; int port = 6789; DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 280 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 14 JTextField tHost = new PTextField("Tên máy chủ",20); 15 JButton bConnect = new JButton(sb1); 16 JTextField tMessage = new PTextField("Nhập văn 17 Enter để gửi",40); 18 JTextArea 19 JScrollPane sPane = new JScrollPane(tContent); tContent = new JTextArea(15,40); 20 21 public Vidu_7x4( boolean isServer ) { 22 super("Gửi nhận thông điệp - " + 23 (isServer?"SERVER":"CLIENT")); 24 this.isServer = isServer; 25 Container c = getContentPane(); 26 c.setLayout(new GridBagLayout()); 27 GridBagConstraints g = new GridBagConstraints(); 28 g.gridx = 0; g.gridy = 0; g.gridwidth = 4; 29 c.add(tHost,g); tHost.setText("localhost"); 30 g.gridx = 4; g.gridy = 0; g.gridwidth = 1; 31 c.add(bConnect,g); 32 g.gridx = 0; g.gridy = 1; g.gridwidth = 5; 33 c.add(tMessage,g); 34 g.gridx = 0; g.gridy = 2; g.gridwidth = 5; 35 c.add(sPane,g); bConnect.addActionListener(this); 36 pack(); DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 281 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA 37 setDefaultCloseOperation(EXIT_ON_CLOSE); 38 setVisible(true); 39 if(isServer){ 40 tHost.setEnabled(false); 41 try{ 42 ss = new ServerSocket(port); 43 ss.setSoTimeout(15000); 44 }catch(Exception e){ 45 46 e.printStackTrace(); } 47 } 48 tMessage.addKeyListener(new KeyAdapter() { 49 public void keyReleased( KeyEvent e ){ 50 if(e.getKeyCode()==KeyEvent.VK_ENTER){ 51 if(isServer) tServer.send(tMessage.getText()); 52 else tClient.send(tMessage.getText()); 53 tMessage.setText(""); 54 55 56 } } }); 57 } //kết thúc hàm khởi tạo lớp ‘Vidu_7x4’ 58 ///////////////////////////////////////////// 59 public void actionPerformed( ActionEvent e ){ 60 if(bConnect.getText().equals(sb1)){ DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 282 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 61 if(isServer){ 62 tServer = new SServer(); 63 tServer.start(); 64 } else { 65 tClient = new SClient(); 66 tClient.start(); 67 } 68 bConnect.setText(sb2); 69 }else{ 70 isConnecting = false; 71 bConnect.setText(sb1); 72 } 73 } //kết thúc hàm ‘actionPerformed’ 74 ///////////////////////////////////////////// 75 SServer tServer; 76 class SServer extends Thread{ 77 DataOutputStream dos; 78 DataInputStream dis; 79 Socket sk; 80 public void send(String s){ 81 82 try{ if(isConnecting && dos!=null){ 83 dos.writeUTF(s); 84 tContent.insert("Sent: "+s+"\n",0); DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 283 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 85 86 } }catch(Exception e){ 87 88 e.printStackTrace(); } 89 } 90 public void run(){ 91 try{ 92 isConnecting = true; 93 while(isConnecting && sk==null){ 94 try{ 95 sk = ss.accept(); 96 }catch( Exception e ){ 97 System.out.println("S:"+e.getMessage()); 98 99 } } 100 dis = new DataInputStream(sk.getInputStream()); 101 dos = new DataOutputStream(sk.getOutputStream()); 102 send("Connected !"); 103 String msg; 104 while(isConnecting){ 105 msg = dis.readUTF(); 106 if(msg!=null) 107 tContent.insert("Received: "+msg+"\n",0); } DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 284 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 108 109 sk.close(); }catch(Exception e){ 110 System.out.println("S:"+e.getMessage()); 111 } 112 sk=null; dos=null; dis=null; 113 } 114 } //kết thúc lớp SServer 115 ///////////////////////////////////////////// 116 SClient tClient; 117 class SClient extends Thread{ 118 DataOutputStream dos; 119 DataInputStream dis; 120 Socket sk; 121 public void send(String s){ 122 try{ 123 if(isConnecting && dos!=null){ 124 dos.writeUTF(s); 125 tContent.insert("Sent: "+s+"\n",0); 126 127 } }catch(Exception e){ 128 129 e.printStackTrace(); } 130 } 131 public void run(){ DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 285 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 132 try{ 133 sk = new Socket(tHost.getText(),port); 134 dis = new DataInputStream(sk.getInputStream()); 135 dos = new DataOutputStream(sk.getOutputStream()); 136 send("Connected !"); 137 isConnecting = true; 138 while(isConnecting){ 139 String s = dis.readUTF(); 140 if(s!=null) tContent.insert("Received: "+s+"\n",0); 141 } 142 sk.close(); 143 }catch( Exception e ){ 144 145 System.out.println("C:"+e.getMessage()); } 146 } 147 } //kết thúc lớp SClient 148 ///////////////////////////////////////////// 149 public static void main(String[] args) { 150 new Vidu_7x4(true); 151 new Vidu_7x4(false); 152 153 } } //kết thúc lớp Vidu_7x4 154 155 ///////////* LỚP XỬ LÝ Ô NHẬP VĂN *////////// DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 286 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA 156 class PTextField extends JTextField { 157 private static final long serialVersionUID = 1L; 158 public PTextField(final String proptText, int size) { 159 super(size); 160 setText(proptText); 161 setForeground(Color.gray); 162 163 addFocusListener(new FocusListener() { 164 @Override 165 public void focusLost(FocusEvent e) { 166 if(getText().isEmpty()) { 167 setText(proptText); 168 setForeground(Color.gray); 169 } 170 } 171 @Override 172 public void focusGained(FocusEvent e) { 173 if(getText().equals(proptText)) { 174 setText(""); 175 setForeground(Color.black); 176 } 177 } 178 }); 179 } DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 287 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 180 public void setText(String t){ 181 super.setText(t); 182 setForeground(Color.black); 183 184 } } //kết thúc lớp PTextField Hàm chương trình tạo hai đối tượng ‘Vidu_7x4’ theo hai trường hợp chạy phía server client (dịng 150, 151) Kết chạy có hai cửa sổ tương ứng sau Sau chọn nút lệnh ‘Kết nối’ (tất nhiên chuyển trạng thái sang ‘Huỷ) nhập liệu văn vào ô text bên nhấn phím Enter để gửi Hoạt động xử lý hàm ‘keyReleased’ (dòng 49-54) qua việc đăng ký đối tượng xử lý kiện phím (dịng 48) đối tượng ‘tMessage’ DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 288 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA Một số dịng chữ nhập gửi từ hai phía phía cịn lại nhận (sau kết nối) Trên hình thấy dịng chữ có tiền tố ‘Sent’ văn gửi đi, dòng chữ có tiền tố ‘Received’ văn nhận Bài tập 7.2) Xây dựng chương trình có giao diện GUI cho phép nhập vào số nguyên a b Xây dựng phép tính cộng, trừ, nhân, chia Bài tập 7.3) Xây dựng chương trình Applet cho phép nhập vào ba số thực Kiểm tra xem ba số có tạo thành ba cạnh tam giác hay khơng? Nếu có, tính diện tích chu vi tam giác Bài tập 7.4) Xây dựng chương trình giải phương trình bậc hai Applet Bài tập 7.5) Xây dựng chương trình dạng Applet để mơ sách có nội dung tuỳ ý cho phép lật trang để xem Bài tập 7.6) Xây dựng ứng dụng có giao diện GUI để mơ thuật toán xếp chọn (Selection Sort Bubble Sort) Bài tập 7.7) 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 DƯƠNG THĂNG LONG, PHẠM CÔNG HỊA 289 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA Bài tập 7.8) Xây dựng chương trình HostLookUp tương tự 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.9) 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ó hỗ trợ virtual machine bạn hay khơng? Bài tập 7.10) Xây dựng chương trình truyền nhận tệp tin hai máy tính mạng DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 290 ... TƯỢNG VỚI NGƠN NGỮ JAVA 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. .. “Dog” đối tượng “Rayne” Hình vẽ sau minh hoạ lớp “Student” đối tượng DƯƠNG THĂNG LONG, PHẠM CƠNG HỊA 10 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGÔN NGỮ JAVA 1.2.2 Các đặc trưng lập trình hướng đối. .. PHẠM CƠNG HỊA 17 KỸ THUẬT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI NGƠN NGỮ JAVA 1.3.3 Các thành phần ngôn ngữ Java Khác với C/C++ có cung cấp chế nhớ tĩnh nhớ động, Java ngôn ngữ lập trình cung cấp chế

Ngày đăng: 23/08/2020, 22:56

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan