1
Chương
Chương 14
14
C
Cà
ài đ
i đ
t c
t cá
ác đ
c đ
c t
c tí
ính đ
nh đ
truy xu
truy xu
t c
t cá
ác thu
c thu
c t
c tí
ính
nh
Nguy
Nguy
n H
n H
ng Phương
ng Phương
Khoa CNTT,
Khoa CNTT, ĐHBKHN
ĐHBKHN
2
Quan s
Quan sá
át c
t c
u tr
u trú
úc bi
c bi
u di
u di
n m
n m
t v
t v
tr
trí
ít
t
a đ
a đ
struct ScreenPosition{
public ScreenPosition(int x, int y){
X = rangeCheckedX(x);
Y = rangeCheckedY(y);
}
public int X;
public int Y;
private static int rangeCheckedX(int x){
if(x<0 || x>640){ throw new ArgumentOutOfRangeException(“X”);}
return x;
}
private static int rangeCheckedY(int y){
if(y<0 || y>800){ throw new ArgumentOutOfRangeException(“Y”);}
return y;
}
}
3
Gii quyết vn đề
•Các trường nên để private
Thêm các phương thc ly/đặt giá tr để
đọc và ghi giá trcho mi trường
struct ScreenPosition{
......
public int GetX(){ return x; }
public void SetX(int newX){ x = rangeCheckedX(newX); }
// tương tvi y
private static int rangeCheckedX(int x){
......
}
private static int rangeCheckedY(int y){
......
}
private int x,y;
}
4
T
T
n t
n t
i
i
•Nếu dùng các phương thc thì phi viết
mã lnh “dài” hơn là sdng các trưng.
d: tăng giá trta độ X lên 10:
int x = topLeft.GetX();
topLeft.SetX(x+10);
•Mã tương đương nếu trường X là public:
topLeft.X += 10;
Tuy nhiên, nếu sdng trường thì sphá
vtính đóng ca nó.
•Liu có cách nào kết hp: gili tính đóng
trong khi vn cho phép cú pháp ging như
trường ?
5
Kh
Khá
ái ni
i ni
m thu
m thu
c t
c tí
ính
nh
•Sdng thuc tính ging như cách
dùng trường.
•Vmt logic, mt thuc tính ging
như mt trường.
•Trình biên dch st động chuyn
đổi cú pháp ging trường này vào
lnh gi ti các phương thc đặt giá
tr đặc bit.