在OOP编程风格中,为什么要隐藏对象';阻止其他人直接访问数据成员

在OOP编程风格中,为什么要隐藏对象';阻止其他人直接访问数据成员,oop,Oop,我只是不知道为什么这是规则。这条规则有什么好处? 你能给我一个例子,我们最好遵循这个规则。它也称为数据隐藏,有助于保持对象的完整性。它可以避免数据被误用和外界干扰。无法直接访问数据,但可以指定访问控制以获取信息。根据需要,数据或对象可以公开或私有。私有数据在对象范围外不可访问。当数据是公共数据时,程序的其他部分可以访问它。数据隐藏的优点之一是它有助于保护您的类不被滥用。你不能相信你的类的用户用它做正确的事情,所以你不可能用它做错误的事情。大多数情况下,让类的用户直接访问其任何成员会使该成员有可能

我只是不知道为什么这是规则。这条规则有什么好处?

你能给我一个例子,我们最好遵循这个规则。

它也称为数据隐藏,有助于保持对象的完整性。它可以避免数据被误用和外界干扰。无法直接访问数据,但可以指定访问控制以获取信息。根据需要,数据或对象可以公开或私有。私有数据在对象范围外不可访问。当数据是公共数据时,程序的其他部分可以访问它。

数据隐藏的优点之一是它有助于保护您的类不被滥用。你不能相信你的类的用户用它做正确的事情,所以你不可能用它做错误的事情。大多数情况下,让类的用户直接访问其任何成员会使该成员有可能被设置为无效或无意义的值,或者设置在错误的时间

更实际的原因之一是,不能更改数据成员的实现。比如说,如果您有一个
size
成员,您可以公开访问该成员,那么稍后您需要让该类实际执行一些操作以响应大小的更改,您就被卡住了。如果您有访问器方法,那么这些方法可以发挥其应有的魔力。

“防止类用户误用”经常被吹捧为封装如此重要的原因

我认为这意味着您正在为其他不受信任的开发人员编写类以供使用,我认为这种情况很少发生。“不受信任的客户”论点混淆了这个问题

大多数情况下,您的类的用户都是“您”和您的团队成员

类的公共方法和属性构成了类与其余代码之间的接口点。界面越小,使用和理解就越容易

封装的原因是使类的接口尽可能小和简洁

如果您的类具有高度的内聚性,并且具有小型接口,那么您很容易“忘记”它们是如何工作的,并将注意力集中在程序的另一部分

以一个发出web请求的类为例。它可能会公开一个公共方法DownloadFile(url)。这个类可能非常复杂,但它的简单接口意味着您可以忘记它的内部工作原理,从而在您的头脑中留出更多空间来专注于您试图解决的问题


反例是一个公开其所有方法的web请求类。它有20种方法,DownloadBegin、DownloadEnd、ChooseProtocol等。所有这些方法都可以在内部使用,但从未打算在外部调用。为了使用这个类,你必须先知道它在内部是如何工作的,然后才能知道调用哪些方法。

它还与关注点的分离有关。如果您有公共接口且数据不是公共的,则可以随时更改数据的表示方式,只更改保存数据的类。如果数据没有隐藏,而您对其进行了更改,则必须更改使用该数据的所有代码。

您想象的数据不存在。