Procedural programming 程序编程和数据公开

Procedural programming 程序编程和数据公开,procedural-programming,Procedural Programming,考虑到在过程编程中可以使用局部范围,可以公平地说下面的语句不完全正确吗 在过程程序中,数据向整个程序公开,而在OOPs程序中,数据可通过对象访问,从而确保代码的安全性 (我是一名学生,在一次实习面试中被问到这个问题)我同意Mark的观点,不完全正确的部分是“确保代码的安全性” 在后台,面向对象语言可以做与过程语言相同的事情:隐藏类型定义,然后传递指向包含数据的结构的指针,而不是使用全局函数。C的pthreads库就是一个例子,它使用不透明类型来防止API用户修改内部数据结构。(不透明只是意味着结

考虑到在过程编程中可以使用局部范围,可以公平地说下面的语句不完全正确吗

在过程程序中,数据向整个程序公开,而在OOPs程序中,数据可通过对象访问,从而确保代码的安全性


(我是一名学生,在一次实习面试中被问到这个问题)

我同意Mark的观点,不完全正确的部分是“确保代码的安全性”

在后台,面向对象语言可以做与过程语言相同的事情:隐藏类型定义,然后传递指向包含数据的结构的指针,而不是使用全局函数。C的pthreads库就是一个例子,它使用不透明类型来防止API用户修改内部数据结构。(不透明只是意味着结构是在私有头中定义的,因此如果没有指针技巧,用户就看不到它的内部。)


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

嗨,webjprgm,我想是一个叫Mark的人提供了答案,但出于某种原因,我在这里看不到答案。。。我知道有很多方法可以绕过OOP语言中各种访问修饰符提供的基本安全性。但是为什么“在程序中,数据暴露于整个程序”是正确的?Obj-C,C++或java将完全拒绝访问私有对象属性。在C语言中,除非采取特定措施隐藏类型声明,否则程序的任何部分都知道结构的内部结构,甚至可以通过“extern”声明从程序的其他部分获取全局。