Lập trình đối tượng

221 256 0
Lập trình đối tượng

Đ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

LẬP TRÌNH ĐỐI TƯỢNG Chương LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Mục tiêu Kết thúc chương, học viên có thể: Định nghĩa Lập trình hướng Đối tượng (Object-oriented Programming) Nhận thức Trừu tượng hóa Dữ liệu (Data Abstraction) Định nghĩa Lớp (Class) Định nghĩa Đối tượng (Object) Nhận thức khác biệt Lớp Đối tượng Nhận thức cần thiết Thiết lập (Construction) Hủy (Destruction) Định nghĩa tính Bền vững (Persistence) Hiểu biết tính Thừa kế (Inheritance) Định nghĩa tính Đa hình (Polymorphism) Liệt kê thuận lợi phương pháp hướng Đối tượng 1.1 Giới thiệu Lập trình hướng Đối tượng (Object-oriented Programming) Lập trình hướng Đối tượng (OOP) phương pháp thiết kế phát triển phần mềm Những ngôn ngữ OOP không bao gồm cú pháp trình biên dịch (compiler) mà có môi trường phát triển toàn diện Môi trường bao gồm thư viện thiết kế tốt, thuận lợi cho việc sử dụng đối tượng Đối với ngôn ngữ lập trình hỗ trợ OOP việc triển khai kỹ thuật lập trình hướng đối tượng dễ dàng Kỹ thuật lập trình hướng đối tượng cải tiến việc phát triển hệ thống phần mềm Kỹ thuật đề cao nhân tố chức (fucntionality) mối quan hệ liệu OOP phương thức tư để giải vấn đề máy tính Để đạt kết quả, lập trình viên phải nắn vấn đề thành thực thể quen thuộc với máy tính Cách tiếp cận hướng đối tượng cung cấp giải pháp toàn vẹn để giải vấn đề Hãy xem xét tình cần triển khai thành hệ thống máy vi tính: việc mua bán xe Vấn đề vi tính hóa việc mua bán xe bao gồm gì? Những yếu tố rõ ràng liên quan đến việc mua bán xe là: 1) Các kiểu xe (model) 2) Nhân viên bán hàng 3) Khách hàng Những hoạt động liên quan đến việc mua bán: 1) Nhân viên bán hàng đưa khách hàng tham quan phòng trưng bày 2) Khách hàng chọn lựa xe 3) Khách hàng đặt hóa đơn 4) Khách hàng trả tiền 5) Chiếc xe trao cho khách hàng Mỗi vấn đề chia thành nhiều yếu tố, gọi Đối tượng (Objects) Thực thể (Entities) Chẳng hạn ví dụ trên, khách hàng, xe nhân viên bán hàng đối tượng thực thể Lập trình viên luôn cố gắng tạo kịch (scenarios) thật quen thuộc với tình đời sống thực Bước thứ đường hướng làm cho máy tính liên kết với đối tượng giới thực Tuy nhiên, máy tính cỗ máy Nó thực công việc lập trình mà Vì thế, trách nhiệm lập trình viên cung cấp cho máy tính thông tin theo cách thức mà nhận thức thực thể nhận thức Đó lãnh vực kỹ thuật hướng đối tượng Chúng ta sử dụng kỹ thuật hướng đối tượng để ánh xạ thực thể gặp phải đời sống thực thành thực thể tương tự máy tính Phát triển phần mềm theo kỹ thuật lập trình hướng đối tượng có khả giảm thiểu lẫn lộn thường xảy hệ thống lãnh vực ứng dụng Lập trình hướng đối tượng đề cập đến liệu thủ tục xử lý liệu theo quan điểm đối tượng Lập trình hướng đối tượng xem xét liệu thực thể đơn vị độc lập, với chất riêng đặc tính thực thể Bây khảo sát hạn từ ‘đối tượng’ (object), ‘dữ liệu’ (data) ‘phương thức’ (method) Có nhiều loại đối tượng khác Chúng ta xem phận khác quan đối tượng Điển hình quan có phận liên quan đến việc quản trị, đến việc kinh doanh, đến việc kế toán, đến việc tiếp thị … Mỗi phận có nhân riêng, nhân trao cho trách nhiệm rõ ràng Mỗi phận có liệu riêng chẳng hạn thông tin cá nhân, bảng kiểm kê, thể thức kinh doanh, liệu liên quan đến chức phận Rõ ràng quan chia thành nhiều phận việc quản trị nhân hoạt động doanh nghiệp dễ dàng Nhân quan điều khiển xử lý liệu liên quan đến phận Chẳng hạn phận kế toán chịu trách nhiệm lương bổng quan Nếu người đơn vị tiếp thị cần chi tiết liên quan đến lương bổng đơn vị mình, người cần liên hệ với phận kế toán Một người có thẩm quyền phận kế toán cung cấp thông tin cần biết, thông tin chia sẻ Một người thẩm quyền từ phận khác truy cập liệu, thay đổi làm hư hỏng liệu Ví dụ minh chứng đối tượng hữu dụng việc phân cấp tổ chức liệu Hình 1.1 Minh họa cấu trúc quan điển hình Phòng Nhân Phòng Kế toán Phòng Kinh doanh Hình 1.1 Khái niệm đối tượng mở rộng đến hầu hết lãnh vực đời sống, nữa, đến giới lập trình Bất kỳ ứng dụng định nghĩa theo hạn từ thực thể đối tượng để tạo tiến trình xử lý mô theo tiến trình xử lý mà người nghĩ Phương pháp giải ‘top-down’ (từ xuống) gọi ‘lập trình hướng cấu trúc’ (structured programming) Nó xác định chức chương trình chức phân thành đơn vị nhỏ mức độ thấp Bằng kỹ thuật này, chương trình cấu trúc theo hệ thống phân cấp module Mỗi module có đầu vào riêng đầu riêng Trong module, điều khiển có chiều hướng xuống theo cấu trúc chiều hướng lên Phương pháp OOP cố gắng quản lý việc thừa kế phức tạp vấn đề đời thực Để làm việc này, phương thức OOP che giấu vài thông tin bên đối tượng OOP tập trung trước hết liệu Rồi gắn kết phương thức thao tác liệu, việc xem phần thừa kế việc định nghĩa liệu Bảng 1.1 minh họa khác biệt hai phương pháp: Phương pháp Top-Down Chúng ta xây dựng khách sạn OOP Chúng ta xây dựng tòa nhà 10 tầng với dãy phòng trung bình, sang trọng, phòng họp lớn Chúng ta thiết kế tầng lầu, phòng Chúng ta xây dựng khách sạn với phòng họp thành phần Bảng 1.1 Một ví dụ hai phương pháp giải OOP Structured 1.2 Trừu tượng hóa liệu (Data Abstraction) Khi lập trình viên phải phát triển chương trình ứng dụng nghĩa người viết mã cho ứng dụng Trước hết, người phải nghiên cứu ứng dụng xác định thành phần tạo nên ứng dụng Kế tiếp, người phải xác định thông tin cần thiết thành phần Hãy khảo sát chương trình ứng dụng cho việc mua bán xe nói Chương trình phải xuất hóa đơn cho xe bán cho khách hàng Để xuất hóa đơn, cần thông tin chi tiết khách hàng Vậy bước thứ xác định đặc tính khách hàng Một vài đặc tính gắn kết với khách hàng là: Tên Địa Tuổi Chiều cao Màu tóc Từ danh sách kể trên, xác định đặc tính thiết yếu ứng dụng Bởi đề cập đến khách hàng mua xe, chi tiết thiết yếu là: Tên Địa Còn chi tiết khác (chiều cao, màu tóc …) không quan trọng ứng dụng Tuy nhiên, phát triển ứng dụng hỗ trợ cho việc điều tra tội phạm thông tin chẳng hạn màu tóc thiết yếu Bên cạnh chi tiết khách hàng, thông tin sau cần thiết: Kiểu xe bán Nhân viên bán xe Bên cạnh đặc tính khách hàng, xe nhân viên bán hàng, cần liệt kê hành động thực Công việc xuất hóa đơn đòi hỏi hành động sau: Nhập tên khách hàng Nhập địa khách hàng Nhập kiểu xe Nhập tên nhân viên bán xe Xuất hóa đơn với định dạng đòi hỏi Khung thông tin bên cho thấy thuộc tính hành động liên quan đến hóa đơn: Các thuộc tính Tên khách hàng Địa khách hàng Kiểu xe bán Nhân viên bán xe Các hành động Nhập tên Nhập địa Nhập kiểu xe Nhập tên nhân viên bán xe Xuất hóa đơn Định nghĩa Sự trừu tượng hóa liệu tiến trình xác định nhóm thuộc tính hành động liên quan đến thực thể đặc thù, xét mối tương quan với ứng dụng phát triển Tiếp theo, muốn ứng dụng tính toán tiền hoa hồng cho nhân viên bán hàng Những thuộc tính liên kết với nhân viên bán hàng có tương quan với ứng dụng là: Tên Số lượng xe bán Tiền hoa hồng Những hành động đòi buộc công việc là: Nhập tên nhân viên bán xe Nhập số lượng xe bán Tính tiền hoa hồng kiếm Những thuộc tính Tên Số lượng xe bán Tiền hoa hồng Những hành động Nhập tên Nhập số lượng xe bán Tính tiền hoa hồng Như thế, việc trừu tượng hóa liệu tra đặt câu hỏi ‘Đâu thuộc tính hành động cần thiết cho vấn đề đặt ra?’ 1.2.1 Những thuận lợi việc Trừu tượng hóa Những thuận lợi việc Trừu tượng hóa là: Tập trung vào vấn đề Xác định đặc tính thiết yếu hành động đòi hỏi Giảm thiểu chi tiết không cần thiết Việc trừu tượng hóa liệu cần thiết, mô tất hành động thuộc tính thực thể Vấn đề mấu chốt tập trung đến hành vi cốt yếu áp dụng chúng ứng dụng Chẳng hạn khách hàng nhân viên bán hàng thực hành động sau: Người lại Người nói chuyện Tuy nhiên, hành động không liên quan đến ứng dụng Việc trừu tượng hóa liệu loại bỏ chúng 1.3 Lớp (Class) Trong ứng dụng mua bán xe, xác định thuộc tính hành động cần có để xuất hóa đơn cho khách hàng Các hành động thuộc tính chung cho khách hàng mua xe Ví thể, chúng nhóm lại thực thể đơn gọi ‘lớp’ Hãy khảo sát lớp có tên ‘khách hàng’ Lớp bao gồm thuộc tính hành động đòi hỏi khách hàng Lớp Khách hàng Tên khách hàng Địa khách hàng Kiểu xe bán Nhân viên bán xe Nhập tên Nhập địa Nhập kiểu xe bán Nhập tên nhân viên bán xe Xuất hóa đơn Định nghĩa Một lớp định nghĩa thực thể theo thuộc tính hành động chung Hoặc Những thuộc tính hành động chung thực thể nhóm lại để tạo nên đơn vị gọi lớp Hoặc Một lớp xác định cấp chủng loại thực thể giống Một lớp mô hình khái niệm thực thể Nó mang tính cách tổng quát không mang tính cách đặc thù Khi định nghĩa lớp, muốn phát biểu lớp phải có tập hợp thuộc tính hành động riêng Chẳng hạn định nghĩa lớp đây: Lớp Con người Tên Chiều cao Màu tóc Viết Nói Lớp định nghĩa thực thể ‘Con người’ Mọi thực thể thuộc kiểu ‘Con người’ có đặc tính hành động định nghĩa Một lớp định nghĩa, biết thuộc tính hành động thực thể ‘trông giống’ lớp Vì thế, tự chất lớp nguyên mẫu (prototype) Một ví dụ khác lớp liên quan đến việc mua bán xe sau: Lớp Nhân viên bán hàng Tên Số lượng xe bán Tiền hoa hồng Nhập tên Nhập số lượng xe bán Tính tiền hoa hồng Lớp định nghĩa thuộc tính hành động đặc trưng cho nhân viên bán xe 1.4 Đối tượng (Object) Một lớp nguyên mẫu phác họa thuộc tính hành động khả thể thực thể Để sử dụng thực thể mà lớp định nghĩa, phải tạo ‘đối tượng’ từ lớp Lớp khái niệm, đối tượng mẫu thực định nghĩa lớp Hãy khảo sát lớp ‘Khách hàng’ định nghĩa Lớp định nghĩa thuộc tính hành động gắn liền với khách hàng Khi người mua xe cửa hàng, cửa hàng có khách hàng Vào thời điểm ấy, đối tượng giống lớp ‘Khách hàng’ tạo Đối tượng phải có giá trị thực thuộc tính ‘Tên’, ‘Địa chỉ’, ‘Kiểu xe’ … Chẳng hạn khách hàng có tên ‘Mark’, sống ‘London’ mua xe kiểu ‘Honda Civic’ từ nhân viên bán hàng tên ‘Tom’ Như thế, ‘Mark’ đối tượng kiểu ‘Khách hàng’ Định nghĩa Một đối tượng trường hợp lớp Một đối tượng thực thể cụ thể (thông thường bạn sờ chạm, xem thấy cảm nhận) Kể từ lúc đối tượng hữu, thuộc tính giá trị xác định, hành động định nghĩa cho đối tượng thực thi Trong đối tượng, khía cạnh sau xác định rõ: Tình trạng (state) Thái độ (behavior) Chân tính (identity) Hình 1.2 trình bày hai đối tượng đời thực Con người Xe Tên: Jack Tuổi: 28 Trọng lượng: 65 kgs Kiểu: Ferrari Màu: Đỏ Năm: 1995 Hành động: Đi Nói Suy nghĩ Hành động: Khởi động Ngưng Chuyển động Hình 1.2: Một đối tượng Con người đối tượng Xe Mỗi đối tượng có đặc tính riêng mô tả đối tượng gì, hành động Chẳng hạn thuộc tính đối tượng ‘Con người’ là: Tên Tuổi Trọng lượng Những thuộc tính đối tượng ‘Xe hơi’ là: Màu sắc Kiểu xe Năm Một đối tượng thực số hành động Một xe có khả thực hành động sau: Khởi động Ngưng Chuyển động Để chuyển đổi đối tượng lập trình đối tượng đời thực, cần phải kết hợp thuộc tính hành động đối tượng 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) Ghi giá trị bit thấp Ghi byte giá trị kiểu ký tự vào luồng Ghi byte, biểu diễn lại giá trị dạng short Ghi byte, biểu diễn lại giá trị dạng long Ghi byte, biểu diễn lại giá trị dạng float ghi byte Ghi byte, biểu diễn lại giá trị dạng double Ghi sâu dạng UTF tới luồng Bảng 9.4 Các phương thức giao diện DataOutput 9.3.12 Lớp RandomAccessFile Lớp RandomAccessFile cung cấp khả thực I/O theo vị trí cụ thể bên tập tin Trong lớp này, liệu đọc ghi vị trí ngẫu nhiên bên tập tin thay kho lưu trữ thông tin liên tục lớp có tên RandomAccess Phương thưc ‘seek( )’ hỗ trợ truy cập ngẫu nhiên Kết là, biến trỏ tương ứng với tạp tin hành ấn định theo vị trí tập tin Lớp RandomAccessFile thực hai việc nhập xuất Do vây, thực I/O kiểu liệu nguyên thuỷ Lớp hỗ trợ cho phép đọc ghi tập tin bản, điều cho phép đọc tập tin theo chế độ đọc đọc-ghi tham số ‘r’ ‘rw’ gán cho lớp RandomAccessFile định truy cập ‘chỉ đọc’ ‘đọc-ghi’ Lớp giới thiệu vài phương thức khác với phương pháp thừa kế từ lớp DataInput DataOutput Các phương thức bao gồm: seek( ) Thiết lập trỏ tập tin tới vị trí cụ thể bên tập tin getFilePointer( ) Trả vị trí hành trỏ tập tin length( ) Trả chiều dài tập tin tính theo byte Chương trình minh hoạ cách dùng lớp RandomAccessFile Nó ghi giá trị boolean, int, char, double tới file có tên ‘abc.txt’ Nó sử dụng phương pháp seek( ) để tìm vị trí định vị bên tập tin Sau đọc giá trị số nguyên, ký tự double từ tập tin hiển thị chúng hình Chương trình 9.6 import java.lang.System; import java.io.RandomAccessFile; import java.io.IOException; public class mdexam { public static void main (String args[ ]) throws IOException { 78 RandomAccessFile rf; rf= new RandomAccessFile("abc.txt", "rw"); rf writeBoolean(true); rf writelnt( 67868) ; rf.writeChars("J"); rf writeDouble(678.68); / / making use of seek( ) method to move to a specific file location rf.seek(l); System.out.println(rf.readlnt( )); System.out.println(rf.readChar( )); System.out.println(rf.readDouble( )); rf.seek(0); System.out.println(rf.readBoolean( )); rf.close( ); } } Hình 9.5 Hiện kết xuất chương trình: Hình 9.6: Lớp RandomAccessFile 9.4Gói java.awt.print Đây gói mà java JDK 1.2 cung cấp Nó thay khả in JDK 1.1 Nó bao gồm dãy giao diện: Pageable Printable PrinterGraphics Giao diện ‘Pageable’ định nghĩa phương thức sử dụng cho đối tượng mô tả lại trang in Nó định số lượng trang in in trang hành hay miền trang Giao diện ‘Printable’ định phương thức print( )được dùng để in trạng đối tượng Graphics Giao diện ‘PrinterGraphics‘ cung cấp khả truy cập đối tượng ‘PrinterJob’ Nó cung cấp lớp sau đây: Paper Book PageFormat 79 Printerjob Lớp ‘Page’ định nghĩa đặc tính vật lý giấy in Ngoài cung cấp khổ giấy vùng vẽ Lớp ‘Book’ lớp đối tượng trì danh sách trang in Lớp cung cấp phương thức để bổ sung quản lý trang thực thi giao diện Pageable Lớp ‘PageFormat’ định nghĩa lề trang lề ‘Top’, ‘Bottom’,’Left’ ‘Right’ Nó định kích cỡ hướng in ‘Portait’ (khổ dọc) ‘Landscape’ (khổ ngang) Lớp ‘Printerjob’ lớp đối lượng khởi tạo, quản lý, điều khiển yêu cầu máy in Lớp định tính chất in Dưới ngoại lệ lỗi mà gói java.awt.print kích hoạt: PrinterException PrinterIOException PrinterAbortException ‘PrinterException‘ mở rộng lớp java.lang.Exception nhằm cung cấp lớp sở để in ngoại lệ liên quan ‘PrinterIOException’ mở rộng lớp ‘PrinterException’ nêu rõ lỗi I/O ‘PrinterAbortException’ lớp lớp PrinterException nêu rõ khối in bỏ ngang 80 Tóm tắt buổi học Một luồng lộ trình qua liệu di chuyển chương trình java Khi luồng liệu gửi nhận.Chung ta xem ghi đọc luồng theo thứ tự nêu Luồng nhập/xuất bao gồm lớp sau đây: o Lớp System.out o Lớp System.in o Lớp System.err Lớp InputStream lớp trừu tượng định nghĩa cách nhận liệu Lớp OutputStream lớp trừu tượng Nó định nghĩa ghi luồng kết xuất Lớp ByteArrayInputStream tạo luồng nhập từ vùng đệm nhớ ByteArrayOutputStream tạo luồng xuất mãng byte Java hổ trợ tác vụ nhập/xuất tập tin với trợ giúp File, FileDescriptor, FileInputStream FileOutputStream Các lớp Reader Writer lớp trừu tượng hỗ trợ đọc ghi luồng ký tự Unicode CharArrayReader, CharArrayWriter khác với ByteArrayInputStream, ByteArrayOutputStream hỗ trợ định dạng nhập/xuất bit, Trong ByteArrayInputStream, ByteArrayOutputStream hỗ trợ nhập/xuất 16bit Lớp PrintStream thực thi kết xuất lớp có phương thức bổ sung, giúp ta in kiểu liệu Lớp RandomAccessFile cung cấp khả thực I/O tới vị trí cụ thể tập tin 81 Kiểm tra mức độ tiến dàn ống (pipelines) để gửi nhận thông tin chương trình java - luồng lỗi chuẩn Phương thức - đọc byte liệu từ luồng Phương thức - trả giá trị boolean, nêu rõ luồng có hỗ trợ khả mark reset hay không Phương thức xả luồng Nhập/xuất mảng byte sử dụng lớp Lớp - sử dụng truy cập đối tượng thư mục tập tin chưa để lưu giữ liệu 82 Bài tập Viết chương trình nhận dòng văn từ người dùng hiển thị đoạn văn lên hình Viết chương trình chép nội dụng tập tin tới tập tin khác Viết chương trình tạo tập tin truy cập ngẫu nhiên kết xuất hiển thị phía Các ghi nên lưu dạng tập tin ‘.dat’, người dùng truy cập chúng nhanh 83 THỰC THI BẢO MẬT Mục tiêu học: Cuối chương bạn Mô tả công cụ JAR Tạo xem file JAR, liệt kê trích rút nội dung file Sử dụng chữ ký điện tử (Digital Signatures) để nhận dạng Applets Tạo công cụ khóa bảo mật (Security key) Làm việc với chứng số (Digital Certificate) Tìm hiểu gói Java.security 10.1 Giới thiệu: Trong phần này, tìm hiểu chi tiết bảo mật Java applet Chúng ta thảo luận mô hình bảo mật JDK 1.2 đáp ứng nhu cầu người dùng nhà phát triển Java ngôn ngữ lập trình gởi chương trình không tương tác file văn bản, file ảnh thông tin tĩnh thông qua World Wide Web Các chương trình này, không giống chương trình CGI, chạy hệ thống người dùng, chạy máy chủ Web (Web server) Bảo mật Java Applet quan tâm người dùng nhà phát triển applet Thiết tính bảo mật applet dẫn tới sửa đổi phơi bày liệu nhạy cảm Mô hình bảo mật Java 2, JDK 1.2 hữu ích cho người dùng, cho nhà phát triển Nó giúp người dùng trì mức độ bảo mật cao Trong chương nay, học mô hình bảo mật JDK 1.2 10.2 Công cụ JAR: Một file JAR file lưu trữ nén công cụ lưu trữ Java tạo File tương tự chương trình PKZIP Nó chứa nhiều file file lưu trữ Điều cho phép tải trình duyệt hiệu Dùng jar với applet cải tiện đáng kể khả thực trình duyệt Vì tấc tất file biên dịch file đơn, trình duyệt cần thiết lập kết nối HTTP với web server Nén file giảm 50% thời gian tải file Để khởi động công cụ JAR, dùng câu lệnh sau dấu nhắc lệnh: jar [options][manifest] jar-file input-file(s) Tuỳ chọn c t x v f m o M Mô tả Tạo lưu trữ Ghi vào bảng nội dung cho lưu trữ Trích dẫn file có tên từ lưu trữ Tạo nguồn xuất đa dòng (verbose output) lỗi chuẩn Xác định tên file lưu trữ Bao hàm thông tin chứng thực từ file chứng thực xác định Lưu trữ ‘use no zip’ nén Không tạo file chứng thực cho mục (entries) Bảng 0.1 công cụ jar Một file chứng thực chứa thông file lưu trữ File tuỳ chọn Thậm chí file không xác định JAR tự động tạo File jar dùng lưu trữ File phải có phần mở rộng ‘.jar’ xác định dòng lệnh File đầu vào (input-file) danh sách phân cách file đặt lưu trữ Netscape Navigator Internet Explorer hỗ trợ file JAR Câu lệnh sau lưu trữ tất file class file java bao gồm thư mục xác định vào file jar gọi ‘pack’ 85 jar cf pack.jar *.class *.java Tên câu lệnh Tạo lưu trữ Xác định lưu trữ Tên file Các file lưu trữ Hình 10.1 lệnh jar Dùng lệnh sau dấu nhắc liệt kê file file ‘pack.jar’ jar tf pack.jar Tuỳ chọn sử dụng cho bảng nội dung lưu trữ Tuỳ chọn xác định tên file lưu trữ Hình 10.2 Liệt kê file file pack.jar Để gộp file lưu trữ ‘pack.jar vào applet, mở trang HTML, thêm thuộc tính ARCHIVE=’pack.jar’ vào thẻ applet, sau: Thuộc tính cho trình duyệt nạp lưu trữ ‘pack.jar’ để tìm file ‘exr7.class’ Câu lệnh sau trích rút file nén file pack.jar: jar xvf pack.jar Mục chọn ‘x’ cho phép bạn trích rút nội dung file 10.3 Chữ ký điện tử (Digital Signature) cho định danh applet: Trong java, bảo mật applet web phần quan trọng Hacker viết applet nguy hiểm xuyên thủng hàng rào bảo mật Vì thế, applet hạn chế can thiệt ngôn ngữ Applet không hỗ trợ số nét đặt trưng sau: Đọc ghi file từ hệ thống nơi applet chạy Lấy thông tin file từ hệ thống Xoá file từ hệ thống Java thực tất đặc điểm trên, với applet cung cấp từ nhà cung cấp applet tin cậy, ký danh số (digitally signed) Hình sau minh họa trình mã hoá khoá 86 Hình 10.3 Mã hoá dựa khoá Trong hình trên, khoá công cộng (public keys) dùng mã hoá giải mã Cùng ý tưởng sử dụng cho chữ ký số, thêm tính bổ sung Một chữ ký số file mã hoá cung cấp chương trình nhận dạng xác nguồn gốc file Khóa bí mật tính giá trị từ file applet Người giữ khoá bí mật kiểm tra nội dung đối tượng Trong định danh số, khóa riêng (private key) sử dụng để mã hóa, khoá công cộng, dùng giải mã Trong ký danh (sign) đối tượng, người ký danh dùng thuật toán tóm lược thông báo MD5 để tính bảng tóm lược đối tượng Bảng tóm lược dùng dấu tay cho đối tượng bảng tóm lược mã hoá dùng khóa riêng, đưa chử ký điện tử đối tượng Khoá công cộng ký duyệt dùng để mã hoá chữ ký kiểm tra chúng Kết giải mã, giá trị tóm lược đưa Giá trị tóm lược đối tượng tính so sánh với giá trị tóm lược giải mã Nếu giá trị tóm lược (digest) đối tượng giá trị tóm lược mã hoá khớp với nhau, chữ ký được xác nhận Tài liệu mô tả chữ ký gọi “Chứng thực” (Certificate) Thiết lập uỷ thác (trust), nhận dạng applet chứng nhận Chứng nhận thực thể sử dụng khóa công cộng đặt biệt Quyền chứng thực (a certificate authority) dùng thực chứng nhân Nhận được chứng thực từ CA (Certificate Authority), applet phải đệ trình tài liệu chứng thực nhận dạng Hiện công ty đưa dịch vụ xác nhận chứng thực sau: VeriSign Chứng thực Thawte Bạn thiết lập mức bảo mật khác Một applet đưa uỷ thác hoàn toàn, không uỷ thác, với giúp đỡ tập lớp gọi “Quyền” (Permissions) Nhưng nhìn chung, applet giới hạn cách đầy đủ, trừ nhà phát triển ký danh applet Điều thiết lập cho nhà phát triển đáng tin cậy 10.4 Khoá bảo mật Java (Java Security key) Chúng ta cần tạo công cụ, tên là, ‘jar’, ‘jarsigner’, ‘keytool’, trước dùng applet ký danh Chúng ta cần tạo cặp khóa công cộng/riêng, làm cho trở nên sẵn sàng với công cụ jarsigner Bây giờ, tạo công dụng keystore Keystore (Lưu trữ khoá) Keystore sở liệu khoá, chứa chứng thực số dùng để nhận dạng giá trị khoá công cộng Keytool (Công cự khoá) 87 Keytool công cụ khoá bảo mật java, tạo quản lý khóa công cộng, khoá riêng, chứng thực bảo mật Nó thực hiện: o Quản lý cặp khoá công cộng/riêng o Lưu trữ khoá công cộng o Dùng chứng thực để xác thực chứng thực khác o Xác thực (Authenticate) liệu nguồn Tất thông tin mà keytool quản lý lưu trữ sở liệu gọi keystore Sun có keystore mật định dùng định dạng file gọi JKS (java key store Lưu trữ khoá java) Để kiểm hệ thống bạn có keystore định dạng này, thực câu lệnh sau dấu nhắc lệnh: Keytool –list Thông báo lỗi sau xuất bạn keystore bạn Keytool error: keystore file does not exist: c:\windows\.keystore JDK tìm keystore thư mục C:\windows\ Đây vị trí chung cho file hệ thống quan trọng windows 95, 98 NT systems Tuỳ chọn keystore sử dụng lệnh keytool, sau: keytool –list keystore c:\java\try Câu lệnh cho JDK tìm keystore file gọi ‘try’ thư mục ‘C:\java\try’ Nếu không tìm thấy, hiển thị thông báo lỗi Mục ‘-genkey’ sử dụng với câu lệnh keytool để tạo cặp khoá công cộng/riêng Bạn dùng số tuỳ chọn khác Dạng đơn giản sau: keytool –genkey –alias “I” Bí danh (alias) dùng lưu trữ, thay xoá cặp khoá Các bí danh keytool không phân biệt chữ hoa Trong lệnh trên, không sử dụng tuỳ chọn keystore Nếu câu lệnh sử dụng tuỳ chọn keystore, viết lại sau: keytool –genkey –alias “I” –keystore “store” Trong lệnh trên, cặp khoá lưu trữ keystore ‘store’, không lưu keystore mật định hệ thống Sau nhập lệnh vào, nhấn phím enter, keytool nhắc bạn nhập vào mật (password) cho keystore, sau: Enter keystore password Nhập vào ‘password’ yêu cầu Tiếp theo, keytool nhắc bạn nhập vào thông tin bổ sung như: What is your first and last name? (Tên họ) [unknown] what is the name of your organization unit? 88 [unknown]: software Development What is the name of your organization? (Tên tổ chức) [Unknown]: ABC Consultants (tư vấn ABC) What is the name of your city or Locality? (tên thành phố địa phương bạn) [Unknown]: California What is the name of your State or Province? (tên bang tỉnh bạn) [Unknown]:United States of America What is the two-letter country code for this unit?(Mã quốc gia với ký tự) [Unknown]: US Khi bạn nhập vào thông tin, keytool hiển thị thông tin sau: Is correct? [no]: Cuối cùng, keystool nhắc bạn nhập vào mật cho khoá riêng bạn, như: Enter key password for (RETURN if same as keystore password) Thông tin sử dụng để kết hợp phân biệt tên (name) X500 với bí danh (alias) Thông tin đưa vào trực tiếp từ mục chọn ‘-dname’ Mật sau phần biệt với mật keystore Nó dùng truy cập khoá riêng cặp khoá công cộng Mật trực tiếp rõ cách sử dụng tuỳ chọn ‘-keypass’ Nếu mật không rõ, mật keystore dùng Tuỳ chọn ‘-keypasswd’ dùng thay đổi mật Tuỳ chọn ‘-keyalg’ rõ thuật toán tạo cặp khoá Khi bạn tạo khoá bổ sung vào keystore, bạn dùng tuỳ chọn ‘-list’ keytool để xem khoá có keystore hay không Để xoá cặp khoá từ sớ liệu, dùng lệnh sau: keytool –delete –alias aliasName ‘aliasName’ tên khoá xoá Bây giờ, tạo cặp khoá riêng/công cộng cho file JAR, ký danh Lệnh jarsigner dùng để ký danh file JAR Nhập lệnh sau vào dấu nhắc DOS: jarsigner –keystore keyStore –storepass storePassword –keypass keyPassword Bảng sau cung cấp danh sách JARFileNames bí danh: Tuỳ chọn keyStore storePassword keyPassword JARFileName Alias Mô tả Tên keystore sử dụng Mật keystore Mật khoá riêng Tên file JAR ký danh Bí danh ký danh 89 Bảng 10.2 JARFileNames bí danh Để ký danh file JAR ‘pack.jar’, với keystore ‘store’, mật để lưu trữ khoá riêng ‘password’, dùng lệnh sau: jarsigner –keystore store –storepass password –keypass password pack.jar pk ‘pk’ nghĩa tên bí danh Nếu tuỳ chọn ‘-keystore’ không rõ, keystore mật định dùng Để rõ chữ ký file JAR định danh, dùng tuỳ chọn ‘-verify’ jarsigner –verify pack.jar ‘pack.jar’ tên file JAR Nếu chữ ký không hợp lệ, ngoại lệ sau ném (thrown) Jarsigner:java.util.zip.ZipException:invalid entry size (expected 900 but got 876 bytes) Ngược lại, xuất thông báo “jar verified” (jar xác minh) Quá trình xác thực kiểm tra theo bước sau: Có file ‘.DSA’ chứa chữ ký hợp lệ cho file chữ ký SF không Có mục file chữ ký tóm lược hợp lệ cho mục tương ứng file kê khai (manifest file) 10.5 Chữ ký điện tử (digital Certificates) Cho đến bây giờ, học cách tạo ký danh file JAR Bây giờ, học cách xuất chữ ký điện tử(digital certificates), sử dụng để xác thực chữ ký file JAR Chúng ta học nhập chữ ký điển tử từ file Chữ ký điện tử file, đối tượng, thông báo ký danh quyền chứng thực (certificate authority) The CA (Certificate authority) cấp chứng nhận giá trị khoá công cộng Chứng nhận X.509 tổ chức International Standards Organization dạng chứng nhận số phổ biến Keytool hổ trợ chứng nhận Keytool bước cần nhận chứng nhận (certificate) Chúng ta dùng chứng nhận tạo cặp khoá ‘công cộng/riêng’ (private/public) Keytool nhập vào chứng nhận tạo ký danh Keytool tự động gắn (bundle) khoá công cộng với chứng nhận Cùng thực thể tạo khoá công cộng ký danh chứng nhận Đó gọi ‘self-signed certificates’ (Chứng nhận tự ký danh).Các chứng nhận chứng nhận đáng tin cậy cho định danh Tuy nhiên, chúng cần để tạo yêu cầu ký danh chứng nhận (certificate-signing request) Keytool tuỳ chọn sử dụng để tạo chứng nhận Câu lệnh sau giúp tạo chứng nhận trên: keytool –keystore store –alias mykey –certreq –file mykey.txt Cặp khoá tạo ‘mykey’ Tuỳ chọn ‘-file’ tên file, mà yêu cầu ký danh chứng nhận dùng để lưu 90 Dùng lệnh ‘-export’ xuất chứng nhận sau: keytool –export –keystore store –alias pk –file mykey Câu lệnh hiển thị dấu nhắc sau: Enter keystore password Chứng nhận lưu trữ Để nhập chứng nhận khác vào keystore bạn, nhập câu lệnh sau: keytool import –keytool keystore –alias alias –file filename Tên tên file chứa chứng nhận nhập vào (imported certificate) Câu lệnh sau tên bí danh ‘alice’ để nhập chứng nhận file ‘mykey’ vào keystore ‘MyStore’: keytool –import –keystore MyStore –alias alice –file mykey Câu lệnh hiển thị dấu nhắc sau: Enter keystore password (Nhập vào mật keystore) Kết xuất hiển thị hai tuỳ chọn –Owner Issuer Nó hiển thị tên công ty, nghề nghiệp, tổ chức, địa điểm, bang tiền tệ Nó hiển thị số serial thời gian có giá trị Cuối cùng, hỏi có chứng nhận uỷ thác không Chứng nhận chấp thuận cho uỷ thác riêng bạn Dùng lệnh ‘-list’ liệt kê nội dung keystore sau: keystool –list –keystore Store Câu lệnh yêu yều password keystore Dùng tuỳ chọn ‘-alias’ liệt kê mục Dùng lệnh -delete để xoá bí danh keystore, sau: keytool –delete –keystore Store –alias alias Dùng lệnh ‘-printcert’ in chứng nhận lưu trữ file, theo cách sau: keytool –printcert –file myfile Dùng lệnh ‘-help’ nhận danh sách tất lệnh keytool hổ trợ: keytool -help 10.6 Các gói bảo mật java (JAVA Security packages) Các gói bảo mật Java bao gồm: 91 java.security Đây gói API nhân bảo mật (the core security API package) Chứa lớp giao diện (interface) hỗ trợ mã hoá (encryption), tính bảng tóm lược tài liệu chữ ký điện tử java.security.acl Chứa giao diện dùng cài đặt sách điều kiển truy cập java.security.cert Cung cấp hổ trợ cho chứng nhận X.509 java.security.interfaces Định nghĩa giao diện truy cập thuật toán chữ ký điện tử (the digital signature algorithm) java.security.spec Cung cấp lớp độc lập phục thuộc vào thuật toán cho khoá Tóm tắt: Nếu khả bảo mật applet không đảm bảo, liệu nhạy cảm sữa đổi phơi bày Mục đích JAR kết nối file mà applet sử dụng file nén đơn Điều cho phép applet nạp vào trình duyệt cách hiệu Một file kê khai (manifest file) chứa thông tin file lưu trữ Chữ ký điện tử mã hoá kèm với chương trình để nhận diện xác nơi nguồn gốc file Keystore sở liệu khoá Keytool công cụ khoá bảo mật java chứng nhận điện tử file, đối tượng, thông báo ký danh quyền chứng nhận (certificate authority) Kiểm tra kiến thức: File file lưu trữ nén Tuỳ chọn _, dùng với công cụ jar, trích rút tên file từ lưu trữ (file) JAR tự động tạo file kê khai, chí không true/false Thuộc tính ,khi dùng thẻ applet, cho trình duyệt nạp file jar lưu trữ cụ thể, tìm file class nhập vào Trong chữ ký điện tử, _được dùng cho mã hoá _được dùng cho giải mã Tất thông tin keytool quản lý, lưu trữ sở liệu gọi _ keytool bước cần nhận chứng nhận true/false Gói _chứa giao diện (interfaces) dùng cài đặt sách điều kiển truy cập Bài tập: Tạo câu lệnh java thực hành động sau: Tạo file jar ‘core-java.jar’ chứa file lớp (class file) file nguồn Liệt kê nội dung file jar Tạo file html cho file CardLayoutDemo.class,file lớp chứa file jar trích rút (extract) file jar Dùng lệnh keytool với tên bí danh keystore để tạo cặp khoá công cộng/riêng Ký danh file jar tạo Xác minh chữ ký (signature) Xuất chứng nhận (certificate) 92 Liệt kê nội dung keystore 10 In chứng nhận lưu file 93 [...]... hiện thực hóa một đối tượng được gọi là Thiết lập (Construction) Tiến trình hủy bỏ một đối tượng được gọi là Hủy (Destruction) Tính bền vững là khả năng lưu trữ dữ liệu của một đối tượng vượt q thời gian tồn tại của đối tượng đó Việc đóng gói là tiến trình che giấu việc thực thi chi tiết của một đối tượng đối với người sử dụng đối tượng ấy Tính thừa kế là cơ chế cho phép một lớp chis sẻ các thuộc tính... hướng Đối tượng Lập trình hướng đối tượng đòi hỏi một sự chuyển hướng quan trọng trong tư duy của các lập trình viên Phương pháp này làm cho tốc độ phát triển các chương trình mới nhanh hơn, và nếu được sử dụng cách đúng đắn phương pháp này sẽ cải tiến việc duy trì, việc tái sử dụng và việc đánh giá phần mềm Những điểm thuận lợi của phương pháp hướng đối tượng là: Phương pháp này tiến hành tiến trình. .. dụng các đối tượng Phương pháp này tăng tốc tiến trình thiết kế và phát triển, một lần nữa đây là kết quả của việc tái sử dụng các đối tượng Tóm tắt bài học Lập trình hướng Đối tượng là một cách tư duy mới để giải quyết vấn đề với máy vi tính Thay vì nỗ lực đưa vấn đề vào trong khn khổ quen thuộc với máy vi tính, phương pháp hướng đối tượng tìm kiếm một giải pháp tồn vẹn cho một vấn đề Sự trừu tượng. .. được coi là hai đối tượng khác nhau Thơng tin được truyền đi và được đón nhận giữa các bộ phận tạo nên các thơng điệp giữa các đối tượng 1.4.5 Sự kiện (Event) Một sự kiện là một sự việc xảy ra cho một đối tượng tại một thời điểm Để đáp ứng lại sự kiện ấy, đối tượng sẽ thực hiện một hoặc nhiều phương thức Nói cách khác, một sự kiện là một tác nhân mà đối tượng này gây ra cho một đối tượng khác Chẳng... ngược nhau Một bên chứa đối tượng còn một bên chứa con trỏ trỏ đến đối tượng đó “Handle” là cấu trúc bao gồm hai con trỏ Một trỏ đến bảng phương pháp của đối tượng, con trỏ thứ hai trỏ đến chính đối tượng đó Chú ý rằng khi “compaction” cần cập nhật lại giá trị con trỏ của cấu trúc “handle” Thuật tốn dọn rác có thể áp dụng cho các đối tượng đặt trong heap động Khi có u cầu về bộ nhớ, trình quản lý heap trước... nghĩa một đối tượng đặc thù Bởi vì một lớp là một ngun mẫu cho nên các thuộc tính trong một lớp khơng thể nắm giữ các giá trị Một thuộc tính có thể được gán một giá trị chỉ sau khi một đối tượng dựa trên lớp ấy được tạo ra Để có thể lưu giữ những chi tiết của một khách hàng, một trường hợp (đối tượng) của lớp ‘Khách hàng’ phải được tạo ra Các thuộc tính của một đối tượng hiện hữu chỉ khi đối tượng ấy... các thuộc tính và các phương thức được đòi hỏi của một đối tượng Tất cả các đối tượng thuộc về cùng một lớp có cùng các thuộc tính và các phương thức Một lớp là một ngun mẫu của một đối tượng Nó xác định các hành động khả thi và các thuộc tính cần thiết cho một nhóm các đối tượng đặc thù 1.6 Thiết lập (Construction) và Hủy (Destruction) 1.6.1 Thiết lập Một lớp chỉ cung cấp những định nghĩa về các thuộc... khi một đối tượng dựa trên một lớp được tạo ra Khi một đối tượng mới được tạo, các thuộc tính của nó trở nên hiện thực và có thể được gán giá trị Tương tự, các phương thức được định nghĩa cũng được áp dụng Định nghĩa Thiết lập là một tiến trình hiện thực hóa một đối tượng Hàm thiết lập là một phương thức đặc biệt phải được gọi trước khi sử dụng bất kỳ phương thức nào trong một lớp Hàm Thiết lập khởi... trên nhiều đối tượng khác nhau Phương pháp hướng đối tượng đưa ra tiến trình phân tích, thiết kế và phát triển ứng dụng trong khn khổ các khái niệm và các thuật ngữ thuộc lãnh vực ứng dụng Kiểm tra sự tiến bộ 1 Sự trừu tượng hóa dữ liệu đồng nghĩa với sự che giấu dữ liệu Đúng/Sai 2 Định nghĩa sự Trừu tượng hóa dữ liệu 3 Việc đóng gói dữ liệu che giấu những chi tiết thực thi đối với những đối tượng khác... được sử dụng rộng rãi để viết chương trình chạy trên Internet Nó là ngơn ngữ lập trình hướng đối tượng độc lập thiết bị, khơng phụ thuộc vào hệ điều hành Nó khơng chỉ dùng để viết các ứng dụng chạy đơn lẻ hay trong mạng mà còn để xây dựng các trình điều khiển thiết bị cho điện thoại di động, PDA, … 2.2 Các đặc trưng của Java • • • • • • • • Đơn giản Hướng đối tượng Độc lập phần cứng và hệ điều hành Mạnh ... Một đối tượng Con người đối tượng Xe Mỗi đối tượng có đặc tính riêng mơ tả đối tượng gì, hành động Chẳng hạn thuộc tính đối tượng ‘Con người’ là: Tên Tuổi Trọng lượng Những thuộc tính đối tượng. .. thống lãnh vực ứng dụng Lập trình hướng đối tượng đề cập đến liệu thủ tục xử lý liệu theo quan điểm đối tượng Lập trình hướng đối tượng xem xét liệu thực thể đơn vị độc lập, với chất riêng đặc... phương thức chung Một đối tượng trường hợp lớp Một lớp định nghĩa thực thể, đối tượng thực thể thực Tiến trình thực hóa đối tượng gọi Thiết lập (Construction) Tiến trình hủy bỏ đối tượng gọi Hủy (Destruction)

Ngày đăng: 03/12/2015, 18:40

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

  • Đang cập nhật ...

Tài liệu liên quan