E D R , A S I H C RSS

Collection Parameter

Collecting Parameter

몇몇 메소드� 결과와 협력하는 콜렉션� 어떻게 리턴할것�가?(?)

ComposedMethod� 단�중 하나는, 작� 메소드들 사�� 연관때문�다. � 메소드 하나�서 공유�었� 임시 변수들�, �제는 작� 메소드들 사�� 공유�다. 가장 해결하기 쉬운 방법� ComposedMethod를 없애고 다시 하나� � 메소드� 다 때려넣는 것�지만, 안좋다. � 다른 해결책으로는 � 작� 메소드들 사��서 공유�는 임시 변수를 멤버변수� 넣는 것�다. �것� �체� �명기간 �안 유효한게 아니�, 저 메소드들� 실행�때�만 유효하다. 역시 안좋다.

우리� 해결책�, 메소드들마다 필요한 파�메터들� 넘겨주는 것�다. �것� 좀 �설여지는 방법�긴 하나, 다른 것들보단 낫다.

ì–´ë–¤ 콜렉션ì�˜ 기혼남과 미혼녀를 ì¶”ìœí•´ë‚´ëŠ” 코드를 ë³´ìž�.
~cpp 
vector<People> marriedMenAndUnmarriedWomen()
{
	vector<People> result;
	for(vector<People>::iterator it = result.begin() ; it != result.end() ; ++it)
	{
		if(it->isMarried() and it->isMan())
			result.add(*it);
	}
	for(vector<People>::iterator it = result.begin() ; it != result.end() ; ++it)
	{
		if(it->isUnmarried() and it->isWoman())
			result.add(*it);
	}
	return result;
}
ComposedMethod를 �용해보�.
~cpp 
vector<People> marriedMen()
{
	vector<People> result;
	for(vector<People>::iterator it = result.begin() ; it != result.end() ; ++it)
	{
		if(it->isMarried() and it->isMan())
			result.add(*it);
	}
	return result;
}
vector<People> unmarriedMen()
{
	vector<People> result;
	for(vector<People>::iterator it = result.begin() ; it != result.end() ; ++it)
	{
		if(it->isUnmarried() and it->isWoman())
			result.add(*it);
	}
	return result;
}
vector<People> marriedMenAndUnmarriedWomen()
{
	return marriedMen() + unmarriedMen();	// �지 안�지는 모르겠지만 �다고 가정하�.
}

콜렉션� 리턴하지 �고 ��� 콜렉션� �하�.
~cpp 
vector<People> marriedMenAndUnmarriedWomen()
{
	vector<People> result;
	addMarriedMenTo(result);
	addUnmarriedWomenTo(result);
	return result;
}

void addMarriedMen(vector<People>& aCollection)
{
	for(vector<People>::iterator it = result.begin() ; it != result.end() ; ++it)
	{
		if(it->isMarried() and it->isMan())
			aCollection.add(*it);
	}
}
void addUnmarriedMen(vector<People>& aCollection)
{
	for(vector<People>::iterator it = result.begin() ; it != result.end() ; ++it)
	{
		if(it->isUnmarried() and it->isWoman())
			aCollection.add(*it);
	}
}

즉, � 메소드� 결과를 모으는 경우��, 그리 �한 경우는 아니였�걸로 기억. 약간� 다르긴 하지만 나� 경우 CollectionParameter � 성격으로 필요한 경우가 read/write 등 I/O 가 내부�으로 필요할때 �는 Serialization 등� �� 필요할때. 그 경우 I/O 부분� Stream �래스로 만들고(C++ � Stream � 쓰�지 �는 �접 Stream �래스 만들어 쓰�지) parameter 로 넘겨주고 그 파�메터� 메소드를 사용하는 형태였�. --1002


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:57
Processing time 0.0054 sec