THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 146

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

ệ ậ

ộ ậ

ươ

ườ ậ