Chuong 04 - Dong goi va truu tuong hoa du lieu
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 và che giấu thông tin
Nguyễn Thị Thu Trang [email protected]
1
Mục tiêu bài học
Nêu được bản chất, vai trò của trừu tượng hóa dữ liệu Giải thích về đóng gói và che giấu thông tin (Encapsulation & Information Hiding) Thực thi trong Java Khai báo một lớp trong Java Tạo các phương thức, các trường/thuộc tính Package trong Java
Department of Software Engineering 2
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và che giấu thông tin
3. Khai báo lớp
4. Các thành viên của lớp
5. Chồng phương thức
6. Gói (package)
Department of Software Engineering 3
1
1. Trừu tượng hóa dữ liệu (Data abstraction)
Khi không thể nắm bắt toàn bộ đối tượng phức tạp Bỏ qua những chi tiết không cần thiết, thay vào đó bằng một mô hình đối tượng tổng quát lý tưởng. Giúp giảm bớt sự phức tạp của bài toán.
Mô-đun hóa phần mềm, hay sự phân cấp của hệ thống phần mềm (quan điểm chia để trị). Bài toán trở nên rõ ràng, dễ lưu trữ và dễ thực hiện.
Department of Software Engineering 4
1. Trừu tượng hóa dữ liệu (2)
Trừu tượng hóa là
Trừu tượng hóa cho phép
Ví dụ: Trừu tượng hóa các sinh viên cụ thể trong lớp học thành một lớp SinhVien.
Department of Software Engineering 5
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và che giấu thông tin
3. Khai báo lớp
4. Các thành viên của lớp
5. Chồng phương thức
6. Gói (package)
Department of Software Engineering 6
2
2. Đóng gói và che giấu thông tin (Encapsulation and Data hiding)
Encapsulation:
Data hiding:
Department of Software Engineering 7
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và che giấu thông tin
3. Khai báo lớp
4. Các thành viên của lớp
5. Chồng phương thức
6. Gói (package)
Department of Software Engineering 8
Đóng gói
3. Lớp
Thuộc tính và phương thức gọi là
Các lớp được nhóm lại thành package Một package bao gồm một tập hợp các lớp có quan hệ logic với nhau. Ví dụ: javax.swing, java.util... Lớp giống như một bản thiết kế; được sử dụng để tạo ra các đối tượng hay các thể hiện của lớp.
Department of Software Engineering 9
3
3. Lớp (2)
Khai báo lớp: Định danh trong khai báo lớp xác định tên của lớp Cú pháp khai báo:
chi_dinh_truy_cap: : Lớp có thể được truy cập từ bất cứ đâu, kể cả bên ngoài package chứa lớp đó. : Chỉ có thể truy cập trong phạm vi lớp đó : Lớp có thể được truy cập từ bên trong package chứa lớp đó.
Department of Software Engineering 10
3. Lớp (3)
Lớp thể khai báo thuộc 1 package nào đó Cú pháp: Ví dụ: package com.helloworld; public class HelloWorld { ... }
Department of Software Engineering 11
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và che giấu thông tin
3. Khai báo lớp
4. Các thành viên của lớp
5. Chồng phương thức
6. Gói (package)
Department of Software Engineering 12
4
4. Các thành viên của lớp
Bao gồm: Thuộc tính và phương thức Phạm vi của lớp (giữa 2 dấu { }): Bên trong phạm vi lớp, các thành viên của lớp chứa các phương thức của lớp, của và có thể truy cập thông qua . Bên ngoài phạm vi của lớp, có 2 chỉ định truy cập tới các thành viên của lớp gồm có: public và private Tương tự như lớp.
Department of Software Engineering 13
4. Các thành viên của 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
4. Các thành viên của 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
5
4. Các thành phần của 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 trong các thuộc tính (attributes) hay các trường (fields) Các thuộc tính được định nghĩa trong lớp. Mỗi đối tượng có bản sao các thuộc tính của riêng nó. Thuộc tính có thể được khởi tạo khi 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
6
4.2. Phương thức (2)
b. Phương thức (method): Xác định cách một đối tượng đáp ứng lại thông điệp Phương thức xác định các hoạt động của lớp
Department of Software Engineering 19
4.2. Phương thức (3)
c. Chữ ký của phương thức (signature) Mỗi phương thức phải có một chữ ký riêng. Chữ ký của phương thức bao gồm:
Department of Software Engineering 20
4.2. Phương thức (4)
d. Kiểu dữ liệu trả về: Khi phương thức trả về ít nhất một giá trị hoặc một đối tượng thì bắt buộc phải có câu lệnh
Nếu phương thức không trả về 1 giá trị nào thì kiểu trả về là Có thể có nhiều lệnh return trong một phương thức; câu lệnh đầu tiên mà chương trình gặp sẽ được thực thi.
Department of Software Engineering 21
7
4.2. Phương thức (5)
e. Phương thức main(): Một ứng dụng chỉ có thể thực thi được khi nó có hàm main() JVM tải một lớp và bắt đầu thực hiện hàm main(String[] args) public: phương thức có thể được gọi từ bất cứ đối tượng nào static: không cần phải tạo ra đối tượng trước void: không có kết quả trả về
Department of Software Engineering 22
4.3. Cơ chế che giấu thông tin
Các thành viên dữ liệu Chỉ có thể truy nhập từ các phương thức bên trong lớp. Chỉ định truy cập là private để bảo vệ dữ liệu Các đối tượng khác muốn truy nhập vào dữ liệu riêng tư này phải thông qua
Department of Software Engineering 23
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và che giấu thông tin
3. Khai báo lớp
4. Các thành viên của lớp
5. Chồng phương thức
6. Gói (package)
Department of Software Engineering 24
8
5. Chồng phương thức (Method Overloading)
Nhắc lại về phương thức: Mỗi phương thức phải có một chữ ký riêng Chữ ký (signature) của phương thức bao gồm: Tên phương thức Số lượng các đối số và kiểu của chúng
Department of Software Engineering 25
5. Chồng phương thức (2)
Các phương thức có thể trùng tên nhưng các chữ ký thì phải khác nhau Chồng phương thức (Method Overloading):
Thuận tiện cho lập trình vì không cần phải nhớ quá nhiều tên phương thức mà chỉ cần nhớ một tên và lựa chọn các tham số cho phù hợp.
Department of Software Engineering 26
5. Chồng phương thức (3)
Ví dụ 1: Phương thức println() trong System.out.println() có 10 khai báo với các tham số khác nhau: boolean, char[], char, double, float, int, long, Object, String, và một không có tham số.
Department of Software Engineering 27
9
5. 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
1. Trừu trượng hóa dữ liệu
2. Đóng gói và che giấu thông tin
3. Khai báo lớp
4. Các thành viên của lớp
5. Chồng phương thức
6. Gói (package)
Department of Software Engineering 29
6. Gói (package)
Các lớp có thể nhóm lại với nhau thành gói (package) Gói được coi như các thư mục, là nơi tổ chức các lớp Theo quy ước, tên của package được viết bằng
Department of Software Engineering 30
10
6. Gói (2)
a. Lợi ích của package: Giúp tổ chức các lớp vào các đơn vị nhỏ hơn (như là các thư mục), và làm cho việc xác định vị trí trở nên dễ dàng và sử dụng các tập tin của lớp một cách phù hợp. Tránh cho ở mức rộng hơn so với mối quan hệ giữa các lớp. Các tên của gói có thể được sử dụng để nhận dạng các lớp. Các gói cũng có thể chứa các gói khác.
Department of Software Engineering 31
6. Gói (3)
b. Tham chiếu giữa các lớp: Trong cùng 1 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
Lệnh import:
6. Gói (4)
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
6. 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
6. Gói (5)
Các Package cơ bản trong Java java.lang Cung cấp các lớp cơ bản cho thiết kế ngôn ngữ lập trình Java Bao gồm wrapper classes, String và StringBuffer, Object, ... Import ngầm định vào tất cả các lớp java.util Bao gồm tập hợp framework, mô hình sự kiện, date time, và nhiều tiện ích khác java.io Cung cấp khả năng vào / ra hệ thống với các luồng dữ liệu và hệ thống file
Department of Software Engineering 35
6. Gói (5)
Các Package cơ bản trong Java java.math Cung cấp các lớp thực thi các phép toán với số nguyên và các phép toán thập phân java.sql Cung cấp các API cho phép truy nhập và xử lý dữ liệu được lưu trữ trong một nguồn dữ liệu (thường sử dụng cơ sử dữ liệu quan hệ) java.swing Cung cấp các lớp và giao diện cho phép tạo ra các ứng dụng đồ họa. ...
Department of Software Engineering 36
12
Bạn đang đọc truyện trên: Truyen247.Pro