을 깨는 나는이 클래스를 가지고있다.방지 캡슐화
하지만 어떻게 방지 할 수 있습니까?
대개 내 코드에서 내 개체의 일부 개인 데이터를 알아야하기 때문에 (비교는 하나의 예입니다), 그 때문에 getters를 사용합니다.
그래서 나는 이런 식으로 뭔가에 클래스를 재 작성 :
class Phone {
private:
string producer, color;
int weight, dimension;
public:
Phone(string &producer, string &color, int &weight, int &dimension):
producer(producer), color(color), weight(weight), dimension(dimension) {};
Phone():
producer(""), color(""), weight(0), dimension(0) {};
virtual ~Phone() {};
bool isTheProducer(string& producer) const { return this->producer == producer };
bool hasWeight(int& weight) const { return this->weight == weight };
bool hasDimension(int& dimension) const { return this->dimension == dimension };
virtual void displayInfo(void) const;
};
이 (나는 실제 개인 가치를 얻을하지 않는 사실에 의해) 더 나은 디자인인가?
실제로 세터없이 게터 뭐가 문제? – ForEveR
"문제"란 무엇을 의미합니까? 나를 위해 첫 번째 코드는 거의 모든 OOP 언어에서 찾을 수있는 완전히 유효한 클래스처럼 보입니다. – BDL
"*이 문제는 getter를 통해 객체의 내부 구현을 노출한다는 사실 때문에 발생합니다."* 그리고 왜 이렇게 나쁜가요? 그들이 전화를 가지고 있고 그것에 접근하는 가장 직접적인 방법 인'무게'또는'차원'을 알고 싶다면. – CoryKramer