E D R , A S I H C RSS

BackLinks search for "JobIterator1"

BackLinks of JobIterator1


Search BackLinks only
Display context of search results
Case-sensitive searching
  • Java/NestingClass
         // Listing 1. JobIterator1.java
         class JobIterator1
         JobIterator1은 Job, Employee, JobIterator1 클래스로 구성된다. Job 클래스는 job 타이틀을 캡슐화 하고 Employee 객체는 고용인(employee) 이름과 직업을 저장하는 배열을 캐슐화 한다. JobIterator1은 Job과 Employee 객체, 그리고 고용인의 이름과 직업을 찍는 main() 메쏘드를 포함한다.
         JobIterator1 클래스는 문제가 있다. 첫째, 완벽하게 끝난 후에 재 시작을 할 수 없다. 하지만, 인덱스의 값을 0으로 초기화 하는 reset() 이라는 함수를 추가함으로써 쉽게 문제를 해결할 수 있을 것이다. 둘째, 좀더 심각한 문제는 하나의 Employee 객체를 위한 여러 개의 반복자(Iterator)를 만드는 것이 불가능하다. 그 문제를 해결하기 위해서, 전형적으로 개발자는 Iterator라는 클래스를 정의한다. 한번의 Iterator 클래스가 끝나고, 프로그램은 새로운 Iterator 객체를 만듬으로써 새로운 반복을 시작할 수 있다. 또한 여러 개의 Iterator 객체를 생성함으로써, 프로그램은 같은 Employee 객체의 job 배열을 여러 번 반복 수행 할 수 있다. Listing2는 JobIterator라 명명한 반복자 클래스의 사용을 보여준다.
         JobIterator2는 JobIterator1과 같은 결과를 출력한다. 하지만 JobIterator2가 Iterator 코드를 Employee 클래스에서 JobIterator 클래스로 옮긴 것이 다르다. 또한, Employee 클래스는 새로운 JobIterator 객체 참조를 리턴할 getJobIterator() 함수를 선언한다. JobIterator와 Employee 클래스는 밀접하게 연관된 클래스라는 것을 인지하자.(JobIterator 클래스의 생성자가 Employee의 private 멤버인 job 배열의 참조를 요구한다)
         비록 JobIterator2가 편리하게 JobIterator1의 문제를 해결했지만, 새로운 프로그램은 새로운 문제를 만들었다. Employee 객체와 깊이 연관된 JobIterator2는 독립적인 JobIterator로써의 역할을 할 수 없게 된다. 비록 우리의 예제에서는 사소한 문제이지만, 중대한 프로그램에서는 심각한 문제일 수 있다. 데이터 공유를 만들기 위해서, 몇몇 클래스들이 완벽하게 다른 클래스들에 의존한다는 것을 인지해야한다. 의존 클래스들을 그들이 의존하는 클래스들 안에 선언해야 할 것이다. Listing3은 JobIterator 클래스를 Employee 클래스 안에 선언하는 방법을 보여준다.
         JobIterator1,JobIterator2와 같은 결과를 출력하는 JobIterator3는 중첩 클래스를 묘사한다. Employee 클래스는 JobIterator 클래스의 선언을 포함한다. JobIterator 중첩의 결과는 JobIterator가 바로 Employee의 private 멤버인 jobs를 접근할 수 있기 때문에 생성자를 요구하지 않는다. JobIterator3 클래스는 더이상 생성자 혹은 jobs 필드를 요구하지 않기 때문에 JobIterator2의 소스 코드보다 다소 명확하다.
Found 1 matching page out of 7540 total pages

You can also click here to search title.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
Processing time 0.0080 sec