본문 바로가기
C++

oop 프로젝트 8단계 중...

by 상레알 2009. 2. 12.
8단계중

객체의 포인터를 저장하기 위한 용도로 사용할 수 있는 클래스의 선언부이다. 일명 "컨테이너(Continer)클래스" 라고 부른다. 달리 표현하면 "저장소 클래스" 정도가 되겠다(배열 클래스와는 성격이 조금 다르다.)

#ifdef _CONTAINER_H_
#define _CONTAINER_H_
#include "Account.h"
typedef Account* Element;
class Container {
private: Element* arr;
int length;
int aIndex;
public: Container(int len=50);
~container();
void Insert(Element datea);
Element Remove(int idx);
Element GetItem(int idx);
int GetElement() {return aIndex;};
};

Container 클래스의 기능은 객체(객체 포인터)의 저장/삭제 및 참조에 대한 것을 추상화시키는 것이다. 객체를 저장하고자 하는 프로그래머는 누구나 Container 클래스를 사용할 수 있도록 선언되었다. 내부적으로 어떻게 저장이 되고 삭제가 되는지 알 필요도 없다. 다만 다음과 같은사항만 알고 있으면 쉽게 사용이 가능하다.

-객체를 저장할때에는 Insert 함수를 사용한다. 순차적으로 저장이된다.
-n번째(0이 첫번째다) 위치에 저장되어 있는 객체를 소멸할 때는 Remove 함수를 사용한다. Remove 함수 는 삭제된 객체의 포인터를 반환한다.
-n번째(0이 첫 번째다) 위치에 저장된 객체를 참조할 때는 Getitem 함수를 사용한다.
-저장된 객체의 총 개수를 확인하고 싶을 때에는 GetEiemSum 함수를 호출한다.

------ 이러한 유형의 클래스를 사용했다고 가정해 보자. 그렇다면 다음과 같은 장점이 생긴다.
" 객체를 저장하는 방식이 바뀐다고 해도, Container 클래스에만 변경이 생긴다. 다른 클래스들은 전혀 바뀔 필요가 없다. "

그렇다.! 배열의 형태로 객체를 저장하는 구조에서 리스트 형태로 객체의 저장 방식을 변경한다고 해도, Container 클래스 이외의 영역은 절대 변경되지 않는다. 즉 !

확장성이 좋아지는 것이다.