我可以指定是否设置了setter?

时间:2010-08-05 11:08:56

标签: oop setter

这是一个简单的Address类的初始规范。这是一种简化,因为它忽略了复杂性,例如同一建筑物中的公寓可能具有相同的“数字”,
例如29a,29b。

 class Address
    {
    private:
    int number;
    string name;
    string postcode;
    public:
    //getters implemented but ommited 
    };

如果Address被假定为一个实用程序类(可能将来在其他开发人员的其他项目中使用):

// QUESTION
1。对于上面规范中给出的Address的每个属性,说明为Address类配备相应实例变量的setter方法是否合适。在每种情况下给出简短的理由。

伙计这是我的任务中的一个问题所以请不要质疑类地址的设计方式。

4 个答案:

答案 0 :(得分:8)

取决于地址来源。例如,如果您从数据库中读取它,那么我就不会实现setter,因为您不希望人们在没有正确权限的情况下更改数据库值。但是,如果您从用户处读取此数据,则必须考虑用户进行拼写错误和调整或意识到他们输入旧地址或其中任何一个这一事实,并且您必须提供更改。

答案 1 :(得分:5)

对我而言应该是一个不可变的类,所有字段都在构造时设置,并为每个字段设置getter。

答案 2 :(得分:1)

我认为地址应该是不可变的,因为地址本身不能改变。因此,如果某人更改了他的地址,则应附上一个新对象。

不确定这里的“名称”是什么意思,如果它是错误命名的街道或该人的名字。

答案 3 :(得分:0)

我的pov中应该是一个不可变的类,所有字段都在构造时设置,每个字段都有getter。

如果您确实需要在构造后更改地址,请考虑整个字段集的setter,以避免修改单个字段,从而使对象数据不一致。 完全取决于对象的使用。