Tải bản đầy đủ (.pdf) (25 trang)

Tài liệu BÀI 3 TÍNH BAO GÓI TRONG LẬP TRÌNH JAVA potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (502.45 KB, 25 trang )

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
:


Hệ
thống
quản

chuột
máy
tính
Bài
toán
:
Hệ
thống
quản

chuột
máy
tính
Chủ cửa hàng Nam Việt chuyên cung cấpcácloạichuộtmáytínhmuốnxâydựng một
phầnmềm để tiệnchoviệcquảnlý.Quatìmhiểutathấycó2loạichuộtcơ bảnlàchuột
không dây và chuột có dây chúng thuộcloạichuột quang hoặcchuộtlaser.
Mộtyêucầukháclàchủ cửahàngmuốn sau khi xây dựng phầnmềmnàycóthể tái sử
dụng lạimộtsố lớp đốitượng để mình tự viếtmộtsố chương trình khác.
Vậy theo Anh Chị làm thế nào để có thể phân loại để quảnlýđượcthôngtin



về các loạichuột?
V
àlàmsaođ


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

ô
ng

qua

các

từ

khóa

(private
,
public
,
protected, default).
Xây dựng chương trình gồmcáclớpvới các thành phầnsử dụng các từ khóa

đ

hứ
k
truy xu

t
đ
ượct

c
hứ

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

đối
tượng
.
2
Cách thứctổ chứclớpsử dụng Package.
3
Cách
thức
kiểm
soát
truy
xuất
vào
các
thành
phần
của
đối
tượng
3
Cách
thức
kiểm
soát
truy
xuất
vào
các
thành
phần

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

tính
bao
gói)

tính
bao
gói)
.
Chương trình quảnlýchuột được
đóng gói trong đĩaCD.
Người
sử
dụng

thể
sử
dụng
dữ
Người
sử

dụng

thể
sử
dụng
dữ
liệu được đóng gói.
v1.0011107228
5
3.2. TỔ CHỨC LỚP TRONG CÁC PACKAGE
Package và cách thứctổ chứccáclớptrongJava.
1.1
1
Truy
xuất
vào
các
lớp
trong
package
11
2
Truy
xuất
vào
các
lớp
trong
package
.

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

tên
;
 Chia sẻ,táisử dụng và tích hợp.
•Javachophéptổ chứccáclớpvàocác
package. Package là cơ chế tổ chứclớp
giống như tổ chứccâythư mụctrong
máy
tính
.
máy
tính
.
Với bài tập tình huống có thể tổ
chứcquảnlýloạichuộtnhư trên
chức

quản



loại

chuột

như

trên
v1.0011107228
7
Sử

dụng
từ
khóa
package

dòng
đầu
tiên
của
file

nguồn
java
theo
sau

tên
3.2.1. PACKAGE V
À
C
Á
CH TH

C T

CH

C L

P V

À
O PACKAGE (tiếp
theo)
Sử
dụng
từ
khóa
package

dòng
đầu
tiên
của
file

nguồn
java
,
theo
sau

tên
package.
GeniusMouse.java
package ChuotDay.ChuotLaser;
public class GeniusMouse{}
RazerNageMouse.java
package ChuotDay.ChuotQuang;
public class RazerNageMouse{}
public


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
:


