如何在对另一个函数可见的同时隐藏对象的某些成员?

时间:2013-12-04 17:40:56

标签: oop

我通常使用C编程语言。在OO编程中,对我来说不方便。我希望对象中成员的可见性依赖于函数的要求。说,

class Aclass{
 int i;
 float x;
} A;

功能

float f(Aclass &A) {
  cout<<"A.x="<< x <<endl;
}

我希望实际上只有x对f可见。

但是对于功能

float I(Aclass &A) {
  cout<<"A.i="<< A.i <<endl;
}

我只希望我能看到我。

在更现实的情况下,一个对象有很多成员。如何让不同功能的成员看到不同的部分?

1 个答案:

答案 0 :(得分:2)

  

在更现实的情况下,一个对象有很多成员。

听起来这个对象需要分解成多个对象。

  

如何让不同功能的成员可以看到不同的成员?

通过将功能重构为单独的对象。如果一个对象做了很多事情,你发现很难将该对象的一个​​责任与另一个对象隔离开来,那么该对象正在做太多事情

一般来说,赞成许多小而简单的物体而不是几个大而复杂的物体。保持关注点分离,依赖关系孤立。你所描述的是一个不能正确区分问题的典型例子。如果函数A()不应该知道成员i那么它们是两个不属于同一个对象的独立问题。

查看S.O.L.I.D. Principles有关隔离依赖关系和分离关注点的一般指导原则。