2012-07-18 72 views
1

它是公平地说,下面的说法是不完全正确的,考虑到在过程式编程,你可以有本地范围?程序编程和数据暴露

“以程序的程序,数据被暴露于整个程序而在OOPS程序,它是与在对象和其又确保了代码的安全性访问。”

(我是一个学生,我被要求在实习的这个问题采访)

回答

0

我与马克同意,是不完全正确的是“保证了代码的安全性”部分。

面向对象的语言,引擎盖下,做一个程序语言可以做同样的事情:隐藏式定义,然后通过一个指向包含数据与用全球性的结构体。一个例子是C的pthreads库,它使用不透明类型来阻止API的用户修改内部数据结构。 (不透明只是意味着该结构是在一个私人的头文件中定义的,所以用户无法看到里面没有指针的招数。)

但是数据的安全性?不,因为您仍然可以使用指针在不透明结构内达到峰值,甚至可以检查堆栈上的数据。这也适用于C++。黑客仍然可以尝试检查程序的内存(调试器,核心转储和其他技巧)。

+0

嗨webjprgm, 我认为有人命名马克提供了一个答案,但由于某种原因,我没有看到这个答案在这里...我明白有很多方法可以绕过由各种访问修饰符提供的基本安全性OOP语言。但为什么“在程序性程序中,数据暴露于整个程序”是正确的? – 2012-07-18 23:57:21

+0

的OBJ-C,C++或Java将完全拒绝访问私有对象属性。在C,除非你采取针对性措施,隐藏式的声明,一个程序的任何部分都知道结构的内部结构,甚至可以从“外部”声明的程序的其他部分全局得到。 – webjprgm 2012-07-19 04:38:18