1. 程式人生 > >OOM之類、對象、實例、實體之辨析

OOM之類、對象、實例、實體之辨析

有一個 white tro 解釋 you 習慣 解決 有意 會有

一、場景再現 有一個重要的概念你需要弄明白,那就是“類(class)”和“對象(object)”的區別。我用禪語來解釋一下吧: 魚和三文魚有什麽區別? 這個問題有沒有讓你有點暈呢?說真的,坐下來想一分鐘。我的意思是說,魚和三文魚是不一樣,不過它們其實也是一樣的是不是?三文魚是魚的一種,所以說沒什麽不同,不過三文魚又有些特別,它和別的種類的魚的確不一樣,比如三文魚和大比目魚就不一樣。所以三文魚和魚既相同又不同。怪了。 這個問題讓人暈的原因是大部分人不會這樣去思考問題,其實每個人都懂這一點,你無須去思考魚和三文魚的區別,因為你知道它們之間的關系。你知道三文魚是魚的一種,而且魚還有別的種類,根本就沒必要去思考這類問題。 讓我們更進一步,假設你有一只水桶,裏邊有三條三文魚。假設你的好人卡多到沒地方用,於是你給它們分別取名叫Frank, Joe,和Mary。現在想想這個問題: Mary和三文魚有什麽區別?
這個問題一樣的奇怪,但比起魚和三文魚的問題來還好點。你知道Mary是一條三文魚,所以他並沒什麽不同,他只是三文魚的一個“實例(instance)”。Frank和Joe一樣也是三文魚的實例。我的意思是說,它們是由三文魚創建出來的,而且代表著和三文魚一樣的屬性。 所以我們的思維方式是(你可能會有點不習慣):魚是一個“類(class)”,三文魚是一個“類(class)”,而Mary是一個“對象(object)”。仔細想想,然後我再一點一點慢慢解釋給你。 魚是一個“類”,表示它不是一個真正的東西,而是一個用來描述具有同類屬性的實例的概括性詞匯。 你有鰭?你有鰾?你住在水裏?好吧那你就是一條魚。 後來河蟹養殖專家路過,看到你的水桶,於是告訴你:“小夥子,你這些魚是三文魚。” 並且專家還定義了一個新的叫做“三文魚”的“類”,而這個“類”又有它特定的屬性。長鼻子?淺紅色的肉?生活在海洋裏?吃起來味道還可以?那你就是一條三文魚。 最後一個廚師過來了,他跟專家說:“非也非也,你看到的是三文魚,我看到的是Mary,而且我要把Mary和剁椒配一起做一道小菜。”於是你就有了一只叫做Mary的三文魚的“實例(instance)”(三文魚也是魚的一個“實例”),並且你使用了它,這樣它就是一個“對象(object)”。 這會你應該了解了:Mary是三文魚的成員,而三文魚又是魚的成員。這裏的關系式:對象屬於某個類,而某個類又屬於另一個類。

----<上述文本摘抄於:

https://flyouting.gitbooks.io/learn-python-the-hard-way-cn/content/learn-python-the-hard-way-exercise42.html>

二、回歸概念

①對具有相同數據和相同操作的一組相似對象。

對具有相同屬性和行為的一組相似的對象的抽象,類不存在在於真實世界。

----《軟件工程概論》

實例由某個特定的類所描述的一個具體的對象。

----《軟件工程概論》

辨析1【類與實例,類與對象】:類與實例可以看做型值對關系,類與對象也可以看做型值對的關系,實例與對象可以認為等價。

對象:

①在應用領域中有意義的,與所要解決的問題有關系的任何事物,可以是物理實體、人為概念或者是有明確邊界和意義的東西。

對象是對問題領域中某個實體抽象。

----《軟件工程概論》

實例化:用類創建對象的過程叫做實例化。實例化過程的結果是形成一個新的類的實例,一個新的類的具體對象。

----《軟件工程概論》

辨析2:當使用“對象”這個術語時,既可以指一個具體的對象【實例】,也可以泛指一般的對象【類】。但是,當使用“實例” 這個術語時,必然是指一個具體的對象。

----《軟件工程概論》

這也就是為什麽說,Mary是三文魚的一個實例(化)對象,而三文魚是魚類的一個子類的原因。

辨析3【類,對象,實例】:類>=對象>=實例

案例1:Person類是類;

Chinese類是Person類的子類;

Johnny是Person類的一個實例;

Johnny也是Person類的一個對象;

案例2:

String 類String str str是對象(對字符串特征的抽象)String str = "abc"; "abc"是實例,也是對象.


實體:

客觀存在並可相互區別的事物,可以是具體的人、事、物,也可以是抽象的概念、聯系。比如:學生,一個學生,一門課,學生的一次選課,教師與院系的工作關系等。

----《數據庫概論》(實體具有屬性,實體之間具有實體關系,在結構化程序設計方法中,常用E-R圖處理實體及其相關關系)

②實體作為一種數據性對象,與數據庫表與之對應。實體類,反之,對應的類有:業務類,數據處理類等。

實體類:面向對象程序設計方法中的,實體類是所有類的一種類

OOM之類、對象、實例、實體之辨析