À
B
À
I 2
XÂY DỰNG LỚPVÀĐÀO TẠO
XÂY
DỰNG
LỚP
VÀ
ĐÀO
TẠO
ĐỐI TƯỢNG JAVA
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
:
M
ô
phỏng
sự
hoạt
động
Bài
toán
:
M
ô
phỏng
sự
hoạt
động
củamộtchiếc đèn pin.
Lâm là sinh viên, anh đang xây dựng
è
chương trình nghiên cứuvề s
ự
hoạt
động củachiếc đèn pin thường dùng.
Qua
tìm
hiểu
Lâm
thấy
có
2
yếu
tố
liên
Pin (Battery)
Đ
è
n (FlashLamp)
Qua
tìm
hiểu
Lâm
thấy
có
2
yếu
tố
liên
quan đến đèn pin là: pin (battery) và
đèn (flashlamp).
Chứa năn
g
lư
ợ
n
g
Sử dụng năng lượng
Pin mang trong mình thông tin về trạng
thái năng lượng củanó.Đèn sẽ sử dụng
p
in đ
ể
cun
g
cấ
p
năn
g
lư
ợ
n
g
cho ho
ạ
t
g ợ g
p
g
p
g
ợ g
ạ
động chiếusáng.Vậycósự tương tác và
trao đổi thông tin giữa đèn và pin.
Vậy theo Anh/chị để biểu diễn chi tiết thông tin cùng sự hoạt động của đèn-pin
và s
ự
tươn
g
tác trao đổi năn
g
lư
ợ
n
g
g
iữa đèn-
p
in
,
Lâm nên làm thế nào?
v1.0011107228
2
ự g g ợ gg
p,
MỤC TIÊU BÀI HỌC
Trình bày được khái niệm về lớp, thuộc tính của lớp, phương thức, đối tượng.
Mô tả cách tạo lớp, thuộc tính và phương thức củalớp, cách tạovà sử dụng
đốitượng trong Java
đối
tượng
trong
Java
.
Xây dựng được chương trình Java có sử dụng lớp với đầy đủ loại thuộc tính,
tạo đối tượng.
v1.0011107228
3
NỘI DUNG
1
Thuộctínhvàcáchthứcmôtả thuộctínhcủa đốitượng trong lớp.
2
Phương thứcvàcáchthứcmôtả phương thứctronglớp.
3
Vấn đề giao tiếpgiữacácđốitượng.
v1.0011107228
4
2.1. THUỘC TÍNH CỦA ĐỐI TƯỢNG
Biến, kiểudữ liệu–Toántử và biểuthức.
1.1
1
Khai báo thuộctínhcủa đốitượng.
1.1
2
Cá h
ấ
à
á
iá
ị
h ộ
íh
ủ
Cá
c
h
truy xu
ấ
tv
à
oc
á
cg
iá
tr
ị
t
h
u
ộ
ct
í
n
h
c
ủ
a
đốitượng.
1.1
3
v1.0011107228
5
2.1.1. BIẾN VÀ KIỂU DỮ LIỆU
• Biến:
Khái niệmdùngđể đạidiệnchomộtvị trí nào đó trong vùng nhớ,nơichứacác
giá trị có thể truy xuất được thông qua tên biến;
Biến
cần
phải
được
khai
báo
trước
khi
sử
dụng
;
Biến
cần
phải
được
khai
báo
trước
khi
sử
dụng
;
Cú pháp khai báo biến:
<kiểudữ liệu> <tên biến>;
Ví dụ biến energy (năng lượng củapin)có kiểusố nguyên:
int energy;
• Quy tắc đặttênbiến:
Tê
biế
hỉ
đượ
ử
d
á
hữ
ái
à
hữ
ố
ký
hiệ
à
ký
hiệ
$
Tê
n
biế
nc
hỉ
đượ
cs
ử
d
ụng c
á
cc
hữ
c
ái
v
à
c
hữ
s
ố
,
ký
hiệ
u
_
v
à
ký
hiệ
u
$
;
Tên biếnkhôngđượcbắt đầubằng chữ số;
T
ên biếnkhôn
g
đư
ợ
ctrùn
g
vớit
ừ
khóa ho
ặ
ccácđ
ị
nh danh đãdùn
g
tron
g
Java
;
g
ợ
g
ặ
ị
g
g
;
Java là ngôn ngữ phân biệtchữ hoa, chữ thường.
• Những quy ước nên tuân theo khi đặttênbiến:
T
ên biếnnêncóýnghĩarõràng;
Tên biếnnênbắt đầubằng chữ cái thường, khi trong tên có nhiềuhơnmộttừ
thì
các
từ
sau
đó
nên
viết
hoa
;
v1.0011107228
6
thì
các
từ
sau
đó
nên
viết
hoa
;
Ví dụ: oddNumber, evenNumber, theBestStudent.
Căn
cứ
vào
vị
trí
khai
báo
biến
ta
có
:
2.1.1. BIẾN VÀ KIỂU DỮ LIỆU (tiếp theo)
Căn
cứ
vào
vị
trí
khai
báo
biến
ta
có
:
•Biếnkhaibáongaytronglớp: thường gọilàcác
trường
.Từđây sẽ là khuôn
mẫutạoracác
biế
n
thuộ
c
đố
i
tượn
g
dùn
g
đ
ể
lưutr
ữ
các
g
iá trị thuộctínhcủa
g
g
g
đốitượng.
•Biến khai báo bên trong phương thứcvàcáckhốilệnh trong đó: thường gọilà
biến
địa
phương
Biến
địa
phương
sẽ
hết
giá
trị
sử
dụng
khi
ra
khỏi
khối
lệnh
biến
địa
phương
.
Biến
địa
phương
sẽ
hết
giá
trị
sử
dụng
khi
ra
khỏi
khối
lệnh
.
•Biếnkhaibáobêntrongvùngdanhsáchcácthamsố củaphương thứchoặc
h
à
m
tạo
:
t
h
ườ
n
g
gọ
il
à
t
h
am
số
hìn
h
t
h
ức
.
à
tạo
t ườ g
gọ
à
ta
số
t ức
v1.0011107228
7
Trong Java, có 2 nhóm kiểudữ liệumàbiếncóthể lưutrữ hoặctruyxuất:
2.1.1. BIẾN VÀ KIỂU DỮ LIỆU (tiếp theo)
Kiểu dữ liệu
Kiểu dữ liệu cơ sở
(Primitive data types)
Kiểu dữ liệu tham chiếu
(Reference data types)
Kiểudữ liệuMô tả
byte
8
-
bit
số
nguyên
có
dấu
Kiểudữ liệuMôtả
Array
Tập
các
phần
tử
thuộc
cùng
byte
8
-
bit
,
số
nguyên
có
dấu
short 16-bit, số nguyên có
dấu
Array
Tập
các
phần
tử
thuộc
cùng
mộtkiểudữ liệu
Class Tậpcácđốitượng có cùng
long 64-bit, số nguyên có
dấu
thuộc tính và hành vi
Interface
int 32-bit, số nguyên có
dấu
float
32
bit
số
thực
v1.0011107228
8
float
32
-
bit
,
số
thực
boolean Lưutrữ giá trịđúng/sai
char
16
-
bit
ký
tự
2.1.2. CÁC PHÉP TOÁN VÀ BIỂU THỨC
•Javachophépsử dụng biếnvớicácgiátrị như là các toán hạng kếthợpvớicác
toán tửđểxây dựng biểuthức.
• Các toán tử cơ bảntrongJavagồm:
Toán tử gán: =, +=, -=, *=, %=
Toán tử số học: +, -, *, /, %
Toán tử quan hệ: <, >, <=, >=, ==, !=
T
oán t
ử
logic: &&, ||, !
Toán tử bitwise: ^, >>, <<
T
oán t
ử
lượng giá: ?:
v1.0011107228
9
2.1.3. MÔ TẢ THUỘC TÍNH CỦA ĐỐI TƯỢNG TRONG LỚP
•
Thuộc
tính
là
những
đặc
điểm
đặc
trưng
của
đối
tượng
thể
hiện
thông
qua
•
Thuộc
tính
là
những
đặc
điểm
đặc
trưng
của
đối
tượng
,
thể
hiện
thông
qua
những giá trị cụ thể.
•S
ử
dụn
g
các trườn
g
đ
ể
lưutr
ữ
g
iá trị thuộctínhcủa đốitượn
g
.Cúphápkhai
g
g
g
g
báo trường:
<bổ_từ_truy_xuất> <kiểu_dữ_liệu> <tên_biến>;
private int energy;
private
int
energy;
Thuộc tính energy của
đốitượng battery
đối
tượng
battery
v1.0011107228
10
2.1.4. ĐẶC ĐIỂM CỦA BIẾN THUỘC ĐỐI TƯỢNG
(INSTANCE VARIABLE)
•Vídụ khai báo các trường name và
energy trong lớp Battery như sau:
•Cáctrường có phạmvihoạt động bên
trong class.
ỗ
ộ
ố
ẽ
•M
ỗ
im
ộ
t đ
ố
itượng khi đượctạoras
ẽ
có một biếnname,và biếnenergy
riên
g,
do v
ậy,
mỗi đốitư
ợ
n
g
p
in man
g
public class Battery {
/
**
g,
ậy,
ợ g
p
g
những giá trị thuộc tính khác nhau.
/
* Fields
*/
private String name;
private int energy;
/
Batter
/
**
* Constructor for objects
of class Battery
*/
public Battery(int energy) {
Batter
y
energy=80
e
nergy=30
public
Battery(int
_
energy)
{
name = "Con tho";
this.energy = _energy;
}
}
energy=50
v1.0011107228
11
energy=40
CÂU HỎI THẢO LUẬN
Vậy
qua
tìm
hiểu
phần
thứ
nhất
bạn
nào
có
thể
cho
tôi
biết
sự
Vậy
qua
tìm
hiểu
phần
thứ
nhất
,
bạn
nào
có
thể
cho
tôi
biết
sự
khác nhau giữabiến địaphương và biếnthuộc đốitượng?
v1.0011107228
12
2.1.5. KHỞI TẠO CÁC GIÁ TRỊ CHO THUỘC TÍNH
•Cácđốitư
ợ
n
g
khi đư
ợ
ct
ạ
oracần
p
hải đư
ợ
ckhởit
ạ
ocác
g
iá tr
ị
ban đầu.
ợ g
ợ
ạ
p
ợ
ạ
g
ị
• Các cách thứckhởitạogiátrị cho thuộc tính:
Khởitạo ngay sau khai báo trường;
KhởitạotrongHàmtạo;
Khởitạotừ các giá trị truyềnvàotừ tham số củaphương thức.
public class Battery {
/
**
Trường energy sẽ có giá trị là -1 với
mọi đốitượng đượctạo
*
Fields
*/
private String name;
private int energy = -1;
/**
mọi
đối
tượng
được
tạo
Trường name sẽ có giá trị “con tho”
khi
khởi
t
từ
hà
t
/**
* Constructor for objects
of class Battery
*/
pub
li
c
B
atte
r
y(
in
t
e
n
e
r
gy)
{
khi
khởi
t
ạo
từ
hà
m
t
ạo.
T
rườn
g
name và ener
gy
có th
ể
được
pub c atte y( t _e e gy) {
name = "Con tho";
this.energy = _energy;
}
}
g
gy
khởitạotừ các giá trị truyềnvàotừ
tham số củaphương thứchoặchàmtạo.
v1.0011107228
13
2.1.6. CÁCH THỨC TRUY XUẤT VÀO THUỘC TÍNH
•
Mặc
định
các
trường
với
chỉ
định
truy
xuất
là
private
sẽ
không
thể
đọc/ghi
được
•
Mặc
định
,
các
trường
với
chỉ
định
truy
xuất
là
private
sẽ
không
thể
đọc/ghi
được
trựctiếptừ các đốitượng bên ngoài.
• Để kiểm soát khả năng truy xuấtvàocácbiếnnàytasử dụng phương pháp gián tiếp
thông qua các cặpphương thức get/set (còn gọi là các getter/setter).
•Nếumộttrường có cả hai phương
public class Battery{
private int energy;
public Battery(){
energ 100
thức get/set thì đượccoilà
trường có đặctínhđọc/ghi.
•
Nếu
một
trường
chỉ
có
phương
energ
y=
100
;
}
public void setEnergy(int value) {
e
ner
gy
=value;
•
Nếu
một
trường
chỉ
có
phương
thứcgetthìcónghĩalàchỉđọc.
•Nếumộttrường chỉ có phương
gy
}
public int getEnergy() {
return energy;
}
thứcsetthìcónghĩalàchỉ ghi.
}
public void decreaseEnergy() {
energy ;
}
v1.0011107228
14
}
PROPERTIES
On passing
'
Finish
'
button:
Goes to Next Slide
On
passing
,
Finish
button:
Goes
to
Next
Slide
On failing, 'Finish' button: Goes to Next Slide
Allow user to leave quiz: At any time
User may view slides after quiz: At any time
User may attempt quiz: Unlimited times
2.2. PHƯƠNG THỨC
Mô tả phương thức.
1.1
1
Giá trị trả về củaphương thức.
1.1
2
Tham số truyềnvàochophương thức.
1.1
3
Các kiểutruyềnthamsố.
1.1
4
Overloading phương thức.
1.1
5
Các cấutrúclậptrìnhcơ bảnsử dụng trong phương thức.
1.1
6
v1.0011107228
16
2.2.1. MÔ TẢ PHƯƠNG THỨC CỦA ĐỐI TƯỢNG TRONG LỚP
ể
•Phương thứclànhững mô tả cách thứcmàquađó đốitượng th
ể
hiệns
ự
hoạt động
hay chứcnăng của chúng.
•
Cú
pháp
khai
báo
phương
thức
:
Cú
pháp
khai
báo
phương
thức
:
Bổ_từ_truy_xuất kiểu_dữ_liệu tên_phương_thức (danh_sách_tham_số) {
//thân phương thức
//thân
phương
thức
}
Ví
d
hươ
thứ
t
lớ
public void decreaseEnergy() {
•
Ví
d
ụ p
hươ
ng
thứ
c
d
ecreaseEnergy()
t
rong
lớ
p Battery
energy ;
}
v1.0011107228
17
2.2.2. TRUY XUẤT VÀO PHƯƠNG THỨC CỦA ĐỐI TƯỢNG
•
Sử
dụng
đối
tượng
tham
chiếu
để
truy
xuất
sử
dụng
các
phương
thức
•
Sử
dụng
đối
tượng
tham
chiếu
để
truy
xuất
,
sử
dụng
các
phương
thức
đượcphéptruyxuất của đốitượng.
•Vídụ:
Tạo đốitượng tham chiếu:
Battery b = new Battery();
Truy xuấtvàophương thứccủa đốitượng:
b.getEnergy();
b
.
d
ecreaseEnergy();
v1.0011107228
18
2.2.3. GIÁ TRỊ TRẢ VỀ CỦA PHƯƠNG THỨC
ể
•Phương thứccóth
ể
có giá trị trả về.
•Cácđốitượng khác có thể nhận đượckếtquả trả về sau lờigọiphương thức.
•
Ví
dụ
:
•
Ví
dụ
:
public int getEnergy() {
r
eturn energy;
Thựchiệnlờigọivànhậngiátrị trả về:
}
int e;
e = b.
g
etEner
gy();
g gy();
v1.0011107228
19
2.2.4. THAM SỐ TRUYỀN VÀO CHO PHƯƠNG THỨC
•
Một
phương
thức
có
thể
có
các
tham
số
truyền
vào
•
Một
phương
thức
có
thể
có
các
tham
số
truyền
vào
.
•Cácthamsố truyềnvàochophương thứccungcấpchophương thức
thông tin mà nó cần trong quá trình xử lý.
•Vídụ:
public void setEnergy(int value) {
T ề
h
ố
khi
h
hiệ
lời
i
e
nergy=value;
}
T
ruy
ề
nt
h
am s
ố
khi
t
h
ực
hiệ
n
lời
gọ
i
:
b.setEnergy(100);
v1.0011107228
20
2.2.5. CÁC KIỂU TRUYỀN THAM SỐ
Căncứ vào kiểudữ liệutruyềnvàochophương thứctacó2kiểutruyềnthamsố:
•
Truyền
tham
trị
:
Áp
dụng
cho
các
kiểu
dữ
liệu
cơ
sở
.
Truyền
tham
trị
:
Áp
dụng
cho
các
kiểu
dữ
liệu
cơ
sở
.
Phương thứcchỉ nhậnbảnsaocácgiátrị từ tham số.
•
Truyền
tham
biến
:
Áp
dụng
cho
các
kiểu
dữ
liệu
tham
chiếu
.
Truyền
tham
biến
:
Áp
dụng
cho
các
kiểu
dữ
liệu
tham
chiếu
.
Giá trị truyền vào chính là các đốitượng tham chiều, do vậy đốitượng có
thể bị thay đổibentrongphương thức.
v1.0011107228
21
2.2.5. TỪ KHÓA THIS
•Từ khóa this giúp tham chiếutới đốitượng hiệnthờitheongữ cảnh.
• Đượcsử dụng để thao tác trong quá trình mô tả lớp, giúp lập trình viên truy
xuất vào các thành phầncủa đốitượng
sẽđược
tạora.
•Vídụ:
public void setEnergy(int value) {
this energy=value;
this
.
energy=value;
}
v1.0011107228
22
CÂU HỎI THẢO LUẬN
ể
Hãy nhìn đoạnmãnày,bạnnàocóth
ể
cho tôi biếttanênsửa đoạnmã
sau thế nào (không được đổitênbiến) để phân biệt đâu là thuộctínhcủa
lớ
p
Batter
y
tron
g
p
hươn
g
thức setEner
gy
.
p
y
g
p g
gy
1: class Battery {
2: int energy;
3: void setEnergy(int energy){
4: energy = energy;
}
5:
}
6:}
v1.0011107228
23
2.2.6. OVERLOADING
•
Java
cho
phép
overloading
các
phương
thức
Tức
là
các
phương
thức
có
thể
trùng
•
Java
cho
phép
overloading
các
phương
thức
.
Tức
là
,
các
phương
thức
có
thể
trùng
tên nhưng phảikhácsố lượng tham số hoặckiểudữ liệutruyềncủathamsố.
•Việcoverloadingtránhđượchiệntượng có nhiềuphương thức có chung mộtngữ
nghĩanhưng lạiphải đặt tên khác nhau.
• Giúp cho ngườilậptrìnhdễ nhớ,dễ truy cậpvàocácphương thứchơn.
•
Ví
dụ
:
•
Ví
dụ
:
public boolean equals(int a, int b) {
return a==b;
}
public boolean equals(int a, int b, int c) {
t(b )
r
e
t
urn
(
a==
b
&& a==c
)
;
}
v1.0011107228
24
2.2.7. CÁC CẤU TRÚC LẬP TRÌNH CƠ BẢN DÙNG TRONG PHƯƠNG THỨC
•Cấutrúcrẽ nhánh.
i
f
if else
if…else if …else
switch case
•Cấutrúclặp.
for
while
do…while
•Lệnh nhảy
break
continue
v1.0011107228
25
return