Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 封装要求_Oop_Language Agnostic_Encapsulation_Information Hiding - Fatal编程技术网

Oop 封装要求

Oop 封装要求,oop,language-agnostic,encapsulation,information-hiding,Oop,Language Agnostic,Encapsulation,Information Hiding,根据许多书籍和网站的说法,“封装是OOP最重要的特性之一,用于数据保护”。同样,各国 封装用于将结构化数据对象的值或状态隐藏在类中,防止未经授权的方直接访问它们 但是保护什么呢?这是因为我们自己无知,确保我们以后不会在程序太长或其他因素影响时搞砸吗?基本上,您可以封装数据,以保护它不受任何不应该修改的内容的影响。以Java中的私有类为例,使用getter和setter。这是基本的封装,因为您只允许以给定的方式读取和修改数据,同时保护数据不受任何不必要或意外的修改。封装和“信息隐藏”背后的动机之一

根据许多书籍和网站的说法,“封装是OOP最重要的特性之一,用于数据保护”。同样,各国

封装用于将结构化数据对象的值或状态隐藏在类中,防止未经授权的方直接访问它们


但是保护什么呢?这是因为我们自己无知,确保我们以后不会在程序太长或其他因素影响时搞砸吗?

基本上,您可以封装数据,以保护它不受任何不应该修改的内容的影响。以Java中的私有类为例,使用getter和setter。这是基本的封装,因为您只允许以给定的方式读取和修改数据,同时保护数据不受任何不必要或意外的修改。

封装和“信息隐藏”背后的动机之一是减少耦合,从而降低复杂性,精确地说是圈复杂度,在大型程序中,可能会呈指数级增长,而更高的复杂性意味着出现错误的风险更大。通过防止暴露字段的副作用,您可以减少产生错误的可能性。

如果您提供了一些可用的内容,那么有人会使用它,如果有人使用它,那么您就无法更改它。或者至少,如果没有发现、彻底理解和测试所有使用它的东西,你就无法改变它


如果有东西被私有封装,你只需要担心封装范围内的东西,它应该足够小,更容易理解。

差不多是的。你为java和C++都加上了问题,这不是一件好事。问题应该是语言无关的(我已经做了这个修改),或者如果你想让它特定于一种编程语言,你应该只标记这种语言。如果你看不到一个类的所有内部工作,你可以放心地假设(如果创建该类的程序员知道他们在做什么)你不需要知道内部workings@cameron1024但是,在不了解内部工作原理的情况下,我们自己写东西时不可能出错吗?问题及其(当前)答案都假设封装和信息隐藏总是结合在一起的。没有信息隐藏的封装没有好处吗?@jaco0646信息隐藏强制执行封装建议基于您对OP的回答,建议没有强制执行就没有价值。因此,封装本身似乎没有任何价值。信息隐藏才是最重要的。其他开发人员(包括您未来的自己)可能不同意您的意见,他们可能会犯错误,但他们不会与您作对。你的软件结构很大程度上是关于它如何传达你的意图。谢谢你,我很欣赏你的见解。我想研究这个迂腐的观点,因为封装和信息隐藏经常被不小心地混为一谈。我个人的观点是,封装的好处是内聚,无论封装的工件是隐藏的还是公开的,都会发生内聚。相反,工件可能会单独隐藏(未封装)而失去内聚性。