Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
505,26 KB
Nội dung
Bộ môn Công nghệ phần mềm KHOA CễNG NGH THễNG TIN TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA Chương 04 Đóng gói che giấu thông tin Nguyễn Thị Thu Trang trangntt-fit@mail.hut.edu.vn Mục tiêu học Nêu chất, vai trò trừu tượng hóa liệu Giải thích đóng gói che giấu thơng tin (Encapsulation & Information Hiding) Thực thi Java Khai báo lớp Java Tạo phương thức, trường/thuộc tính Package Java Department of Software Engineering Nội dung Trừu trượng hóa liệu Đóng gói che giấu thông tin Khai báo lớp Các thành viên lớp Chồng phương thức Gói (package) Department of Software Engineering 1 Trừu tượng hóa liệu (Data abstraction) Khi khơng thể nắm bắt tồn đối tượng phức tạp Ỉ Bỏ qua chi tiết khơng cần thiết, thay vào mơ hình đối tượng tổng qt lý tưởng Ỉ Giúp giảm bớt phức tạp tốn Mơ-đun hóa phần mềm, hay phân cấp hệ thống phần mềm (quan điểm chia để trị) Ỉ Bài tốn trở nên rõ ràng, dễ lưu trữ dễ thực Department of Software Engineering Trừu tượng hóa liệu (2) Trừu tượng hóa Trừu tượng hóa cho phép Ví dụ: Trừu tượng hóa sinh viên cụ thể lớp học thành lớp SinhVien Department of Software Engineering Nội dung Trừu trượng hóa liệu Đóng gói che giấu thơng tin Khai báo lớp Các thành viên lớp Chồng phương thức Gói (package) Department of Software Engineering 2 Đóng gói che giấu thơng tin (Encapsulation and Data hiding) Encapsulation: Data hiding: Department of Software Engineering Nội dung Trừu trượng hóa liệu Đóng gói che giấu thơng tin Khai báo lớp Các thành viên lớp Chồng phương thức Gói (package) Department of Software Engineering Lớp Đóng gói Thuộc tính phương thức gọi Các lớp nhóm lại thành package Một package bao gồm tập hợp lớp có quan hệ logic với Ví dụ: javax.swing, java.util… Lớp giống thiết kế; sử dụng để tạo đối tượng hay thể lớp Department of Software Engineering 3 Lớp (2) Khai báo lớp: Định danh khai báo lớp xác định tên lớp Cú pháp khai báo: chi_dinh_truy_cap: : Lớp truy cập từ đâu, kể bên package chứa lớp : Chỉ truy cập phạm vi lớp : Lớp truy cập từ bên package chứa lớp Department of Software Engineering 10 Lớp (3) Lớp thể khai báo thuộc package Cú pháp: Ví dụ: package com.helloworld; public class HelloWorld { … } Department of Software Engineering 11 Nội dung Trừu trượng hóa liệu Đóng gói che giấu thơng tin Khai báo lớp Các thành viên lớp Chồng phương thức Gói (package) Department of Software Engineering 12 4 Các thành viên lớp Bao gồm: Thuộc tính phương thức Ỉ Phạm vi lớp (giữa dấu { }): Bên phạm vi lớp, thành viên lớp chứa phương thức lớp, truy cập thơng qua Bên ngồi phạm vi lớp, có định truy cập tới thành viên lớp gồm có: public private Ỉ Tương tự lớp Department of Software Engineering 13 Các thành viên lớp (2) public Khơng có private Cùng lớp Cùng gói Khác gói Department of Software Engineering 14 Các thành viên lớp (3) Ví dụ: public class HelloWorld1 { // Cac thuoc tinh private int iValue = 12; float fValue = 3.45f; //package // Phuong thuc main public static void main(String args[]) { System.out.println(“Hello World!"); System.out.println(“Gia tri nguyen: ”+iValue); System.out.println(“Gia tri thuc: ”+fValue); } } Department of Software Engineering 15 Các thành phần lớp (4) Department of Software Engineering 16 4.1 Thuộc tính (Field/Attribute) Các đối tượng giữ lại trạng thái thuộc tính (attributes) hay trường (fields) Các thuộc tính định nghĩa lớp Mỗi đối tượng có thuộc tính riêng Thuộc tính khởi tạo khai báo Department of Software Engineering 17 4.2 Phương thức (method) a Thông điệp (message): Department of Software Engineering 18 4.2 Phương thức (2) b Phương thức (method): Xác định cách đối tượng đáp ứng lại thông điệp Phương thức xác định hoạt động lớp Department of Software Engineering 19 4.2 Phương thức (3) c Chữ ký phương thức (signature) Mỗi phương thức phải có chữ ký riêng Chữ ký phương thức bao gồm: Department of Software Engineering 20 4.2 Phương thức (4) d Kiểu liệu trả về: Khi phương thức trả giá trị đối tượng bắt buộc phải có câu lệnh Nếu phương thức khơng trả giá trị kiểu trả Có thể có nhiều lệnh return phương thức; câu lệnh mà chương trình gặp thực thi Department of Software Engineering 21 4.2 Phương thức (5) e Phương thức main(): Một ứng dụng thực thi có hàm main() JVM tải lớp bắt đầu thực hàm main(String[] args) public: phương thức gọi từ đối tượng static: không cần phải tạo đối tượng trước void: khơng có kết trả Department of Software Engineering 22 4.3 Cơ chế che giấu thông tin Các thành viên liệu Chỉ truy nhập từ phương thức bên lớp Chỉ định truy cập private để bảo vệ liệu Các đối tượng khác muốn truy nhập vào liệu riêng tư phải thông qua Department of Software Engineering 23 Nội dung Trừu trượng hóa liệu Đóng gói che giấu thơng tin Khai báo lớp Các thành viên lớp Chồng phương thức Gói (package) Department of Software Engineering 24 Chồng phương thức (Method Overloading) Nhắc lại phương thức: Mỗi phương thức phải có chữ ký riêng Chữ ký (signature) phương thức bao gồm: Tên phương thức Số lượng đối số kiểu chúng Department of Software Engineering 25 Chồng phương thức (2) Các phương thức trùng tên chữ ký phải khác Ỉ Chồng phương thức (Method Overloading): Thuận tiện cho lập trình không cần phải nhớ nhiều tên phương thức mà cần nhớ tên lựa chọn tham số cho phù hợp Department of Software Engineering 26 Chồng phương thức (3) Ví dụ 1: Phương thức println() System.out.println() có 10 khai báo với tham số khác nhau: boolean, char[], char, double, float, int, long, Object, String, khơng có tham số Department of Software Engineering 27 Chồng phương thức (4) Ví dụ 2: class MyDate { public boolean setMonth(int m) { …} public boolean setMonth(String s) { …} } … MyDate d = new MyDate(); d.setMonth(9); d.setMonth(”September”); Department of Software Engineering 28 Nội dung Trừu trượng hóa liệu Đóng gói che giấu thơng tin Khai báo lớp Các thành viên lớp Chồng phương thức Gói (package) Department of Software Engineering 29 Gói (package) Các lớp nhóm lại với thành gói (package) Gói coi thư mục, nơi tổ chức lớp Theo quy ước, tên package viết Department of Software Engineering 30 10 Gói (2) a Lợi ích package: Giúp tổ chức lớp vào đơn vị nhỏ (như thư mục), làm cho việc xác định vị trí trở nên dễ dàng sử dụng tập tin lớp cách phù hợp Tránh cho mức rộng so với mối quan hệ lớp Các tên gói sử dụng để nhận dạng lớp Các gói chứa gói khác Department of Software Engineering 31 Gói (3) b Tham chiếu lớp: Trong package: Khác package: Ví dụ: public class HelloNameDialog{ public static void main(String[] args){ String result; result = javax.swing.JOptionPane.showInputDialog (“Hay nhap ten ban:”); javax.swing.JOptionPane.showMessageDialog(null, ”Xin chao “+ result + “!”); System.exit(0); } } Department of Software Engineering 32 Gói (4) Lệnh import: Sử dụng lệnh import Ví dụ: import javax.swing.JOptionPane; public class HelloNameDialog{ public static void main(String[] args){ String result; result = JOptionPane.showInputDialog (“Hay nhap ten ban:”); JOptionPane.showMessageDialog(null, ”Xin chao “+ result + “!”); System.exit(0); } } Department of Software Engineering 33 11 Gói (4) •java.applet •java.awt •java.beans •java.io •java.lang •java.math •java.net •java.nio •java.rmi •java.security •java.sql •java.text •java.util •javax.accessibility •javax.crypto •javax.imageio •javax.naming •javax.net •javax.print •javax.rmi •javax.security •javax.sound •javax.sql •javax.swing •javax.transaction •javax.xml •org.ietf.jgss •org.omg.CORBA •org.omg.CosNaming •org.omg.Dynamic •org.omg.IOP •org.omg.Messaging •org.omg.PortableInterceptor •org.omg.PortableServer •org.omg.SendingContext •org.omg.stub.java.rmi •org.w3c.dom •org.xml Department of Software Engineering 34 Gói (5) Các Package Java java.lang Cung cấp lớp cho thiết kế ngơn ngữ lập trình Java Bao gồm wrapper classes, String StringBuffer, Object, Import ngầm định vào tất lớp java.util Bao gồm tập hợp framework, mơ hình kiện, date time, nhiều tiện ích khác java.io Cung cấp khả vào / hệ thống với luồng liệu hệ thống file Department of Software Engineering 35 Gói (5) Các Package Java java.math Cung cấp lớp thực thi phép toán với số nguyên phép toán thập phân java.sql Cung cấp API cho phép truy nhập xử lý liệu lưu trữ nguồn liệu (thường sử dụng sử liệu quan hệ) java.swing Cung cấp lớp giao diện cho phép tạo ứng dụng đồ họa … Department of Software Engineering 36 12 ... (4) •java.applet •java.awt •java.beans •java.io •java.lang •java.math •java.net •java.nio •java.rmi •java.security •java.sql •java.text •java.util •javax.accessibility •javax.crypto •javax.imageio... •javax.accessibility •javax.crypto •javax.imageio •javax.naming •javax.net •javax.print •javax.rmi •javax.security •javax.sound •javax.sql •javax.swing •javax.transaction •javax.xml •org.ietf.jgss •org.omg.CORBA... private int iValue = 12; float fValue = 3.45f; //package // Phuong thuc main public static void main(String args[]) { System.out.println(“Hello World!"); System.out.println(“Gia tri nguyen: ”+iValue);