程序設(shè)計神器 之 實體

文 |?太陽雪
來源:Python 技術(shù)「ID: pythonall」

程序處理的是概念
程序是什么?
簡單說,程序是處理數(shù)據(jù)的計算機代碼
幾乎所有的程序都可以分為三部分
輸入--> 處理 --> 輸出
程序可以理解成一個加工處理數(shù)據(jù)的過程,或者工具
那么被加工的數(shù)據(jù)又是什么呢?
數(shù)據(jù)有多種形式,如文本、圖像、音頻、視頻等等
無論數(shù)據(jù)形式如何,都代表的是某種信息
大部分信息,可以經(jīng)過數(shù)字化處理,變?yōu)橛嬎銠C里的數(shù)據(jù)
那么信息又是什么呢?
信息就是對某個事物、事情、現(xiàn)象的一種描述
既然是描述,就意味著,其中包含了一些概念
概念是我們思考、認識、交流的重要的元素
如果理解了信息是由一些概念組成的,那么就能理解:
程序處理的實際上是 概念
再進一步,就能理解:
計算機是人類大腦的延伸
我們思考、認識、交流都是基于某些概念的,而且教育的主要就是關(guān)于抽象概念的
概念就是實體
概念表示某種具體或者抽象的事物
任何一個事物,都具有某種特性或者屬性
比如一個人,具有性別、年齡、膚色、國籍等一系列屬性
再比如一個課程,具有名稱、級別、課時、授課老師等一系列屬性
再比如一張圖片,具有大小、尺寸、名稱、存放位置等一系列屬性
看到了嗎,對這些概念的進一步分析,獲取到其中的各種屬性,就能得到這個概念在程序里的表示形式
一個概念在程序里的表現(xiàn)形式就是實體
實體,就就是建立現(xiàn)實世界和計算機世界之間的聯(lián)系的
現(xiàn)實世界里,各個東西都是概念,計算機世界里各種東西都是實體
概念和實體之間是可以相互表示的
前面我們知道了,程序處理的就是概念,那么將概念表示為實體,就可以編寫為程序了
實體之間的關(guān)系
概念之間是有聯(lián)系的,同樣,實體之間也是有聯(lián)系的
相對概念之間的聯(lián)系,實體之間的聯(lián)系更為簡單
只有一對一,一對多,和多對多的聯(lián)系
是不是感覺有點熟悉了,這不就是數(shù)據(jù)庫表之間的聯(lián)系嗎?
沒錯,數(shù)據(jù)庫表實際上是用來存放概念的,比如存放人員信息,課程信息,圖片信息
即它實際上存放的就是實體
日常大多數(shù)程序,并不需要和數(shù)據(jù)庫打交道
但并不意味著不和實體大交道
數(shù)據(jù)庫只是存放實體的一種形式,并且實現(xiàn)了實體之間的一對一和一對多的關(guān)系
一對一,意味著,兩個實體之間是一一對應(yīng)的,比如每個人只有一個身份證(正常情況下),
一對多,意味著,兩種實體之間具有包含的關(guān)系,比如一個家庭,由多個個人組成,或者一個學生可以同時選擇多們課程
這種關(guān)聯(lián)關(guān)系,在程序中會被處理成順序處理,和循環(huán)處理
實體的表示
程序設(shè)計,需要像建筑圖紙一樣表示出來
對于實體,應(yīng)該如何表示呢
通過參考各種資料,特別是學習了 《系統(tǒng)分析與設(shè)計方法》,并結(jié)合工作實踐,我總結(jié)了一套表示實體的方法
在不同的設(shè)計階段,需要用到不同的表示方式
一般分為 概要實體 和 詳細實體
區(qū)別在于,概要實體不用關(guān)注實體的熟悉,而詳細實體,需要關(guān)注實體的屬性
今天我們只討論概要實體
概要實體用一個方框表示:

方框里面寫實體的名稱
實體之間的關(guān)系,用鏈接它們的線條表示

線條兩端,需要特別注意,靠近外面的表示一或者多
一 是一個小短線,多 是三分叉
靠近里面的小圈,表示 0 即可以不存在,小短線表示 1 即表示必須存在
例如第一條線左端,讀作:有且有一個,右端讀作:有且有一個或者多個
第二條線左端,讀作:沒有或僅有一個,右端讀作:沒有或者可以有多個
第三第四咋讀,你可以試試吧,歡迎留言討論
下面我們看一個實際的例子

這幅圖,描繪了一個學校系統(tǒng)的基本結(jié)構(gòu),通過圖示,我們就能輕松的讀取它所傳遞的信息
比如學校必須有一個或者多個班級,班級必須屬于一個學校,
一個班級里可以沒有學生或者有多個學生
一個學生可以不選或者選擇多個課程
一個課程可能沒有學生選擇或者有多個學生選擇
……
如果進一步展開,這些關(guān)系里實際上包含著業(yè)務(wù)規(guī)則,比如一個班級沒有任何學生的狀態(tài)可能是在開學前,還沒學生報名的時間點
以及 不能存在一個沒有班級的學校 等等
而不同的業(yè)務(wù)場景下,規(guī)則是不一樣的,所有實體圖,體現(xiàn)當前的業(yè)務(wù)場景,并不存在適應(yīng)所有場景的實體圖
這就是實體關(guān)系圖,通過它不僅可以方便地記業(yè)務(wù)信息,而且還可以方便地交流
總結(jié)
今天我們梳理了程序設(shè)計中的實體部分,從程序處理的是什么開始,一直引導到程序處理的是概念這個觀點,概念不僅是我們認識世界的工具,也是我們做程序設(shè)計的基礎(chǔ),抓住了實體,就像抓住了程序的綱。
比心!
下次,會討論一下程序設(shè)計的另一個神器:數(shù)據(jù)流
PS:公號內(nèi)回復「Python」即可進入Python 新手學習交流群,一起 100 天計劃!
老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點一下,如果感覺文章內(nèi)容不錯的話,記得分享朋友圈讓更多的人知道!


【代碼獲取方式】
