1. Trang chủ
  2. » Thể loại khác

Kỹ thuật lập trình

66 8 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 1,47 MB

Nội dung

BỘ MƠN DUYỆT Chủ nhiệm Bộ mơn Phan Ngun Hải ĐỀ CƯƠNG CHI TIẾT BÀI GIẢNG (Dùng cho tiết giảng) Học phần: Lập trình Java Nhóm mơn học: Kỹ thuật lập trình Bộ mơn: Cơng nghệ phần mềm Khoa (Viện): Cơng nghệ thơng tin Thay mặt nhóm mơn học Phạm Văn Việt Thơng tin nhóm mơn học STT Họ tên Phan Nguyên Hải Phạm Văn Việt Hồ Nhật Quang Nguyễn Thị Hiền Phạm Thị Bích Vân Trần Hữu Phi Học hàm GVC GV GV GVC TG TG Học vị TS TS ThS ThS KS KS Địa điểm làm việc: Bộ môn Công nghệ phần mềm – Khoa Công nghệ thông tin Điện thoại, email: Bài giảng 1: Giới thiệu ngơn ngữ lập trình Java Chương I Mục + + + Tiết thứ: – Tuần thứ: - Mục đích, yêu cầu:  Giới thiệu sơ lược lập trình hướng đối tượng (OOP – Object Oriented Programming), tổng quan ngơn ngữ lập trình Java, đặc điểm ngôn ngữ nội dung ngơn ngữ lập trình Java  Sau học sinh viên phân biệt lập trình hướng đối tượng lập trình hướng cấu trúc, nắm đặc điểm Java, yêu cầu cần thiết để triển khai, xây dựng ứng dụng Java, biết cách xây dựng ứng dụng đơn giản - Hình thức tổ chức dạy học: Lý thuyết, tự học, tự nghiên cứu - Thời gian: Lý thuyết: 3t; Tự học, tự nghiên cứu: 6t - Địa điểm: Theo bố trí P2 - Nội dung chính: Nội dung chi tiết: - Giới thiệu lập trình hướng đối tượng:  Đa hình (polymorphism)  Kế thừa (inheritance)  Trừu tượng (abstraction)  Lớp (classes)  Đối tượng (Object)  Thể (Instance)  Phương thức (method)  Đóng gói (Encapsulation) - Giới thiệu ngôn ngữ Java:  Lịch sử đời: Ra đời đầu năm 90, hãng Sun Microsystems phát triển với tác giả James Gosling, Java kế thừa từ C++ Mục đích Java để phát triển ứng dụng cho thiết bị điện tử thơng minh, để tạo trang web có nội dung động (applet) Hiện Java sử dụng để phát triển nhiều loại ứng dụng khác sở liệu, mạng, Internet, games, viễn thông…  Các đặc tính Java:  Đơn giản  Khả chuyển  Hướng đối tượng  Phân tán  Đa luồng  An tồn  Biên dịch thơng dịch  Giải phóng nhớ tự động  Cơng nghệ Java:  Ngơn ngữ lập trình  Ngơn ngữ phát triển  Môi trường thực thi triển khai Các dạng công nghệ Java cụ thể:  Desktop application – J2SE: Java application, Java Applet  Server applivation – J2EE  Mobile (enbedded) application – J2ME  Các dạng ứng dụng Java: - - - - - -  ứng dụng độc lập (console applivation)  ứng dụng Apples  ứng dụng giao diện (GUI application)  ứng dụng Web (Servlet JSP)  Ứng dụng nhúng (embedded application)  ứng dụng sở liệu (database application)  games JDK – JAVA DEVELOPMENT KIT: Bộ công cụ phát triển ứng dụng Java bao gồm thành phần: Classes, Compiler, Debugger, Java Runtime Environment JVM – JAVA VIRTUAL MACHINE:  JVM phần mềm dựa sở máy tính ảo JVM xem hệ điều hành thu nhỏ  Máy ảo phụ thuộc vào Platform (Phần cứng, OS), cung cấp mơi trường thực thi cho Java (Độc lập với platform)  Nó thiết lập cho mã Java biên dịch có nhìn suốt (Trasparence) phần cứng bên JAVA IDE – INTEGRATED DEVELOPMENT ENVIRONMENT:  JCreator  NetBeans  Eclipse  EditPlus  Borland Jbuilder  Java Studio Sun  … Các phần mềm cần cài đặt cho lập trình Java:  Java Stander Development Kit (JDK)  NetBeans IDE Kiến trúc chương trình Java, Java Platfrom:  Java Virtual Machine (Java VM)  Java Application Programming Interface (Java API) Các gói chuẩn Java:  Java.lang  Java.applet  Java.awt  Java.io  Java.util  Java.net  Java.awt.event  Java.rmi  Java.security  Java.sql - Các bước phát triển chương trình Java: Biên dịch, thơng dịch - Cấu trúc chương trình Java đơn giản: Cách đặt tên file, tên class, dấu thích, khai báo class, phương thức main(), đặc điểm lệnh, public, static, void, ví dụ nhập liệu từ bàn phím, xuất liệu hình, biên dịch thực thi chương trình - Các từ khóa (keyword):  Từ khóa cho kiểu liệu bản: Byte, Short, int, long, float, double, char, Boolean  Từ khó cho phát biểu lặp: do, while, for, break, continue  Từ khóa cho phát biểu rẽ nhánh: if, else, switch, case, default, break  Từ khóa đặc tả đặc tính method: private, public, protected, final, static, abstract, synchronized  Hằng (literal): true, false, null  Từ khóa liên quan đến method: return, void  Từ khoá liên quan đến package: package, import  Từ khóa cho việc quản lý lỗi: try, catch, finally, throw, throws  Từ khóa liên quan đến đối tượng: new, extends, implements, class, instanceof, this, super - Cách đặt tên biến, hằng: - Các kiểu liệu: kiểu sở, kiểu tham chiếu - Các toán tử: toán tử số học, toán tử quan hệ logic, toán tử gán, toán tử điều kiện, độ ưu tiên tốn tử, ví dụ - Các cấu trúc điều khiển Java: cấu trúc rẽ nhanh (if, if else, switch case), cấu trúc lặp (for, while, while), lệnh break, ví dụ - Mảng xâu ký tự: cách khai báo mảng, khởi tạo mảng, cấp nhớ cho mảng, truy cập mảng, mảng nhiều chiều, mảng gồ ghề, ví dụ; xâu kí tự (String, StringBuffer, StringTokenizer), ví dụ - Một số lớp bản, tiện ích: lớp bao (Integer, Long, Double…), lớp toán học Math, lớp để làm việc với thời gian (Date, Calendar, SimpleDataFormat), lớp biểu thức quy RegularExpression, ví dụ Nội dung thảo luận: Lập trình hướng đối tượng, biên dịch thông dịch, độc lập với platform Java, máy ảo; gói Java Nội dung tự học: Cài đặt JDK, NetBeans Bài tập: Bài Nhập dãy có n số thực, xác định trật tự dãy (tăng, giảm hay khơng có thứ tự) Bài Nhập n, in n số fibonaci Bài Nhập số n, in số nguyên tố n Bài Viết chương trình nhập dãy số nguyên dương từ bàn phím, nhập số âm kết thúc nhập, tìm giá trị lớn số phần tử giá trị lớn Bài Viết chương trình nhập số n, tìm in số nguyên tố thuộc n Bài Kiểm tra số có phải số fibonaci hay không Bài Kiểm tra số có phải số hồn chỉnh hay khơng Bài Tính sin(x) theo cơng thức khai triển Taylor với độ xác cho trước Bài Cho dãy số tự nhiên, tìm số tự nhiên c nhỏ mà không số dãy Bài 10 Cho dãy số nguyên Hãy tìm dãy liên tục đơn điệu tăng dài dãy - Yêu cầu SV chuẩn bị:  Đọc trước nhà  Xem trước nội dung tập chương I  Trước tập, thực hành chuẩn bị trước nội dung chu đáo - Ghi chú: Tài liệu tham khảo: [1] Java Tập Phương Lan, Lao động – Xã hội, 2006 [2] Java Tập Phương Lan, Lao động – Xã hội, 2006 [3] Java All-In-One Desk Reference For Dummies, 2nd Edition; Doug LoweandBarry Burd; John Wiley & Sons; 2007 [4] Java™ How to Program, Sixth Edition; H M Deitel - Deitel, P J Deitel; Prentice Hall; 2004 [5] Object Oriented With Java Kenneth A Lambert, Martin Oshorne, Prentice Hall, 2003 Câu hỏi ôn tập: - Lịch sử đời Java? - Các lĩnh vực ứng dụng Java? - Các đặc điểm Java? Thế biên dịch thông dịch? - Cấu trúc mợt chương trình Java? - Các cấu trúc điều khiển? Các kiểu liệu sở? Các toán tử, mảng xâu ký tự? Bài giảng 2: Giới thiệu lớp đối tượng Chương II Mục + + + + + + Tiết thứ: - Tuần thứ: + - Mục đích, yêu cầu:  Giới thiệu tổng quan lập trình hướng đối tượng Java, khai niệm lớp, đối tượng, thuộc tính, phương thức, từ khóa liên quan,…  Sau học sinh viên nắm cách xây dựng lớp phát triển ứng dụng hướng đối tượng Java - Hình thức tổ chức dạy học: Lý thuyết, tập, thực hành, tự học, tự nghiên cứu - Thời gian: Lý thuyết: 3t; Bài tập: 2t; Tự học, tự nghiên cứu: 8t - Địa điểm: Theo bố trí P2 - Nội dung chính: Nội dung chi tiết: - Khái niệm lớp (Class):  Lớp xem khuôn mẫu (template) đối tượng (object)  Trong lớp bao gồm thuộc tính đối tượng (properties) phương thức (methods) tác động lên thuộc tính  Đối tượng xây dựng từ lớp nên gọi thể lớp (class instance) - Cách khai báo lớp: class { ; ; Constructor1; Constructor2; Method_1; Methor_2; … }  Class: từ khóa Java  ClassName: tên đặt cho lớp; - - - -  Field_1, field_2 : thuộc tính (các biến, hay thành viên liệu lớp)  Constructor1, constructor2 : phương thức xây dựng hay gọi hàm khởi tạo, khởi tạo đối tượng lớp  Methor_1, methor_2 : phương thức (hàm) thể thao tác xử lý, tác động lên thuộc tính lớp Các thuộc tính phương thức lớp: Định nghĩa, cách khai báo, từ khóa liên quan (public, private, protected, default modifier, static, synchronezed, abstract), giải thích khác biệt từ khóa, ví dụ Khởi tạo đối tượng với constructor :  Constructor phương thức đặc biệt lớp  Constructor gọi tự động khởi tạo đối tượng lớp, dùng để gán giá trị mặc định cho đối tượng  Các constructor giá trị trả về, có tham số khơng có tham số  Constructor phải có tên với tên lớp gọi đến dùng từ khóa new khởi tạo đối tượng  Nếu lớp khơng có constructor Java cung cấp cho lớp constructor mặc đinh (default constructor) Những thuộc tính, biến lớp khởi tạo giá trị mặc đinh (số : thường giá trị 0, kiểu luận lý giá trị false, kiểu đối tượng giá trị null, ) Lưu ý : thông thường để an tồn, dễ kiểm sốt làm chủ mã nguồn chương trình nên khai báo constructor cho lớp Ví dụ constructor Các tham chiếu this, super:  Tham chiếu this biến ẩn tồn tất lớp ngôn ngữ Java Một class Java tồn tham chiếu this  Tham chiếu this sử dụng chạy tham khảo đến than lớp chứa  Tham chiếu super dung để tham chiếu đến lớp cha lớp làm việc Nạp chồng phương thức: Việc khai báo lớp nhiều phương thức có tên khác tham số (khác kiểu liệu, - - - - khác số lượng tham số) gọi khai báo chồng phương thức (overloading method), ví dụ Lớp lồng lớp khác (nested class, static nested class), lớp không tên (anonymous class) Lớp Object:  Mọi lớp Java extends lớp  Nếu ta không rõ lớp sở, lớp tạo tự động extends lớp Object  Mọi lớp Java chứa phương thức chức định nghĩa lớp Object  phương thức lớp Object thường dụng:  Public Boolean equals (Object bj)  Public int hashCode()  Public String toString() Nối kết động – Dynamic binding :  Việc thực phương thức ảo JVM xác định chạy chương trình  Nối kết động  Obj instance lớp C1, C2, …, Cn Khi obj gọi phương thức p, JVM tìm thực lớp theo thứ tự C1, C2, , Cn đến tìm thấy Ép kiểu đối tượng: Thực gán đối tượng new Student() cho tham số kiểu Object, tương đương với lệnh: Object obj = new Student() ;// ép kiểu ngầm, upcasting Student std = (Student) obj ;// ép kieur rõ ràng, downcasting // Not Student std = obj; JavaBeans:  Khái niệm JavaBeans  Các loại JavaBeans:  GUI (Graphical User Interface)  Non – visual beans  Một số khái niệm JavaBeans:  Properties: đặc điểm diện mạo hành vi bean, chúng thay đổi lúc thiết kế  Event: bean dùng để giao tiếp với Listener bean bean nhận events Source bean bean phát event  Introspection : (phân tích bên trong) dùng để khám phá đặc điểm bean  Customization : cấu hình tùy biến lúc thiết kế thực nhờ thấy thuộc tính bean  Persistence : cho phép bean lưu trữ phục hồi trạng thái chúng  Methods : phương thức  Tạo sử dụng JavaBean đơn giản, ví dụ Nội dung thảo luận: lập trình đối tượng Java, giống khác lớp đối tượng, khác biệt từ khóa phạm vi Nội dung tự học: Các phương thức lớp Object, xây dựng lớp mình, chế dọn rác, liên kết phương thức đối tượng gọi Bài tập (Bắt buộc, mở rộng): Các tập 8.4 đến 8.19 tài liệu tham khảo số [4] - Yêu cầu SV chuẩn bị:  Đọc trước nhà TL1, TL2, TL3  Xem trước nội dung tập chương II  Trước tập, thực hành chuẩn bị trước nội dung chu đáo - Ghi chú: Tài liệu tham khảo: [1] Java Tập Phương Lan, Lao động – Xã hội, 2006 [2] Java Tập Phương Lan, Lao động – Xã hội, 2006 [3] Java All-In-One Desk Reference For Dummies, 2nd Edition; Doug LoweandBarry Burd; John Wiley & Sons; 2007 [4] Java™ How to Program, Sixth Edition; H M Deitel - Deitel, P J Deitel; Prentice Hall; 2004 [5] Object Oriented With Java Kenneth A Lambert, Martin Oshorne, Prentice Hall, 2003 Câu hỏi ôn tập: - Khái niệm lớp đối tượng, thuộc tính phương thức, cách khai báo? - Khái niệm nạp chồng toán tử? - Constructor, tham chiếu this? - Nested class, anonymous class, lớp Object? - Nối kết động, autoboxing, tốn tử instanceof? • Danh sách mục • Người sử dụng chọn nhiều mục • Single-selection vs multiple-selection • Ví dụ: 2.9 Scroll Bar 2.10 Slider Chọn khoảng giá trị Trước bạn tác động Slider Sau bạn tác động vào Slider Ví dụ: import import import import javax.swing.*; javax.swing.event.*; java.awt.*; java.awt.event.*; public class CreateSlider{ JSlider slider; JLabel label; public static void main(String[] args){ CreateSlider cs = new CreateSlider(); } public CreateSlider(){ JFrame frame = new JFrame("Slider Frame"); slider = new JSlider(); slider.setValue(70); slider.addChangeListener(new MyChangeAction()); label = new JLabel("Roseindia.net"); JPanel panel = new JPanel(); panel.add(slider); panel.add(label); frame.add(panel, BorderLayout.CENTER); frame.setSize(400, 400); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public class MyChangeAction implements ChangeListener{ public void stateChanged(ChangeEvent ce){ int value = slider.getValue(); String str = Integer.toString(value); label.setText(str); } } } 2.11 Tạo nhiều cửa sổ 3.Các thành phần Swing GUI nâng cao 3.1 Xử lý kiện chuột • Các giao tiếp lắng nghe cho kiện chuột • MouseListener • MouseMotionListener • Lắng nghe cho đối tượng kiện MouseEvent • public void mousePressed( MouseEvent event): Được gọi nút chuột nhấn thành phần • public void mouseClicked( MouseEvent event ): Được gọi nút chuột nhấn thả thành phần • public void mouseReleased( MouseEvent event): Được gọi nút chuột thả sau nhấn Trước kiện ln kiện mousePressed • public void mouseEntered(MouseEvent event ): Được gọi trỏ chuột vào ranh giới thành phần • public void mouseExited(MouseEvent event ): Được gọi trỏ chuột rời ranh giới thành phần • public void mouseDragged(MouseEvent event) • Được gọi nút chuột nhấn di chuyển • Trước kiện ln ln gọi tới kiện mousePressed • Tất kiện kéo gửi tới thành phần mà kéo bắt đầu • public void mouseMoved(MouseEvent event): • Được gọi chuột di chuyển thành phần • Tất kiện chuyển động gửi tới thành phần mà vị trí chuột thời 3.2 Các lớp Adapter • Hiện thực giao tiếp • Cung cấp cài đặt mặc định phương thức giao tiếp • Được sử dụng tất phương thức giao tiếp khơng cần thiết • Các lớp Event-Adapter giao tiếp chúng thực gói java.awt.event.* 3.3.Xử lý kiện bàn phím • Giao tiếp KeyListener • Xử lý kiện phím • Sinh phím bàn phím nhấn thả • Lớp KeyEvent chứa mã phím ảo mà đại diện cho phím 3.4 Quản lý bố cục • Cung cấp để xếp thành phần GUI • Cung cấp khả cách trình bày • Xử lý chi tiết bố cục • Lập trình viên tập trung vào “vẻ ngồi” • Giao tiếp LayoutManager • FlowLayout: Mặc định cho Java.awt.Applet, Java.awt.Panel javax.swing.JPanel Đặt thành phần theo (trái qua phải) theo thứ tự chúng thêm Cũng rõ thứ tự thành phần việc sử dụng phương thức add() Container, với đối số thành phần số nguyên số • BorderLayout: Mặc định cho khung nội dung JFrames (và Window khác) JApplets Sắp xếp thành phần vào vùng: Bắc (NORTH), Nam (SOUTH), Đông (EAST), Tây (WEST ) Trung tâm (CENTER) • GridLayout: Sắp xếp thành phần vào hàng cột Một vài đối tượng bản:  FlowLayout • Bộ quản lý bố cục • Các thành phần GUI bố trí chứa từ trái qua phải  BorderLayout • Sắp xếp thành phần vào năm vùng • NORTH (đỉnh container) • SOUTH (đáy container) • EAST (bên trái container) • WEST (bên phải container) • CENTER (ở container)  GridLayout • Chia Container thành lưới gồm hàng cột xác định • Các thành phần bổ sung bắt đầu trên-trái  • • •  • Tiến hành trái-qua-phải hàng đầy Panel – Khung chứa Giúp tổ chức thành phần Lớp JPanel lớp xuất JComponent Có thể có nhiều thành phần (và khung chứa panel khác) thêm vào chúng JTabbedPane • Sắp xếp thành phần lớp • Một lớp xuất thời điểm • Truy cập lớp thơng qua Tab • Lớp JTabbedPane  Con chạy – Jslider • Cho phép người sử dụng chọn giá trị nguyên vùng giá trị xác định • Một số đặc tính: • Tick marks (major and minor) • Snap-to ticks • Hướng (ngang đứng)  Sử dụng Menu với Jframe • Cho phép thực hành động với GUI • Chứa menu (menu bar) • JMenuBar • Bao gồm mục menu (menu items) • JMenuItem  JpopupMenu • Context-sensitive popup menus • JPopupMenu • Menu phát sinh phụ thuộc vào thành phần truy cập • Cách tạo: • JPopupMenu popup = new JPopupMenu(); • JMenuItem items = new JMenuItem(“Red”); • popup.add(items); • … • // handling event – mousePressed • popup.show(ev.getComponent(), ev.getX(), ev.getY());  Look-and-Feel (cảm quan) • Thay đổi cảm quan (dáng vẻ giao diện) • Ví dụ, Microsoft Windows look-and-feel đến Motif look-and-feel • Linh động • Cách sử dụng private UIManager.LookAndFeelInfo looks[]; … // get installed look-and-feel information looks = UIManager.getInstalledLookAndFeels(); … // change look and feel UIManager.setLookAndFeel( looks[index].getClassName() ); SwingUtilities.updateComponentTreeUI( this ); Nội dung thảo luận: Ứng dụng mô hình client – server thực tế Nội dung tự học: Các thành phần AWT Bài tập (bắt buộc, mở rộng): – Thực hành ví dụ lớp – Xây dựng chương trình quản lý danh sách sinh viên (xây dựng hình cho nhập thơng tin sinh viên, lần nhấn nút thêm lưu thông tin vào list, thông tin sinh viên lưu vào file) - Yêu cầu SV chuẩn bị: Đọc trước giảng nhà Chú ý nghe giảng Tích cực tham gia phát biểu ý kiến - Ghi chú: *Tài liệu tham khảo [1] Java Tập Phương Lan, Lao động – Xã hội, 2006 [2] Java Tập Phương Lan, Hoàng Đức Hải, Lao động – Xã hội, 2006 [3] Java All-In-One Desk Reference For Dummies, 2nd Edition Loweand, Barry Burd,John Wiley & Sons , 2007 Doug [4] Java™ How to Program, Sixth Edition H M Deitel - Deitel, P J Deitel, Prentice Hall, 2004 [5] Object Oriented With Java Prentice Hall, 2003 Kenneth A Lambert, Martin Oshorne, http://www.roseindia.net/java/example/java/swing/index.shtml * Câu hỏi ôn tập: - Nêu đặc điểm AWT Swing? - Các thành phần Swing? - Nêu đặc điểm thành phần Swing GUI bản? Bài giảng 13: Cấu trúc liệu tập hợp (Collections) Chương VII Mục 1+2 Tiết thứ: 37 - 39 Tuần thứ: 13 - Mục đích, yêu cầu:  Nắm lớp java.net xây dựng ứng dụng Client/Server - Hình thức tổ chức dạy học: Lý thuyết, thảo luận, tự học, tự nghiên cứu - Thời gian: Lý thuyết, thảo luận: 3t; Tự học, tự nghiên cứu: 6t - Địa điểm: Giảng đường P2 phân công - Nội dung chính: Lý thuyết: Các lớp java.net • Các lớp gói java.net cung cấp phương thức để kết nối mạng trao đổi tin máy với theo mơ hình Client/Server Mặt khác, Internet nhiều máy tính sử dụng giao thức để trao đổi với 1.1 InetAddress • Lớp dùng để biểu diễn địa IP • Các phương thức lớp 1.2 ServerSocket • Lớp ServerSocket dùng để tạo kết nối từ Server tới máy Client Đối tượng lớp tạo Server lắng nghe kết nối từ máy Client theo cổng xác định • Server phải chạy thường trực trước Client bắt đầu thực Server chờ yêu cầu kết nối Client Để thiết lập Server, ta phải tạo đối tượng, ví dụ serverSocket lớp ServerSocket, gắn với cổng lắng nghe xem có Client cần kết nối hay không Các Socket xác định tương ứng với địa máy cổng ServerSocket serverSocket = new ServerSocket(port); Trong port số hiệu cổng Giá trị cổng từ 1023 giữ dịch vụ hệ thống • Thơng thường, giao thức FTP sử dụng cổng 21, telnet dùng cổng 23, dịch vụ E-mail (SMTP) sử dụng cổng 25, Web Server chạy cổng 80 • Sau đối tượng serverSocket tạo ra, chương trình Client sử dụng câu lệnh sau để kết nối với Server Socket connectToServer = new Socket(ServerName,port); serverName tên máy chủ Interrnet địa IP, xác định máy tính tồn mạng Internet (cả giới) • IP giao thức sử dụng để gửi tin từ máy tới máy khác mạng Internet IP phải xác định máy gửi máy nhận thông qua địa IP Một địa IP gồm bốn số nguyên nằm 255, phân cách với dấu ‘.’ Ví dụ Socket connectToServer = new Socket(“129.74.250.103”, 8000); Vì địa IP thường khó nhớ nên thay địa IP người ta thường sử dụng tên miền dịch vụ, ví dụ Gophe.nd.edu tương ứng với địa IP nêu 1.3 Socket • Socket lớp (trừu tượng) thực trao đổi Server Client Java xem trao đổi Server Client dựa Socket gần giống thao tác vào/ra (I/O), nghĩa chương trình đọc, ghi vào Socket dễ dàng chúng đọc, ghi lên tệp liệu Lớp Server tạo kết nối từ máy Client tới Server thông qua phương thức tạo lập đối tượng 1.4 DatagramSocket Xây dựng ứng dụng Client/Server *Mơ hình Client – server • Khi nói tới lập trình mạng ta thường nghĩ đến cách trao đổi chương trình phục vụ (Server) với hay nhiều chương trình khách (Client) • Chương trình khách gửi yêu cầu tới cho chương trình phục vụ, chương trình xử lý liệu để trả lời cho chương trình khách • Như vậy, chương trình khách muốn gửi yêu cầu trước hết phải tìm cách kết nối với Server Server chấp nhận hay từ chối kết nối • Một kết nối thiết lập Client Server trao đổi với thơng qua Sockets * Phục vụ nhiều chương trình Client • Cùng lúc, chương trình Server trao đổi với nhiều chương trình Client Server chạy thường trực máy chủ chương trình Client mạng kết nối với Server lúc • Để Server kết nối đồng thời với nhiều Client ta sử dụng luồng để thực Server thiết lập việc kết nối với nhiều Client sau while(true){ Socket connectToClient = serverSocket.accept(); Thread thread = new ThreadClass(connectToClient); thread.start(); } • Trong trao đổi với nhau, nhiều ta muốn biết kết nối với Server Muốn biết chương trình khách ta sử dụng lớp InetAddress để biết tên miền (host name) địa IP InetAddress clientInetAddress = connectToClient.getInetAddress(); System.out.println("Host name cua Client: " + clientNo + " la " + clientInetAddress.getHostName()); System.out.println("Dia chi IP cua Client: " + clientNo + " la " + clientInetAddress.getHostAddress()); - Xem ví dụ: InetAdd.java Lưu ý: Mơ hình Client-Server nêu sử dụng hướng kết nối Đầu tiên Server khởi động chờ đợi kết nối từ Client Sau kết nối thiết lập, hai bên luân phiên gửi, nhận liệu thông qua đường truyền hình sau * Mơ hình client – server sử dụng dịch vụ khơng kết nối • UDP Server: DatagramSocket serverSocket = new DatagramSocket(9876); receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); System.out.println ("Waiting for datagram packet"); serverSocket.receive (receivePacket); • UDP Client: String serverHostname = new String ("127.0.0.1"); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName(serverHostname); byte[] sendData;// = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send ( sendPacket); Nội dung thảo luận: Ứng dụng mơ hình client – server thực tế Nội dung tự học: Bài tập (bắt buộc, mở rộng): Xây dựng: – Chương trình Client nhận liệu bán kính hình tròn từ bán phím, gửi lên cho Server – Server nhận liệu này, tính diện tích hình tròn sau gửi kết lại cho chương trình khách – Client nhận giá trị diện tích in hình – Xem ví dụ: Server.java; Client.java - Yêu cầu SV chuẩn bị: Đọc trước giảng nhà Chú ý nghe giảng Tích cực tham gia phát biểu ý kiến - Ghi chú: *Tài liệu tham khảo [1] Java Tập Phương Lan, Lao động – Xã hội, 2006 [2] Java Tập Phương Lan, Hoàng Đức Hải, Lao động – Xã hội, 2006 [3] Java All-In-One Desk Reference For Dummies, 2nd Edition Loweand, Barry Burd,John Wiley & Sons , 2007 Doug [4] Java™ How to Program, Sixth Edition H M Deitel - Deitel, P J Deitel, Prentice Hall, 2004 [5] Object Oriented With Java Prentice Hall, 2003 * Câu hỏi ơn tập: - Mơ hình client – server? - Các lớp java.net ? Kenneth A Lambert, Martin Oshorne,

Ngày đăng: 04/06/2020, 08:23

w