2012-10-26 155 views
9

我目前在Squeak環境中學習Smalltalk,並且正在閱讀「Squeak - 快速訪問ObjectLand」。我使用Python和Java的一些先前知識進入面向對象的範例,第36頁上的這一句話讓我想到:面向對象的實施策略

Smalltalk是面嚮對象語言的基於類的實現。

簡短的句子,但很有趣。在OO中,類,對象,實例等所有術語似乎都是明確定義的,並且似乎指向唯一的真正含義,並且您可能會遇到類似「對象是類的實例」的通用語句。
但是你很少聽到實施策略。在這種情況下,面向對象概念的實現是什麼意思?除了類以外,還有OO語言的實現嗎?

回答

9

Javascript是原型基於OO語言的實現。

不是繼承一個類的子類並創建該新類的實例,而是通過克隆原型來繼承行爲。

作爲一個歷史記錄,我應該補充一點,儘管Javascript可能是使用最廣泛的原型語言,但第一個是David Ungar和Randall Smith的Self language

有幾個implementationsprototypes漂浮在Squeak附近。我沒有用過它們,所以我不能評論這些圖書館。

+0

謝謝你的見解! – phineas

+0

這是Smalltalk的另一個原型實現,http://scg.unibe.ch/staff/adriankuhn/protalk實際上將類點指向它自己的對象。據我所知,它是Smalltalk爲Smalltalk提供* native *原型的唯一原型框架。所有其他的實現原型作爲基於Smalltalks類的模型的頂層。 – akuhn

5

我從來沒有見過,但瞭解翡翠,也就是面向對象的,但既不講座,也沒有原型爲基礎,但似乎構造對象「一個接一個」具有特殊構造的幫助:

但是,Emerald對象不需要創建Class對象。在大多數基於對象的系統中,程序員首先指定一個類對象來定義其所有實例的結構和行爲。類對象也響應新的調用來創建新的實例。

相反,Emerald對象是通過執行對象構造函數創建的。對象構造函數是一個Emerald表達式,用於定義對象的表示形式,操作和過程。

參見Andrew Black, Norman Hutchinson, Eric Jul, and Henry Levy: "Object Structure in the Emerald System"