標籤:style color io java ar strong 檔案 資料 div
軟體開發中幾個基本概念
Peixu.Zhu
自己真的深切理解那些經常掛在嘴邊的概念嗎?
抽象 Abstract
抽象的特點是僅存在于思想和理論之中,而非物理或者具體的存在。(不是指C++中的抽象類別)
抽象是永存的,不會隨著時空而發生變化。
具體 Concrete
具體的特點是物化的或者是具備物理形態,是真實存在的。
具體不是永存的,是隨著時空而發生變化的,僅存於具體的時空之中。
具體和抽象的最大區別是是否隨著時空而發生變化,即是否存在於我們的四維空間。
實體 Entity
實體是單獨的個體事物( individual thing ),劃分以及識別的單元。
抽象實體指抽象的個體事物,而具體實體指具體的個體事物,不僅僅是物理存在的,而且可以是法律的,經濟的,或者政治的實體。
屬性 Attribute
具體實體和抽象實體之間的對應關係,描述了具體實體的某種性質,度量,品質。
通過屬性描述出一個具體的實體。
標識 Identify
感知實在世界的元表示(唯一且不可再析),確定了一個具體實體在時空變化中的不變特性,即我們通過標識在不斷的時空變化中識別出某個具體的事物。
快照 Snapshot
某個特定時間點一個具體實體的所有屬性的集合。
類別 Species
本質上等價的實體的共同特性(common properties)(的集合?)。
語境:它們都有 xxx 特性
抽象類別:自然數,顏色
具體類別:男人,州
某個實體所屬的類別決定了該實體的構建和存在方式。(類似於C++中的類class/struct/union)
類屬 Genus
用以描述某些方面相同的類別。(類似於 C++中的模版類template class,或者Java中的 generic class)
一個實體屬於某個類別,一個類別屬於某個類屬,一個實體可以屬於多個類屬,每個類屬描述某些特性。
同時,某個類別,某個類屬也是一個抽象實體。
函數 Function
將若干個類別的抽象實體(參數Arguments)關聯到某個類別的抽象實體(結果Result)的一個規則。
函數的輸入與輸出都是抽象實體。
於電腦上的實現而言,一個函數是值的映射,而且值不依賴於在記憶體中的地址。
一個函數的參數被等值替換後能映射到相同的結果的,則該函數是正則(Regular)的。非正則函數則要求參數是等表示替換。
資料 Datum
0/1 位的有限序列。
一個資料若且唯若其能表示一個抽象實體的時候,方被稱為對該實值型別是良態的。
值 Value
一個類別到一個資料集的對應被稱為實值型別(Value type)。 類別 : 資料集
某個實體的對應的資料就是這個實體的表示(Reprensentation),而這實體就是這個資料的解釋(Interpretation)。
一個資料及其解釋就是值(Value)。值 =資料 + 解釋,即屬於某個類別的0/1的有限序列。
當一個實值型別的值表示所屬類別的抽象實體的一個真子集的時候,稱該實值型別是真部分的(比如int),否則稱為全部的(比如 bool)。
當每個抽象實體都至多隻有一個值的時候該實值型別被稱為唯一表示的。
當某個值有一個以上的解釋時則該實值型別是歧義的。
等值,等表示
某個值類別的兩個值若且唯若它們表示同一抽象實體的時候這2個值才是等值(Equal)的。
當這2個值的0/1位序列是一樣的時候才稱為等表示(representationally equal)的。
唯一表示的實值型別:等值 → 等表示
無歧義的實值型別: 等表示 → 等值
對象 Object
對象指一個具體實體在記憶體中作為一個值的表示(有限的0/1序列)。也就是說,對象是針對具體實體的。一個對象的狀態即具體實體的快照,同時,一個對象還擁有資源,比如記憶體,檔案記錄等用以保持其狀態(比如,持久化對象)。任一對象皆有一個唯一的起始地址,以此擷取其所有資源。(聯想一下C++的記憶體物件模型)
值在不同的電腦以及不同的實現中是獨立的不變的,而對象則是依具體的實現而定,因為值是抽象的,而對象是具體的。
對象是可變的,故可用來表示具體實體,只要依時空而變其值即可,也可以用來表示抽象實體,只要保持不變即可。
實體有標識,故對象也需要標識。
同一物件類型的兩個對象的狀態是相同的即表示它們是相同的。
實體↔值↔對象
物件類型 Object Type
在記憶體中儲存與修改對象值的模式,每一個對象都屬於某個物件類型。(聯想一下C++中的類概念)
軟體開發中幾個基本概念