。공부 。

<JESS> Jess 에서 Java클래스를 사용해보자.

kyoe 2008. 8. 8. 21:08
Jess 라는 인공지능 프로그램은 Java의 모든클래스를 객체화하여 사용할수 있다.
그 방법또한 어렵지 않아 쉽고 간단하게 객체를 만들어 사용할 수 있다.

- Java의 파일클래스를 객체화하여 사용하기 -
(bind ?file (new java.io.File file.txt))
(bind ?fr (new java.io.FileReader ?file))
(bind ?br (new java.io.BufferedReader ?fr))

(bind ?a (call ?br readLine))
(bind ?b (call ?br readLine))
(bind ?c (call ?br readLine))
(bind ?d (call ?br readLine))

(printout t"A : " ?a crlf)
(printout t"B : " ?b crlf)
(printout t"C : " ?c crlf)
(printout t"D : " ?d crlf)

jess에서는 변수타입과 객체형태가 따로 존재하지 않기 때문에 변수에 값을 할당할때 쓰이는
bind 키워드를 사용하여 자바클래스를 호출하여 만들어진 객체를 담을수있게 된다.
(bind ?file (new java.io.File file.txt))
위의 소스는 자바의 파일클래스 new키워드를 사용해 객체를 만드는 방법이다.
만약 자바였다면 File file = new File("file.txt"); 이런식으로 객체를 만들테지만 jess에는 위에서 설명했듯이 따로 변수타입이나 객체형태가 존재하지 않기 때문에  bind 키워드를 사용해 변수인 ?file에 File객체를 담을수 있게 된다.

위의 세줄은 파일클래스 ?file를 FileReader에 연결해 기능을 확장하고 BufferedReader클래스에 FileReader 클래스 객체인 ?fr을 연결해 버퍼단위로 데이터를 불러올수있는 최종 파일개체인 ?br객체를 만드는 과정이다.

자. 이젠 다만들어진 객체를 활용해 볼 차례지요.
파일객체에는 다양한 메소드들이 많습니다. 이번에 써볼 메소드는 제가 테스트를 할때 주로 쓰는 readLine() 메소드를 호출해 file.txt 안의 데이터를 불러와 봤습니다.

(bind ?a (call ?br readLine))
메소드를 불러들일때 사용하는 키워드는 'call' 입니다.
call 키워드를 사용해 ?br객체를 호출하고 객체의 readLine메소드를 사용한다는 뜻이죠
readLine메소드를 이용해 불러들인 데이터는 변수 ?a에 저장 되게 됩니다.

마지막 4줄은 단순히 불러들인 데이터를 변수별로 출력하게 됩니다.

이런식이로 자바의 모든클래스를 사용할수있습니다. 똑같은 방법으로 말이죠
하지만 제가 직접만든 클래스를 jess에서 객체화 하려고 했는데 잘 되질 않더군요..
객체화하는 방법이 분명 있을텐데말이죠.. 흠...