대상 지향 프로 그래 밍:자바 의 추상 적 인 데이터 형식

글 출처:인터넷 작성 자:PaleSting/CSDN
본 논문 에서 우 리 는 자바 중의 데이터 유형 을 고찰 할 것 이지 만 추상 적 인 데이터 유형(ADT)의 개념 을 소개 할 것 이다.자바 Collections Framework(자바 집합 구조)를 소개 함으로써 자바 가 정의 하 는 ADT 도 배 울 것 입 니 다.
  
ADT
하나의 ADT 는 저 장 된 데이터 형식 과 이 데이터 형식 에서 만 가능 한 조작 정의 입 니 다.개발 자 들 은 ADT 의 조작 방법 을 통 해 만 ADT 의 속성 을 방문 할 수 있 고 이 데이터 형식 내부 의 각종 조작 이 어떻게 실현 되 는 지 알 지 못 할 것 입 니 다.
  
자바 에서,우 리 는 항상 하나의 인 터 페 이 스 를 사용 하여 이러한 조작 이 실 현 된 세부 사항 을 밝 힐 필요 가 없 는 조작 집합 을 제공한다.하나의 인터페이스 가 하나의 방법 집합 을 정의 하고 자바 류 는 강제 적 인 조건 을 만족 시 키 거나 이 인 터 페 이 스 를 실현 하 는 인 스 턴 스 를 실현 해 야 한 다 는 것 을 기억 하 세 요.
  
  
선형 표,스 택,대기 열
ADT 에 대해 이야기 할 때 선형 표,스 택,대기 열 에 대해 자주 말한다.우 리 는 이러한 데이터 구조의 세부 사항 을 토론 하지 않 을 것 이다.그러나 우 리 는 왜 그것들 이 ADT 라 고 불 리 는 지 토론 할 것 이다.
  
하나의 선형 표 는 유한 한 요소 의 집합 으로 그 요 소 는 선형 방식 으로 배열 하고 그 요소 에 대한 직접적인 접근 을 제공한다.하나의 스 택 은 후진 선 출(LIFO)의 질서 있 는 선형 표 로 요 소 는 스 택 에서 가입 하고 스 택 에서 꺼 냅 니 다.하나의 대기 열 은 먼저 나 온 질서 있 는 선형 표 로 요 소 는 대기 열 끝 에서 가입 하고 대기 열 에서 꺼 냅 니 다.
  
선형 표,스 택 과 대열 의 내부 구 조 는 여러 방식 으로 이 루어 질 수 있다.예 를 들 어 우 리 는 질서 있 는 배열 이나 링크 를 사용 하여 모든 구 조 를 실현 할 수 있다.관건 적 인 것 은 네가 어떻게 그 내부 구 조 를 실현 하든지 간 에 그것 의 대외 인 터 페 이 스 는 항상 변 하지 않 는 다 는 것 이다.이것 은 공공 인터페이스 부분 을 바 꾸 지 않 고 밑바닥 의 실현 과정 을 수정 하거나 업그레이드 할 수 있 게 한다.
자바 집합 구조
자바 2 소프트웨어 개발 패키지(SDK)는 대부분의 상용 ADT 를 지원 하 는 새로운 종 류 를 제공 했다.이들 종 류 는 자바 집합 류(MFC 와 유사 한 집합 류)라 고 불 리 며 협동 작업 을 통 해 자바 집합 구 조 를 형성한다.이 집합 구 조 는 데 이 터 를 이른바 추상 적 인 데 이 터 를 집합 하 는 인터페이스 와 클래스 를 제공 했다.
  
java.util.collection 인 터 페 이 스 는 임의의 그룹의 대상,즉 요 소 를 나타 내 는 데 사 용 됩 니 다.이 인 터 페 이 스 는 추가,삭제,조회 와 같은 기본 적 인 동작 을 제공 합 니 다.Collection 인 터 페 이 스 는 iterator 방법 도 제공 했다.iterator 방법 은 자바 util.Iterator 인터페이스의 인 스 턴 스 를 되 돌려 줍 니 다.Iterator 인 터 페 이 스 는 hasNext,next,remove 방법 을 제공 합 니 다.Iterator 인터페이스 에서 제공 하 는 방법 을 사용 하면 Collection 대상 의 인 스 턴 스 를 처음부터 끝까지 반복 해서 옮 겨 다 니 며 iterator(커서)가 표시 하 는 요 소 를 안전하게 삭제 할 수 있 습 니 다.
  
java.util.AbstractCollection 은 모든 집합 구조 류 의 기초 입 니 다.AbstractCollection 류 는 자바 util.collection 인터페이스 에서 iterator 와 size 방법 을 제외 한 모든 방법 을 제공 합 니 다.이 두 가지 예외 적 인 방법 은 자바 util.AbstractCollection 을 계승 하 는 모든 하위 클래스 에서 이 루어 진다.
  
