2012-07-18 117 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