首页 > 代码库 > 软件开发中几个基本概念
软件开发中几个基本概念
软件开发中几个基本概念
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++中的类概念)
软件开发中几个基本概念