Giáo trình bài giảng - Môn học: Lập trình Java
Mục Tiêu Bài Học
•Thế nào là lập trình hướng đối tượng
•Tìm hiểu về trừu tượng dữ liệu
•Định nghĩa lớp và đối tượng
•Constructor và Destructor
•Tìm hiểu về tính lưu trữ, bao bọc dữ liệu, tính kế thừa và đa hình
•Các ưu điểm của phương pháp lập trình hướng đối tượng
ho phép chỉ định kích thước của vùng đệm nhập.Phương thức kia thì không.Cả hai phương thức thiết lập đều tiếp nhận một đối tượng của lớp ‘InputStream’ như một tham số.Nạp chồng các phương thức truy cập mà InputStream cung cấp, và không đưa vào bất kỳ phương thức mới nào.Lớp BufferedOutputStreamThực hiện vùng đệm kết xuất theo cách tương ứng với lớp ‘BufferedInputStream’.Định nghĩa hai phương thức thiết lập. Nó cho phép chúng ta ấn định kích thước của vùng đệm xuất trong một phương thức thiết lập, cũng giống như cung cấp kích thước vùng đệm mặc định.Nạp chồng tất cả phương thức của lớp ‘OutputStream’ và không đưa vào bất kỳ phương thức nào.Lớp Reader và WriterLà các lớp trừu tượng.Chúng nằm tại đỉnh của hệ phân cấp lớp, hỗ trợ việc đọc và ghi các luồng ký tự 2 bytes.Lớp Reader Hỗ trợ các phương thức sau:read( )reset( )skip( )mark( )markSupported( )close( )ready( )Lớp Writer Hỗ trợ các phương thức sau :write( )flush( )close( )Nhập/xuất chuỗi và mảng ký tựHỗ trợ nhập và xuất từ các vùng đệm bộ nhớHỗ trợ 8 bít ký tự nhập và kết xuấtLớp ‘CharArrayReader’ không bổ sung phương thức mới vào các phương thức mà lớp ‘Reader’ cung cấp.Nhập/xuất chuỗi và mảng ký tựLớp ‘CharArrayWriter’ bổ sung phương thức sau đây vào phương thức của lớp ‘Writer’ cung cấp:reset( )size( )toCharArray( )toString( )writeTo( )Nhập/xuất chuỗi và mảng ký tự (tt)Lớp ‘StringReader’ trợ giúp đọc các ký tự đầu vào từ sâu chuỗi.Nó không bổ sung bất kỳ phương thức nào mà lớp Reader cung cấp.Lớp ‘StringWriter’ trợ giúp để ghi luồng kết xuất ký tự ra một đối tượng ‘StringBuffer’.Lớp này bổ sung thêm các phương thức sau:getBuffer( ) toString( )Lớp PrinterWriter Thực hiện một kết xuất.Lớp này có phương thức bổ sung , trợ giúp in các kiểu dữ liệu cơ bản .Lớp PrintWriter thay thế lớp ‘PrintStream’Thực tế cải thiện lớp ‘PrintStream’; lớp này dùng một dấu tách dòng phụ thuộc nền tảng điểm các dòng thay vì ký tự ‘\n’.Cung cấp phần hỗ trợ cho các ký tự unicode so với PrintStream.Các phương thức: checkError( )setError( )Giao diện DataInput Được sử dụng để đọc các byte từ luồng nhị phânCho phép chúng ta chuyển đổi dữ liệu từ từ khuôn dạng UTF-8 được sửa đổi Java đến dạng chuỗiĐịnh nghiã số phương thức, bao gồm các phương thức để đọc các kiểu dữ liệu nguyên thuỷ.Những phương thức Interface DataInputboolean readBoolean( ) byte readByte( ) char readChar( )short readShort( ) long readLong( ) float readFloat( )int readInt( ) double readDouble( ) String readUTF( ) String readLine( ) Interface DataOutput Được sử dụng để xây dựng lại dữ liệu một số kiểu dữ liệu nguyên thuỷ vào trong dãy các byteGhi các byte dữ liệu vào luồng nhị phânCho phép chúng ta chuyển đổi một chuỗi vào khuôn dạng UTF-8 được sửa đổi Java và viết nó vào trong một dãy. Định nghĩa một số phương thức và tất cả phương thức kích hoạt IOException trong trường hợp lỗi.Các phương thức giao diện DataOutputvoid writeBoolean(boolean b)void writeByte( int value)void writeChar(int value)void writeShort(int value)void writeLong(long value)void writeFloat(float value)void writeInt(int value)void writeDouble(double value)void writeUTF(String value)Lớp RandomAccessFile Cung cấp khả năng thực hiện I/O theo các vị trí cụ thể bên trong một tập tin.dữ liệu có thể đọc hoặc ghi ngẫu nhiên ở những vị trí bên trong tập tin thay vi một kho lưu trữ thông tin liên tục.phương thức ‘seek( )’ hỗ trợ truy cập ngẫu nhiên.Thực hiện cả đọc và ghi dữ liệu.Hỗ trợ các cấp phép đọc và ghi tập tin cơ bản.Kế thừa các phương thức từ các lớp ‘DataInput’ và ‘DataOutput’ Các phương thức của lớp RandomAccessFileseek( )getFilePointer( )length( )Gói java.awt.printGồm có các interface Pageable:Định nghĩa các phương thức dùng để các đối tượng biểu thị các trang sẽ được in.Chỉ định số trang đã được in, và trang hiện tại hay là tranh giới trang đã được inPrintable:Chi định phương thức ‘print( )’ sử dụng để in một trang trên đối tượng ‘Graphics’PrinterGraphics:Cung cáp khả năng truy cập đối tượng ‘PrinterJob’interface ‘PrinterGraphics’ cung cấp các lớp sau:PaperBookPageFormatPrinterJobGói ‘java.awt.print’ kích hoạt các ngoại lệ: PrinterExceptionPrinterIOExceptionPrinterAbortException Chương IXKẾT NỐI CSDL Java Database ConnectivityTổng quanJDBC cung cấp tập các lớp và interface cho phép chương trình Java có thể làm việc được với hệ CSDLTập các lớp của JDBCcó thể làm việc được với mọi hệ csdl. Có 3 bước chính để kết nối CSDLNạp database driversTạo nối kết, Tạo đối tượng ConnectionTạo đối tượng Statement để thực thi các lệnh sql.. Ví dụtry{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//nạp driver Connection con=DriverManager.getConnection("jdbc:odbc:CSDL");//tạo nối kết Statement stmt = con.createStatement();//tạo đối tượng Statement : : : :Database URLDatabase URL là một chuổi được dùng để kết nối csdl.cú pháp :jdbc:subprotocol_name:other_stuffThe subprotocol_name được dùng tuỳ vào loại driver sử dụng để kết nối csdl. ví dụ : subprotocol name là odbc nếu driver là cầu nối jdbcodbcOther_stuff cũng phụ thuộc vào loại driver nào được sử dụng. ví dụ nếu driver là cầu nối jdbcodbc thì thành phần này là tên của đối tượng ODBCDatabase DriverBảo đảm ứng dụng java tương tác với mọi csdl dưới một cách thức chuẩn và duy nhất.Bảo đảm những yêu cầu từ chương trình sẽ được biểu diễn trong csdl dưới một ngôn ngữ mà csdl hiểu được Nhận các yêu cầu từ client, chuyển nó nó vào định dạng mà csdl có thể hiểu được và thể hiện trong csdl. Nhận các phản hồi, chuyển nó ngược lại định dạng dữ liệu java và thể hiện trong ứng dụng. Nạp DriverLớp DriverManager chịu trách nhiệm nạp driver và tạo kết nối đến csdl.DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());hoặcClass.forName(String); Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); Tương đương new sun.jdbc.odbc.JdbcOdbcDriver();JDBC DriverCó 4 loại JDBC Driver Loại 1: JDBC/ODBCLoại 2: Native-APILoại 3: Open Protocol-NetLoại 4: Proprietary-Protocol-NetLoại 2,3,4 nói chung được viết bởi nhà cung cấp csdl, hiệu quả hơn loại 1 nhưng thực hiện phức tạp hơn. Loại I JDBC/ODBCjdk hỗ trợ cầu nối jdbc-odbc (jdbc-odbc bridge).Mềm dẻo nhưng không hiệu quả. DatabaseNetwork InterfaceServerAplicationJDBC DriverODBC DriverNetwork InterfaceDiskClientLoại 2: Native-API Tốt hơn loại 1, loại này cho phép JDBC giao tiếp trực tiếp với các driver hay các hàm API của CSDL. DatabaseNetwork InterfaceServerAplicationJDBC DriverNative Database LibraryNetwork InterfaceDiskClientLoại 3: Open Protocol-Net DriversCó thể chuyển các yêu cầu đến các csdl nằm ở xa.Có thể giao tiếp với nhiều loại CSDL.Không phải của nhà cung cấp csdlTất cả bằng mã javaDatabaseNetwork InterfaceServerAplicationJDBC Driver ClientNetwork InterfaceDiskClientJDBC Driver ServerNative Database LibraryLoại 4: Proprietary-Protocol Net 100% javaCó khả năng giao tiếp trực tiếp với hệ CSDL không cần chuyển đổiDatabaseNetwork InterfaceServerAplicationJDBC Driver Network InterfaceDiskClientGói Java.sqlCung cấp tập hợp các lớp và interface làm việc với CSDL.Các lớp DriverManager Date, Time Timestamp Types Các InterfacesDriverConnection DatabaseMetaData StatementPreparedStatement CallableStatementResultSet ResultSetMetaData Đối tượng StatementĐối tượng Connection chứa liên kết trực tiếp đến csdl.Sử dụng đối tượng Connection để tạo đối tượng Statement.Statement s = con.createStatement();Đối tượng này có nhiệm vụ gửi các câu lệnh sql đến csdl. executeQuery(String) or executeUpdate(String) methodCùng một đối tượng Statement có thể sử dụng cho nhiều câu lệnh sql khác nhau.Có 3 phương thức thực thiexecuteQuery()executeUpdate()execute()The executeQuery() Nhận câu lệnh SQL (select) làm đối số, trả lại đối tượng ResultSetResultSet rs = s.executeQuery(“SELECT * FROM Books”);Phương thức executeUpdate()Nhận các câu lệnh sql dạng cập nhậtTrả lại số nguyên biểu thị số hàng được cập nhật.UPDATE, INSERT, or DELETE. Phương thức execute()Được áp dụng cho trường hợp không rõ loại sql nào được thực hiện. Được áp dụng cho trường hợp câu lệnh sql đựợc tạo ra tự động bởi chương trình.ResultSetChứa một hoặc nhiều hàng dữ liệu từ việc thực hiện câu lệnh truy vấn.Có thể lấy dữ liệu từng hàng dữ liệu một trong ResultSet. Sử dụng phương thức next() để di chuyển đến hàng dữ liệu tiếp theo trong ResultSet. Hàm next() trả lại true chỉ rằng hàng chứa dữ liệu, trả lại false hàng cuối cùng, không chứa dữ liệu. Thực hiệnwhile (rs.next()){// examine a row from the results}Để lấy dữ liệu ở các cột trên mỗi hàng của ResultSet, ta dùng các phương thứcgettype(int | String)Đối số là chỉ số cột tính từ 1.Áp dụng cho các cột có kiểu dữ liệu là int, float, Date..... Ví dụ :String isbn = rs.getString(1); // Column 1float price = rs.getDouble(“Price”);ResultSetMetadataĐối tượng này cho biết thông tin về ResultSetResultSet rs = stmt.executeQuery(SQLString);ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumns = rsmd.getColumnCount(); getColumnName(int column)Các đối tượng Statement khácPrepared StatementsCallable StatementDatabase Metadata Đối tượng này cho biết thông tin về csdl.Chương trình mẫuimport java.sql.*;class JDBCDemo1 { public static void main(String[] args) { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con=DriverManager.getConnection("jdbc:odbc:Accserver"); Statement stmt = con.createStatement(); String sql=“Select * from Table1”; ResultSet rs = stmt.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); for(int j=1; j<=numberOfColumns;j++) { System.out.println(rsmd.getColumnLabel(j)); } while(rs.next()) { for(int i=1; i<=numberOfColumns;i++){ System.out.println(rs.getObject(i)); }} rs.close(); stmt.close(); } catch(Exception e){ System.out.println("Error " + e); } } }ĐỀ TÀI BÀI TẬP LỚN JAVA1. Quản lý bãi đỗ xe2. Quản lý bán vé tàu3. QL sinh viên 4. Quản lý bến xe5. Quản lý tiền điện6. Quản lý ký túc xá7. Quản lý cấp phát thuốc8. Quản lý phòng máy9. Quản lý lịch giảng dạy 10. Quản lý xuất nhập kho11. Quản lý thuê bao internet12. Quản lý thư viện13. Mô phỏng máy ATM14. Quản lý quán cafe.....................................
File đính kèm:
- Java.ppt