Sử
dụng
từ
khóa
import
:
package demo;
import ChuotDay.ChuotLaser.GeniusMouse;
public class PackageDemo{
public

class

PackageDemo{
public void runDemo {
G
eniusMouse
s
=new
G
eniusMouse
();
();
ChuotKhongDay.ChuotLaser.GeniusMouse gen
= new ChuotKhongDay.ChuotLaser.GeniusMouse();
}
}
•Sử dụng tên đầy đủ của một lớp khi có sự xung đột về tên lớp.
v1.0011107228
9

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

ava.
l
ang: c
á
c
lớ
p
thư
v
iệ
nm

c
đị
n
h
đ
ược
i
mpor
t
t
rong c
h
ương
t
r
ì
n
h

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


r

ng
•Cácgóinàyđượcnénvàotrongfilejarđặttrongthư mụclibcủaJDK.Khisử dụng
cần
cung
cấp
CLASSPATH
dẫn
tới
cần
cung
cấp
CLASSPATH
dẫn
tới
.
Sử dụng công cụ jar củaJavangườidùngcóthể tự nén các lớptrongchương trình
thành
một
file
jar
duy
nhất
tiện
cho
việc
chia
sẻ


cài
đặt
.
thành
một
file
jar
duy
nhất
tiện
cho
việc
chia
sẻ

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;

public class Client {
p
ublic void
i
n
p
utMouse()
{
p
p
Scanner scan = new Scanner(System.in);
System.out.println("Name Mouse: ");
String
nameMouse
=
scan
next()
;
String
nameMouse
=
scan
.
next()
;
GeniusMouse gen = new GeniusMouse(nameMouse);
S
ystem.out
.
p

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


Sử
dụng
từ
khóa
truy
xuất
public
•Sử dụng từ khóa truy xuất <default>
•B

n
g
tổ
n
g
k
ết
.
ả g
tổ g
ết
•Cáctừ khóa truy xuất được dùng để điềukhiểncáchthứctruycậpvàocácthành
phầntrongmộtlớp.
•Cáct

khóa truy xuấtcũng quyết định xem mộtthànhphầncủalớpnàycóđược
truy xuấtbởimột thành phầncủalớpkháchaykhông.

Java
cung

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


p
rivate
p
 <default>: không chỉđịnh từ khóa truy xuất
v1.0011107228
12
3.3.1. SỬ DỤNG TỪ KHÓA PUBLIC
package mouse wiredmouse;
•Từ khóa public tạoramức độ truy xuất
lớnnhất.
package

mouse
.
wiredmouse;
public class GeniusMouse {
p
ublic String name;
•Từ khóa public đượcápdụng cho lớp,
interface, trường, hàm tạovàphương thức.
private String publisher;
String description;
public GeniusMouse() {}
public GeniusMouse(String
name, String publisher, String
description) {
this name name;
 Áp dụng cho lớphoặcinterface:Cóthể
truy xuấtvàolớp, interface này từ các

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

13
}
}
3.3.2. SỬ DỤNG TỪ KHÓA PRIVATE
pac
k
age
m
ouse.
wir
ed
m
ouse;

Từ
khóa tạoramức độ truy xuấthẹpnhất.
•Từ khóa private có thể áp dụng cho lớp,
f


à
h
hứ
pac age ouse. ed ouse;
public class GeniusMouse {
public String name;
i t St i bli h
inter
f
ace, trư


ng,

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ể


à
á
lớ
public GeniusMouse(String
name, String publisher, String
description) {
this.name
=
name;
K

ng t
hể
truy xu

tv
à
oc
á
c
lớ
p,
interface này từ các gói khác.

Áp
dụng
cho
trường
hàm
tạo


this.name

name;
this.publisher =
publisher;
this.description =
description;

Áp
dụng
cho
trường
,
hàm
tạo

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

các
thành
phần
này
từ
các lớpkhác.
p
ublic String toString() {
return "Name: " +
this.name;
}
v1.0011107228
14
}
}
3.3.2. SỬ DỤNG CHỈ THỊ TRUY XUẤT MẶC ĐỊNH <DEFAULT>
pac
k
age
m
ouse.
wir
ed
m
ouse;
•Khikhôngchỉđịnh từ khóa truy xuất
thì
java
sẽ
áp

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

s
h
er;
String description;
public GeniusMouse() {}
dụng cho lớp, interface, trường, hàm
tạovàphương thức.

Áp
dụng
cho
lớp
interface
:
Chỉ
public GeniusMouse(String
name, String publisher, String
description) {
this.name
=
name;

Áp
dụng
cho
lớp
,
interface
:
Chỉ

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;

}
v1.0011107228
15
}
}
/
**
VÍ DỤ
/
* Write a description of class Client here.
* Client.java
* @author (your
n
ame)
* @version (a version number or a date)
*/
public class Client {
public static void demoStudent() {
CD
objCD
=
new
CD(
"
MAXELL
"
,
"
DVD
-

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

at Client.main(Client.java:5)
Java Result: 1
CÂU HỎI THẢO LUẬN
Bổ
từ
bli
à
ttd
ó
ì
khá
h
Bổ
từ
pu
bli
cv
à
pro
t
ec
t
e
d
c
ó
g
ì
khá
cn

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


khả
năng
thay
đổi
trạng
thái
giờ
phút
giấy
sau
mỗi
lần

chạy


khả
năng
thay
đổi
trạng
thái
giờ
,
phút
,
giấy
sau
mỗi
lần
chạy
.
•Một đốitượng đầucuốisẽ sử dụng đốitượng đồng hồ và chạytrong
khoảng 1000s.
v1.0011107228
18
BẢNG TÓM TẮT
Elements Visible in
Access
modifier
Elements

Visible


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


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
TÓM LƯỢC CUỐI BÀI
Sau khi học xong bài này chúng ta đã nắm được các kiến thức sau:
•Hiểu được cách tạo gói.
ử ó àá ó ấ ẵ
•S

dụng được g
ó
i đã tạo v
à
c
á
c g
ó
i được cung c

p s


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
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
PROPERTIES
PROPERTIES
Allow user to leave interaction: Anytime
Show ‘Next Slide’ Button: Don't show
Completion Button Label: Next Slide

PROPERTIES
PROPERTIES
Allow user to leave interaction: Anytime
Show ‘Next Slide’ Button: Don't show
Completion Button Label: Next Slide

×