Ta bi t r ng các lân c n đ u là nh ng
ế ằ
ậ
ề
ữ Actor, song l i không bi t ki u c a chúng là gì: t ng lân c n có th
ạ
ế
ể ủ
ừ
ậ
ể
là Bug, Rock, v.v. Đ tìm t ng đá (Rock), ta s d ng toán t
ể
ả
ử ụ
ử instanceof, v n đ ki m tra xem li u m t
ố
ể ể
ệ
ộ
đ i t
ng có là th c th c a m t l p hay không.
ố ượ
ự
ể ủ
ộ ớ
for
(Actor actor : neighbors) {
if
(actor
instanceof
Rock) {
actor.setColor(Color.blue);
}
}
Đ làm cho toàn b ho t đ ng đ
c, ta c n ph i nh p nh ng l p c n dùng đ n:
ể
ộ
ạ ộ
ượ
ầ
ả
ậ
ữ
ớ ầ
ế
import
info.gridworld.actor.Actor;
import
info.gridworld.actor.Bug;
import
info.gridworld.actor.Rock;
import
info.gridworld.grid.Grid;
import
info.gridworld.grid.Location;
import
java.awt.Color;
import
java.util.ArrayList;
16.2 Giao di n
ệ
GridWorld cũng s d ng các
ử ụ
giao di n
ệ c a Java, b i v y tôi mu n gi i thích ý nghĩa c a chúng. “Giao
ủ
ở ậ
ố
ả
ủ
di n” có nhi u nghĩa trong nh ng ng c nh khác nhau, nh ng trong Java, thu t ng này dùng đ ch
ệ
ề
ữ
ữ ả
ư
ậ
ữ
ể ỉ
m t đ c đi m c th c a ngôn ng : giao di n là m t l i đ nh nghĩa l p mà trong đó các ph
ng th c
ộ ặ
ể
ụ ể ủ
ữ
ệ
ộ ờ ị
ớ
ươ
ứ
không có ph n thân.
ầ
Trong l i đ nh nghĩa l p thông th
ng, m i ph
ng th c có m t nguyên m u và m t ph n thân (xem
ờ ị
ớ
ườ
ỗ
ươ
ứ
ộ
ẫ
ộ
ầ
M c
ụ 8.5). Nguy n m u còn đ c g i là
ễ
ẫ
ượ ọ
ph n
ầ quy đ nh
ị
b i nó quy đ nh tên, các thông s , và ki u tr l i
ở
ị
ố
ể
ả ạ
c a ph
ng th c đó. Ph n thân đ
c g i là
ủ
ươ
ứ
ầ
ượ ọ
ph n th c hi n
ầ
ự
ệ b i nó th c hi n ph n quy đ nh trên.
ở
ự
ệ
ầ
ị
Trong m t giao di n Java, các ph
ng th c không có ph n thân, b i v y giao di n ch quy đ nh các
ộ
ệ
ươ
ứ
ầ
ở ậ
ệ
ỉ
ị
ph
ng th c mà không th c hi n chúng.
ươ
ứ
ự
ệ
Ch ng h n,
ẳ
ạ java.awt.Shape là m t giao di n v i các nguyên m u cho
ộ
ệ
ớ
ẫ
contains, intersects, cùng m t s
ộ ố
ph
ng th c khác.
ươ
ứ
java.awt.Rectangle cung c p ph n th c hi n c a nh ng ph
ng th c này, b i v y ta
ấ
ầ
ự
ệ ủ
ữ
ươ
ứ
ở ậ
nói r ng “Rectangle th c hi n Shape.” Th c ra, dòng đ u tiên c a l i đ nh nghĩa l p
ằ
ự
ệ
ự
ầ
ủ ờ ị
ớ Rectangle là:
public class
Rectangle
extends
Rectangle2D
implements
Shape, Serializable
Rectangle th a k các ph
ng th c t
ừ ế
ươ
ứ ừ Rectangle2D và cung c p ph n th c hi n cho các ph ng th c
ấ
ầ
ự
ệ
ươ
ứ
trong Shape và Serializable.
Trong GridWorld, l p Location th c hi n giao di n
ớ
ự
ệ
ệ java.lang.Comparable b ng cách cung
ằ
c p
ấ compareTo, v n t ng t v i
ố ươ
ự ớ compareCards M c
ở ụ 13.5. GridWorld cũng đ nh nghĩa m t giao di n
ị
ộ
ệ
m i,
ớ Grid, đ quy đ nh các ph ng th c mà m t
ể
ị
ươ
ứ
ộ Grid c n ph i cung c p. Đ ng th i, GridWorld cũng
ầ
ả
ấ
ồ
ờ
bao g m hai ph n th c hi n,
ồ
ầ
ự
ệ BoundedGrid và UnboundedGrid.
Quy n h
ng d n có dùng ch vi t t t
ể
ướ
ẫ
ữ ế ắ API, mà ch đ y đ là “application programming interface”
ữ ầ
ủ
(giao di n l p trình ng d ng). API là m t t p h p các ph
ng thwusc dành s n cho b n, ng
i l p
ệ ậ
ứ
ụ
ộ ậ
ợ
ươ
ẵ
ạ
ườ ậ