Professional Documents
Culture Documents
Bai 03 - Truu Tuong Hoa Va Dong Goi
Bai 03 - Truu Tuong Hoa Va Dong Goi
v Tìm hiểu bản chất, vai trò của trừu tượng hóa
§ Khái niệm, các góc nhìn, so sánh lớp và đối tượng
v Tìm hiểu về Đóng gói
Bài 3: Trừu tượng hóa § Khái niệm đóng gói, che giấu dữ liệu
§ Chỉ định truy cập
và Đóng gói § Phương thức geHer/seHer
v Tìm hiểu cách xây dựng lớp, gói
§ Xây dựng lớp trong Java
§ Quản lý lớp với package
§ Biểu diễn đối tượng, lớp, gói trong UML
1 2
3 4
3 4
1
1.1 Trừu tượng hóa 1.1. Trừu tượng hóa (2)
v Là một trong 4 nguyên lý cơ bản của lập trình HĐT. v Trừu tượng hóa điều khiển:
§ Sử dụng các chương trình con (subprogram) và các luồng
v Là quá trình loại bỏ đi các thông Un ít quan trọng điều khiển (control flow)
và giữ lại những thông Un quan trọng, có ý nghĩa. § Ví dụ: a := (1 + 2) * 5
v 2 loại trừu tượng hóa • Nếu không có trừu tượng hóa điều khiển, LTV phải chỉ ra tất cả các
thanh ghi, các bước tính toán mức nhị phân…
§ Trừu tượng hóa điều khiển
§ Trừu tượng hóa dữ liệu v Trừu tượng hóa dữ liệu:
§ Xử lý dữ liệu theo các cách khác nhau tùy bài toán
Hướng đối tượng
Trừu tượng
Đóng gói
Đa hình
Thừa kế
hóa
5 6
5 6
7 8
7 8
2
Ví dụ: Điện thoại Nokia (2) Ví dụ: Điện thoại Nokia (3)
v Các bài toán khác nhau, yêu cầu mô tả các tính v Có thể trừu tượng hóa nhiều mức.
chất khác nhau về chiếc điện thoại.
9 10
9 10
11 12
11 12
3
Phương thức Lớp vs. Đối tượng
v Phương thức:
§ Xác định các hoạt động chung mà tất cả các thể hiện
Lớp Đối tượng
của lớp có thể thực hiện được.
Lớp là mô hình khái niệm, mô tả Đối tượng là sự vật thật, là thực
§ Xác định cách một đối tượng đáp ứng lại một các thực thể thể thực sự
thông điệp
Lớp như một bản mẫu, định nghĩa Mỗi đối tượng có một lớp xác định
v Thông thường các phương thức sẽ hoạt động trên các thuộc tính và phương thức dữ liệu (thuộc tính) và hành vi
các thuộc bnh và thường làm thay đổi các trạng chung của các đối tượng (phương thức) của nó.
thái của đối tượng.
Dữ liệu của các đối tượng khác
§ Bất kỳ phương thức nào cũng phải thuộc về một nhau là khác nhau
lớp nào đó.
Một lớp là sự trừu tượng hóa của Đối tượng là một thể hiện
§ Ví dụ: Lớp Ô tô có các phương thức một tập các đối tượng (instance) của một lớp
• Tăng tốc
• Giảm tốc
13 14
13 14
borrow borrow
Vu Thi Huong 3. Đóng gói và che giấu dữ liệu
Giang
getAuthorName
getAuthorName
250 pages
Human
computer
interaction
countPages countPages
15 16
15 16
4
Thành phần của lớp Cú pháp khai báo lớp
v Cú pháp khai báo
v Thông tin cần thiết để định nghĩa một lớp
package tenpackage;
§ Tên (Name)
chi_dinh_truy_cap class TenLop {
• Tên lớp nên mô tả đối tượng trong thế giới thật
• Tên lớp nên là số ít, ngắn gọn, và xác định rõ ràng cho sự trừu // Than lop
tượng hóa. }
§ Danh sách các thuộc tính
v Chỉ định truy cập
§ Danh sách các phương thức § Chỉ định truy cập xác định khả năng nhìn thấy được của một thành
phần của chương trình với các thành phần khác của chương trình
String owner; § public: Lớp có thể được truy cập từ bất cứ đâu, kể cả bên
double balance; Khai báo thuộc tính ngoài package chứa lớp đó.
§ Không chỉ định: Lớp chỉ có thể được truy cập từ bên
trong package chứa lớp đó.
Khai báo phương thức package oop.cnpm;
public class Student {
…
}
17 18
17 18
19 20
19 20
5
Khai báo Thuộc tính Khai báo Phương thức
v Cú pháp khai báo thuộc tính: Tương tự khai báo v Khai báo: tương tự khai báo hàm
biến v Cú pháp
chi_dinh_truy_cap kieu tenThuocTinh;
chi_dinh_truy_cap kiểuTrảVề tênPhươngThức (ds tham số) {
v Thuộc tính có thể được khởi tạo khi khai báo. }
// Nội dung phương thức
21 22
21 22
23 24
23 24
6
Ví dụ - Khai báo phương thức Ví dụ - Khai báo lớp
class BankAccount {
private String owner;
public boolean checkOdd(int i) { private double balance;
if (i %2 ==0) public boolean debit(double amount){
return true; if (amount > balance)
else
return false; return false;
} else {
balance -= amount;
public boolean checkOdd(int i) { return true;
return true; }
return false; //error
}
}
public void credit(double amount){
balance += amount;
}
}
25 26
25 26
Chỉ định truy cập cho thành viên của lớp Chỉ định truy cập cho thành viên của lớp
v public: Thuộc tính hoặc phương thức có thể được truy
cập từ bất cứ đâu, kể cả bên ngoài lớp, ngoài gói chứa
lớp đó.
v default/package (không có chỉ định truy cập): Thuộc tính
hoặc phương thức chỉ có thể được truy cập từ bên public Không có private
trong package chứa lớp đó.
v private: Thuộc tính hoặc phương thức chỉ có thể
được truy cập trong phạm vi lớp đó Cùng lớp
v protected: Thuộc tính hoặc phương thức chỉ có thể Cùng gói
được truy cập trong phạm vi lớp đó và từ lớp con kế
thừa của lớp đó. Khác gói
27 28
27 28
7
Chỉ định truy cập cho thành viên của lớp Biểu diễn UML (1/3)
v Lớp (class) được biểu diễn bằng 1 hình chữ nhật
với 3 thành phần:
+ submitFinalGrade()
Khác gói Yes No No § Phương thức + acceptCourseOffering()
+ setMaxLoad()
+ takeSabbatical()
+ teachClass()
29 30
29 30
:Student
Student - name = “M. Modano”
- name - address = “123 Main St.”
- address - studentID = 9
- studentID - dateOfBirth = “03/10/1967”
Objects
- dateOfBirth
sv2:Student
Class
- name = “D. Hatcher”
- address = “456 Oak Ln.”
- studentID = 2
- dateOfBirth = “12/11/1969”
31 32
31 32
8
Nội dung Đóng gói – Encapsulation (1/3)
v Là một trong 4 nguyên lý cơ bản của lập trình HĐT.
v Dữ liệu/thuộc bnh và hành vi/phương thức được
1. Trừu trượng hóa đóng gói trong một lớp.
2. Xây dựng lớp
3. Đóng gói và che giấu dữ liệu Hướng đối tượng
Trừu tượng
Đóng gói
Đa hình
Thừa kế
hóa
33 34
33 34
Client Methods
35 36
35 36
9
Che giấu dữ liệu Che giấu dữ liệu (2)
v Sử dụng phạm vi truy cập để che giấu dữ liệu: v Để truy cập và chỉnh sửa các giá trị của dữ liệu,
tránh thay đổi trái phép hoặc làm sai lệch dữ lớp cần phải cung cấp các phương thức
liệu § Accessor (geHer): Trả về giá trị hiện tại của một thuộc „nh
(dữ liệu)
v Dữ liệu được che giấu ở bên trong lớp bằng § Mutator (seHer): Thay đổi giá trị của một thuộc „nh
cách gán phạm vi truy cập private. Dữ liệu chỉ có § Thường là getX và setX, trong đó X là tên thuộc „nh
thể được truy cập từ các phương thức bên
trong lớp
v 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 các phương thức của
lớp có phạm vi truy cập public.
37 38
37 38
39 40
39 40
10
Ví dụ: phương thức get, set Ví dụ: phương thức get, set (2)
class Student{
private String name;
public String getName() {
return this.name;
class Student{ }
private String name; public void setName(String name)
{
public String getName() { this.name = name;
return this.name; }
}
}
public void setName(String name) class Manager{
private Student[] students;
{
public initialize()
this.name = name; {
students = new Student[10];
} students[0] = new Student();
} //students[0].name = “Hung”; error
students[0].setName(“Hung”);
}
}
41 42
41 42
43 44
43 44
11