BÀI 3
TÍNH BAO GÓI
TÍNH
BAO
GÓI
TRONG L
Ậ
P TR
Ì
NH JAV
A
Ậ
GIẢNG VIÊN TRẦNTHỊ VÂN
GIẢNG
VIÊN
:
TRẦN
THỊ
VÂN
v1.0011107228
1
TÌNH HUỐNG DẪN NHẬP
Bài
toán
:
có th
ể
tái s
ử
dụng lạimộtsố chương trình
đã đượcxâydựng?
v1.0011107228
2
MỤC TIÊU BÀI HỌC
Trình bày về tính bao gói trong lập trình hướng đối tượng.
Mô tả cách tổ chức lớp sử dụng package và cách thức kiểm soát truy xuất
vào các thành phầncủa đốitượng th
ô
ng qua các từ khóa (private public
vào
các
thành
phần
của
đối
tượng
th
ctrongpac
k
age.
v1.0011107228
3
NỘI DUNG
1
Giới
thiệu
về
tính
bao
gói
trong
lập
trình
hướng
đối
tượng
.
Giới
thiệu
về
tính
bao
gói
trong
lập
trình
hướng
của
đối
tượng
.
v1.0011107228
4
3.1. TÍNH BAO GÓI TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Khả năng truy xuất vào các thành phầncủamột đốitượng trong khi vẫn đảmbảocác
thôngtinriêngtư bên trong đốitượng đượcgọilàtínhchegiấu thông tin (hay còn gọi
là
tính
bao
gói)
là
tính
bao
gói)
.
Chương trình quảnlýchuột được
đóng gói trong đĩaCD.
Người
sử
dụng
có
thể
sử
dụng
dữ
Người
sử
1
.
1
2
v1.0011107228
6
3.2.1. PACKAGE VÀ CÁCH THỨC TỔ CHỨC LỚP VÀO PACKAGE
•Khisố lượng lớpcótrongmột ứng dụng
tăng lên có thể nảysinhcácvấn đề:
Tìm
kiếm
;
Tìm
kiếm
;
Tên lớpdài;
Vấn
đề
lớp
trùng
tên
;
Vấn
đề
lớp
trùng
dụng
từ
khóa
package
ở
dòng
đầu
tiên
của
file
mã
nguồn
java
theo
sau
là
tên
3.2.1. PACKAGE V
À
C
Á
CH TH
Ứ
C T
Ổ
CH
Ứ
C L
Ớ
P V
class
RazerNageMouse{}
GeniusMouse.java
package ChuotKhongDay ChuotLaser;
package
ChuotKhongDay
.
ChuotLaser;
public class GeniusMouse{}
RazerNagaMouse java
RazerNagaMouse
.
java
package ChuotKhongDay.ChuotQuang;
public class RazerNagaMouse{}
v1.0011107228
8
Tổ chức file trong thư mụcTổ chức lớp trong package
3.2.2. TRUY XUẤT VÀO CÁC LỚP TRONG PACKAGE
•
Sử
dụng
từ
khóa
import
:
•
3.2.3. CÁC PACKAGE XÂY DỰNG SẴN
•Nềntảng java cung cấpcholậptrìnhviênmộttậpcácJavaAPIcơ bản để lậptrình
ứng dụng.
á
ó
ả
•C
á
cg
ó
icơ b
ả
n:
java: chứacácgóithư việnchuẩncủajava.
j
l
á
lớ
th
iệ
ặ
đị h
đ
it
t
h
tì h
j
j
j
ava.
java.util: các lớptiệních.Vídụ lớp Scanner giớithiệutrongbài1.
j
hứ
á
ói
thư
iệ
h ẩ
ở
ộ
j
avax: c
hứ
ac
á
cg
ói
thư
v
iệ
nc
h
u
ẩ
nm
ở
cài
đặt
.
thành
một
file
jar
duy
nhất
tiện
cho
việc
chia
sẻ
và
cài
đặt
.
v1.0011107228
10
/
**
3.2.3. CÁC PACKAGE XÂY DỰNG SẴN (tiếptheo)
/
* Write a description of class Client here.
* Client.java
*/
*/
import java.util.Scanner;
import ChuotDay.ChuotLaser.GeniusMouse;
rintln("Name
o
f
g
enius
m
ouse
:
"
+
gen.toString());
}
v1.0011107228
11
}
Đáp án tham khảo
3.3. KIỂM SOÁT TRUY XUẤT
Các t
ừ
khóa truy xuất:
•Sử dụng từ khóa truy xuất private
•
Sử
dụng
từ
khóa
truy
xuất
public
•
cấp
các
mức
truy
xuất
tương
ứng
với
các
từ
khóa
sau
:
•
Java
cung
cấp
các
mức
truy
xuất
tương
ứng
với
các
từ
khóa
sau
:
public
this
.
name
=
name;
this.publisher =
publisher;
this.description =
diti
gói khác.
Áp dụng cho trường, hàm tạovà
ể
d
escr
i
p
ti
on;
}
@
Override
phương thức: Có th
ể
truy xuấtvàocác
thành phầnnàytừ các lớpkhác.
public String toString() {
return "Name: " +
this.name;
}
v1.0011107228
ờ
ng,
hà
mtạov
à
p
h
ương t
hứ
c.
p
r
i
va
t
e
St
r
i
ng pu
bli
s
h
er;
String description;
public GeniusMouse() {}
Áp dụng cho lớpvàinterface:
hô
hể
ấ
và
this.name
name;
this.publisher =
publisher;
this.description =
description;
Áp
dụng
cho
trường
,
hàm
tạo
và
phương thức: Không thể truy xuất
vào
được
các
thành
phần
này
từ
description;
}
@Override
vào
được
dụng
chỉ
thị
truy
xuất
pac age ouse. ed ouse;
public class GeniusMouse {
public String name;
i t St i bli h
thì
java
sẽ
áp
dụng
chỉ
thị
truy
xuất
mặc định default.
•Chỉ thị truy xuấtmặc định có thể áp
pr
i
va
t
e
St
r
i
ng pu
bli
truy xuất đượccáclớp, interface
này khi cùng một package.
this.name
name;
this.publisher =
publisher;
this.description =
description;
Áp dụng cho trường, hàm tạo,
phương thức: Chỉ truy xuất được
từ
các
lớp
trong
cùng
một
description;
}
@Override
từ
các
lớp
trong
cùng
một
package.
public String toString() {
return "Name: " +
this.name;
R
"
,
10
)
;
CD
objCD
new
CD( MAXELL ,
DVD
R,
10
)
;
System.out.println("speed: " + objCD.speed);
System.out.println(“publisher: " + objCD.publisher);
}
}
}
d
10
spee
d
:
10
Exception in thread "main" java.lang.RuntimeException:
Uncompilable source code - publisher has private access in CD
v1.0011107228
16
h
au.
17
CASE STUDY
Mô phỏng sự hoạt động của đồng hồđiệntử:
Lớpcácđốitượng đồng hồ lấy tên là DigitalClock, vớinhững đặc điểm được
ô
ả
m
ô
t
ả
nh
ư
sau:
•Cókhả năng hiểnthị giờ, phút, giây theo định dạng: hh:mm:ss
•
Có
khả
năng
thay
đổi
trạng
thái
giờ
phút
giấy
sau
mỗi
lần
in
Class
Package
Subclass Outside
Class
Package
package
public yes yes yes yes
protected yes yes yes no
private yes no no no
no modifier yes yes no no
v1.0011107228
19
CÂU HỎI THẢO LUẬN
Vì sao cầnsử dụng đến package?
20
PROPERTIES
On passing
'
Finish
'
button:
Goes to Next Slide
On
passing
,
Finish
n.
•
Hiểucáchsử dụng các bổ từ truy xuất: private public
•
Hiểu
cách
sử
dụng
các
bổ
từ
truy
xuất:
private
,
public
,
protected, default.
•Xây dựng ứng dụng phân chia trong các gói khác nhau.
v1.0011107228
22
PROPERTIES
PROPERTIES
Allow user to leave interaction: Anytime
Show ‘Next Slide’ Button: Don't show
Completion Button Label: Next Slide