E D R , A S I H C RSS

Indirect Variable Access

Indirect Variable Access

인스턴스 변수의 값을 어떻게 얻어오고 어떻게 셋팅해 줄 것인가?

대부분은 DirectVariableAccess를 사용하면 거의 문제가 없다. 하지만, 각각의 값이 제대로 된것이라는 전제가 되어 있어야 한다. 또한 상속이 될 거 같을때에, DirectVariableAccess는 기능을 바꿔 줄수 없다.

해결책은 항상 getting/setting 메소드를 사용하는 것이다. 즉,
이 대신에,
~cpp 
Point Point::operator+(const Point& aPoint)
{
	return Point(x+aPoint.getX(),y+aPoint.getY());
}
이렇게 쓰자는 것이다.
~cpp 
Point Point::operator+(const Point& aPoint)
{
	return Point(getX()+aPoint.getX(),getY()+aPoint.getY());
}

IndirectVariableAccess를 사용함으로써, 가독성과 단순함을 포기해야 한다.

인스턴스 변수의 접근과 셋팅에 getting method와 setting method를 사용하자.

Point가 있다.
~cpp 
float Point::getX()
{
	return x;
}
float Point::setX(float aNumber)
{
	x = aNumber;
}
상속받은 PolarPoint를 만들고 싶다. x의 값을 얻어올때 재정의를 해주고 싶다.
~cpp 
float PolarPoint::getX()
{
	return radius * cos(theta);
}

두 가지 방법을 혼용해서 쓰지 말자. 한 가지만 확실하게 쓰자.

인수군이 알카노이드를 만들때, 바의 위치를 셋팅해 줄때가 있었다. left, top, right, bottom 이라는 변수를 가지고 있었는데, right는 항상 left + width의 값이 되어야만 했다. 즉 left = ~, right = ~이래야 했었는데, setLeft()안에 left = ~ , right = left + width 이렇게 쓰는 것으로 해결을 봤었다.


위의 예제의 경우는 자기 자신의 멤버를 호출하는 것인지라 바로 매핑되는 예는 아닌 듯. 다른 클래스에서 해당 클래스의 멤버를 사용하는 예제가 좋을듯 한데. --1002


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0971 sec