return new
Point(x, y);
}
L u ý r ng b n có th dùng
ư
ằ
ạ
ể
new đ t o nên m t đ i t
ng m i, và r i l p t c dùng k t qu này làm giá
ể ạ
ộ ố ượ
ớ
ồ ậ ứ
ế
ả
tr tr l i.
ị ả ạ
9.7 Đ i t
ng có tính thay đ i
ố ượ
ổ
B n có th thay đ i n i dung c a m t đ i t
ng b ng cách vi t l nh gán cho m t trong s nh ng bi n
ạ
ể
ổ ộ
ủ
ộ ố ượ
ằ
ế ệ
ộ
ố
ữ
ế
th c th c a nó. Ch ng h n, đ “d ch chuy n” m t hình ch nh t mà không làm thay đ i kích th
c c a
ự
ể ủ
ẳ
ạ
ể ị
ể
ộ
ữ
ậ
ổ
ướ ủ
nó, b n có th ch nh s a các giá tr
ạ
ể ỉ
ử
ị x và y:
box.x = box.x + 50;
box.y = box.y + 100;
K t qu đ
c bi u di n trên hình:
ế
ả ượ
ể
ễ
Ta có th bao b c đo n mã l nh trên vào m t ph
ng th c r i khái quát hoá nó đ d ch chuy n hình
ể
ọ
ạ
ệ
ộ
ươ
ứ ồ
ể ị
ể
ch nh t đi m t kho ng cách b t kì:
ữ
ậ
ộ
ả
ấ
public static void
moveRect(Rectangle box,
int
dx,
int
dy) {
box.x = box.x + dx;
box.y = box.y + dy;
}
Các bi n
ế dx và dy ch đ nh kho ng cách d ch chuy n hình theo t ng h ng riêng. Vi c kích ho t ph ng
ỉ ị
ả
ị
ể
ừ
ướ
ệ
ạ
ươ
th c này có nh h
ng làm thay đ i
ứ
ả
ưở
ổ Rectangle đ c truy n vào d i d ng tham s .
ượ
ề
ướ ạ
ố
Rectangle box =
new
Rectangle(0, 0, 100, 200);
moveRect(box, 50, 100);
System.out.println(box);
s in ra
ẽ
java.awt.Rectangle[x=50,y=100,width=100,height=200].
Vi c thay đ i các đ i t
ng b ng cách truy n chúng làm tham s cho các ph
ng th c m c dù có th
ệ
ổ
ố ượ
ằ
ề
ố
ươ
ứ
ặ
ể
h u ích, song nó cũng có th gây khó khăn cho vi c g l i vì không ph i lúc nào cũng d th y là vi c
ữ
ể
ệ ỡ ỗ
ả
ễ ấ
ệ
kích ho t m t ph
ng th c có thay đ i các đ i s c a nó hay không. V sau, tôi s th o lu n nh ng u
ạ
ộ
ươ
ứ
ổ
ố ố ủ
ề
ẽ ả
ậ
ữ
ư
nh
c đi m c a phong cách l p trình này.
ượ
ể
ủ
ậ
Java có các ph
ng th c thao tác v i Point và Rectangle. B n có th đ c tài li u
ươ
ứ
ớ
ạ
ể ọ
ệ
ở http://download.oracle.com/javase/6/docs/api/java/awt/Point.html và http://download.oracle.com
/javase/6/docs/api/java/awt/Rectangle.html.
Ch ng h n,
ẳ
ạ translate có hi u ng t a nh
ệ ứ
ự
ư moveRect, song thay vì ph i truy n Rectangle làm đ i s , b n
ả
ề
ố ố ạ
l i dùng kí pháp d u ch m:
ạ
ấ
ấ
box.translate(50, 100);
9.8 Aliasing
Hãy nh r ng khi b n gán m t đ i t
ng vào cho m t bi n, b n đang gán m t
ớ ằ
ạ
ộ ố ượ
ộ
ế
ạ
ộ tham chi u
ế đ n đ i
ế
ố
t
ng. Hoàn toàn có th có nhi u bi n cùng tham chi u t i m t đ i t
ng. Ch ng h n, đo n mã sau:
ượ
ể
ề
ế
ế ớ
ộ ố ượ
ẳ
ạ
ạ