하나의 인 터 페 이 스 를 실현 하 는 클래스 는 모든 인터페이스 방법 에 대한 실현 을 제공 해 야 한다.집합 구조 중의 일부 인터페이스 방법 은 선택 할 수 있 기 때문에 호출 자 에 게 어떤 방법 이 실현 되 지 않 았 음 을 알 리 는 방법 이 있어 야 한다.선택 할 수 있 는 방법 이 실현 되 고 이 방법 이 실현 되 지 않 았 을 때 Unsupported Operation Exception 이상 을 던 집 니 다.Unsupported Operation Exception 클래스 는 Runtime Exception 클래스 를 계승 합 니 다.이 때문에 호출 자 는 매번 호출 할 때마다 try-catch 쌍 에 넣 지 않 고 모든 집합 작업 을 호출 할 수 있 습 니 다.
  
  
목록 선형 표
List 인 터 페 이 스 는 Collection 인 터 페 이 스 를 계승 하고 같은 요소 가 존재 할 수 있 는 질서 있 는 집합 을 정의 합 니 다.List 인 터 페 이 스 는 하나의 수치 형 색인 값 을 사용 하고 요소 가 선형 표 에 있 는 위 치 를 바탕 으로 Collection 에서 요 소 를 조작 하 는 방법 도 추가 했다.이 동작 들 은 add,get,set,remove 를 포함한다.
List 인 터 페 이 스 는 listIterator 방법 도 제공 했다.이 방법 은 자바 util.ListIterator 인터페이스의 인 스 턴 스 를 되 돌려 줍 니 다.이 인 스 턴 스 는 처음부터 끝까지 선형 표를 옮 겨 다 닐 수 있 습 니 다.java.util.ListIterator 는 java.util.Iterator 인 터 페 이 스 를 계승 하 였 습 니 다.따라서 대표 적 인 Collection 의 요소 에 대한 추가 와 수정 을 지원 합 니 다.
다음 예 는 목록 의 요 소 를 뒤에서 옮 겨 다 니 는 방법 을 보 여 줍 니 다.이 작업 을 완성 하려 면 목록 의 마지막 요 소 를 옮 겨 다 니 기 전에 ListIterator 를 찾 아야 합 니 다.
  
   ListIterator iter = aList.listIterator(aList.size());
   while (iter.hasPrevious())
   System.out.println(iter.previous().toString());
   }
집합 구 조 는 List 인터페이스 에 대한 두 가지 실현 을 제공 합 니 다.LinkedList(링크)와 Array List(배열 목록,즉 정적 목록)입 니 다.이 두 가지 실현 은 모두 그 요소 에 대한 무 작위 접근 을 지원 한다.Array List 인 스 턴 스 는 배열 스타일 의 동작 을 지원 하고 배열 크기 의 변경 작업 을 지원 합 니 다.링크 목록 의 인 스 턴 스 는 목록 의 시작 과 끝 에 요 소 를 추가 하고 삭제 하 며 제공 하 는 명시 적 지원 을 제공 합 니 다.이 새로운 방법 을 사용 하면 프로그래머 가 하나의 linedList 를 스 택 이나 대기 열 로 간단하게 사용 할 수 있 습 니 다.다음 과 같 습 니 다.
  
   LinkedList aQueue = new LinkedList(aCollection);
   aQueue.addFirst(newElement);
   Object   anElement = aQueue.removeLast();
   LinkedList  aStack = new LinkedList(aCollection);
   aStack.addFirst(newElement);
   Object   anElement= aStack.removeFirst();
표 A 의 코드 세 션 은 자바 util.Array List 와 자바 util.LinkedList 를 사용 하여 자바 util.List 인터페이스 에 대한 인 스 턴 스 구현 에 자주 사용 되 는 동작 을 보 여 줍 니 다.이 동작 들 은 요 소 를 추가 하고 무 작위 로 요 소 를 방문 하 며 목록 끝 에 요 소 를 삭제 하 는 것 을 포함 합 니 다.
  
그런 줄 알 고 그 까닭 을 모 르 는 것 이 큰 이익 이다.
ADT 는 대상 의 공공 인터페이스 에서 의 조작 과 그 구체 적 인 실현 을 분리 하 는 강력 한 도 구 를 제공 했다.이 때문에 ADT 의 실현 은 끊임없이 변화 하고 진화 하 는 동시에 공공 인 터 페 이 스 를 변 하지 않 게 유지 할 수 있다.자바 집합 구 조 는 대량의 인터페이스 와 기본 요 소 를 대표 하 는 집합 을 제공 하고 유용 한 ADT 를 만 들 수 있 습 니 다.

좋은 웹페이지 즐겨찾기