프로그램 구조
UserInterface 인터페이스
UI의 공통적인 기능을 묶어서 인터페이스로 선언하였다. UI의 변경을 쉽게 해줄 수 있는 장점이 있다. 입력은 input 메소드, 출력은 output 메소드, 종료는 close 메소드로 선언하였다.
Console 클래스
콘솔 환경에서의 UI를 정의하였다. UserInterface 인터페이스의 메소드들을 구현하고 있다. Scanner 클래스를 이용하여 콘솔에서 파일명과 횟수를 입력받도록 하였다.
GUI 클래스
그래픽 환경에서의 UI를 정의하였다. JFileDialog 클래스를 이용해 파일 입력을 쉽게 받도록 하였다. display 메소드는 기본적인 파일 생성 뿐만 아니라 화면상에 JTree 클래스를 이용해 트리 구조를 표시하여 인덱스 구조를 더욱 명확하게 알 수 있도록 하였다.
TwoWordIndex 클래스
이 프로그램의 핵심적 클래스이다. 키워드의 인덱스 구조를 정의 및 다루는 메소드들을 포함하고 있다. addKeyWords 메소드는 키워드 목록을 작성하는 메소드이고, removeUnderCount 메소드는 최소 출현 횟수 이하의 키워드는 삭제하는 메소드이다. sort 메소드는 정렬을 하는 기능을, display 메소드는 파일에 출력하는 기능을 담당하고 있다.
Word 클래스
Prefix와 Suffix의 공통적 속성인 문자열(단어)을 추상 클래스로 묶었다. compareTo 메소드를 구현하여 정렬을 손쉽게 할 수 있도록 하였다.
Prefix 클래스
키워드의 앞 단어를 정의하는 클래스이다. 멤버로 Suffix들의 리스트를 가지고 있다. 리스트는 Iterator 인터페이스를 이용해 탐색을 하였다.
Suffix 클래스
키워드의 뒷 단어를 정의하는 클래스이다. 멤버로 줄 번호를 리스트로 가지고 있다. 줄 번호의 개수는 키워드의 출현 횟수를 뜻한다.
프로그램 실행 예
입력 원문 텍스트
An array of controversial topics, including a proposal to declare the border area a war-free zone, is being discussed ahead of the Oct.2-4 summit between President Roh Moo-hyun and North Korean leader Kim Jong-il.
The summit, the second of its kind, is expected to focus mostly on topics for promoting peninsular peace and, more importantly, those confirming Seoul’s engagement policy toward Pyongyang.
Toward that goal, the government has been considering the extent to which it would discuss nuclear programs with North Korea. Earlier this month, Roh told reporters that, because “the North has already shown it will readily commit to denuclearization, there will be no need to aggravate them by mentioning the programs in the summit.”
The president cited the six-party talks and the latest progress in inspecting and shutting down North Korea’s nuclear facilities as evidence of the communist regime’s renewed commitment.
However, the president’s chief security adviser recently said that North Korea’s denuclearization would inevitably be on the agenda since the whole idea of the summit is to pursue peninsular peace and to promote inter-Korean exchanges.
Yesterday, the government said that the two Koreas may discuss establishing a joint committee to cooperate in reducing conventional weapons.
“We probably would not see immediate results, but such a committee could be meaningful, in that we would open a channel of dialogue with the North on the issue of conventional weapons,” said Kim Jin-moo, a researcher at the Korea Institute for Defense Analyses.
North Korea is estimated to have about twice the number of conventional weapons that the South has, but how formidable the North Korean army is minus nuclear weapons is disputed.
Other contentious issues mentioned so far include whether the government would propose the Demilitarized Zone and the Northern Limit Line as “peace zones.” Contrary to its name, the DMZ is a heavily armed buffer zone, while the NLL is a de-factor border where numerous inter-Korean naval battles - some bloody - have erupted.
The conservative Grand National Party has been reiterating its objection to such peace zones, saying that they would undermine the country’s security.
The GNP is also adamant that Seoul discuss and review Pyongyang’s plans for denuclearization.
Further, the Roh administration may attempt to persuade the North to agree to a peace declaration now, seven years after former president Kim Dae-jung failed, analysts say.
In 2000, Pyongyang refused to sign onto such a declaration.
On the economic front, the government is likely to suggest building more industrial facilities similar to the Gaeseong Industrial Complex where South Korean companies employ North Koreans.
Candidate sites for the second and third complexes are the Haeju or Nampo areas in the North.
“Considering that we are fast heading toward an inter-Korean economic community of some kind, increasing the number of industrial complexes appears to be the way to go,” said Baek Jong-chun, Roh’s top security adviser.
Experts have recommended making more roads and train lines between the two Koreas.
Earlier, the president said he does not expect to reap significant results from the meeting with Kim. He explained that he does not want to burden the people or the next administration by trying to push fresh deals with the North.
The conservatives have argued that Roh’s attitude belies how he is seeking to use the inter-Korean summit as political leverage for the nation’s liberals as they struggle to compete against the GNP’s Lee Myung-bak, the most popular candidate so far in the run-up to the December presidential election.
By Kim Ji-hyun
금지어 목록 텍스트
a an the
he it our she that them they we
are be been can do does has have
is may must shall should was will would
about behind by for in of on onto to
also and as but no not or so such yes
how what when where who why
0 1 2 3 4 5 6 7 8 9
! “ # $ % & ’ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
키워드 최소 출현 횟수
2
출력된 파일
conventional weapons [11, 13, 15]
North Korea [5, 7, 9, 15]
North Korean [1, 15]
peace zones [17, 19]
peninsular peace [3, 9]
security adviser [9, 31]
two Koreas [11, 33]
본 과제를 하면서 느낀 점
본 과제를 하면서 느낀 가장 큰 어려움은 텍스트를 파싱하는 것이었다. 처음엔 텍스트를 토큰 단위로 나누는 것에만 집착한 나머지 글자와 마침표가 붙어있는 것들을 나누려고 하니 코드가 많이 지저분해졌다. 결국엔 정규표현식을 이용해 매칭된 단어나 기호들을 찾아내는 것으로 아이디어를 돌리니 아주 간단해졌다.
또, 제네릭이나 오토박싱/언박싱, foreach구문 등을 상당 부분 사용했다. 하위호환성과 편리함을 놓고 잠시 고민을 했지만 새로운 기능에 손을 들어주었다.
마지막으로, 교수님이 말씀하신 미학적인 프로그램을 위해 고민을 했음에도 불구하고 단점이 눈에 많이 보인다. 하지만 자료구조에 대한 많은 공부를 할 수 있었고 배열과 리스트에 대해 더욱 깊게 이해할 수 있었다. 개인적인 생각으로는 자바의 ArrayList 클래스를 이용하는 것도 좋지만 복습의 측면에서 각자 ArrayList를 구현하고 그것으로 이 과제를 수행하는 것도 나쁘진 않을듯 하다.