物件導向建模 = 面向賓語建模 != 主語思維

banq發表於2022-08-28

JavaScript和python不同寫法。

物件導向建模 = 面向賓語建模 != 主語思維

“主語是什麼”是一個重要的哲學課題。
“有無主語?”、
“什麼是主語?”或“主語是什麼?”、
“什麼應該做主語?”、
“主語必須是真實存在嗎?”、
“主語是代指哪個實體?”、
“主語涵括哪類實體?”、
“主語是否需要?”、
“主語存在意義?”
“主語如何命名?”
“主語從何而來?”
“主語的適用範圍上下文是多大?”
“謂語能不需要主語獨立存在嗎?”
“為何人們心理中如此看重主語?”
“主語的宗教情節?”
“存在being能替代主語嗎?”
“主語把節奏帶向何方?”
等命題是一個關鍵哲學課題,會引向不同的節奏。

這種關注語法中主語的思維稱為”主語思維“,物件導向思維中的物件是”賓語思維“,因此主語思維的人不容易做好物件導向程式設計,因為他們太關注主語了,忽視了發現賓語物件的敏感性。主語思維也和上帝思維類似,從上帝視角高高在上俯瞰萬物,忘記自身也是處於當前上下文這個重要的預設,把自己當成上帝,變成了“主”。

例如:”小明借書“,對這個語句進行語法分析,”小明“是主語,”書“是賓語,那麼進行物件導向建模時,物件是”小明“還是”書“?以誰為主?
如果你是”主語思維“,有可能認為主語”小明“是物件導向中的那個物件實體:首先建立”小明“這個使用者物件,然後將”借書“這個動作作為”小明“物件裡的方法。
好像很完美,這個物件設計表達了”小明借書“這個語義需求。
但這是主語思維遮蔽了自己眼睛:主語思維讓你忽視上下文場景,將”小明借書“變成一個僵化的、脫離上下文的、抽象的、正確的”廢話“。

那麼,讓我們用演繹方法對”小明借書“這個語句進行邏輯演繹,”小明“和”書“兩個都是物件實體,因此有兩個實體,那麼,借書這個行為放在哪個物件中呢?物件導向中物件是”Object“,代表客觀物件,其對應詞語是”subject“,Subject/Object的意思是:主體/物件或主體/賓語,因此賓語常作為Object,那麼如何設計賓語”書“作為一個主要物件實體?並將”借書“這個動作放入其中?

這時,上下文場景概念出來了:在”借書“這個場景中,賓語”書“是我們主要的面向的物件實體;而在”使用者資料管理“這個場景中,”小明“作為一個使用者(賓語)被管理,”資料系統管理小明使用者“。

所以,”物件導向“實際是對”主語思維“的純理性批判,需要從邏輯上推敲每個主語,這個主語是不是專有詞語?還是存在一定上下文限制?如果是通用的名詞術語是否已經經過科學論證的?不要讓任何人物或事物隨意佔據自己心中的主語位置,當然也不要將自己作為自己的主語,每次說話都以”我如何如何“表述,存在感雖然很強,但...。

總之,對”主語“的考究是一個人理性懷疑精神的象徵,是科學建模的第一步。

相關文章