【20200919】編程基礎(chǔ),結(jié)構(gòu)(Struct)

1. 介紹

1.1 介紹

前面我們學(xué)習(xí)了編程的入門課程,了解的編程語言的基本語法,知道編程語言的基本要素。

今天開始福哥開始給大家講編程的基礎(chǔ)知識,這個基礎(chǔ)知識是用來提高編程水平的知識,基礎(chǔ)知識每種編程語言的差異會比較大,所以福哥在講解某一種編程語言的某一特性的時候,會標(biāo)明這種特性針對的是哪一種編程語言,只想學(xué)習(xí)某一種編程語言的童鞋可以有選擇的學(xué)習(xí)。

第一課是公共知識,所以就沒有標(biāo)明是哪一種編程語言,這一課講的主題是結(jié)構(gòu)(Struct),這是一個輕松的話題,了解結(jié)構(gòu)可以幫助我們樹立一個框架性的概念,對編寫各種級別的項目會有一個基本概念。

2. 結(jié)構(gòu)層級

結(jié)構(gòu)層級指的是在編程領(lǐng)域,小到一個函數(shù),大到一個解決方案,它們之間都是存在這一系列層級關(guān)系的,從大到小的順序是:

解決方案(Solution),針對一個大的需求給出的一整套解決方案,它可能是一個或多個項目工程組成

項目工程(Project),針對一個特定的領(lǐng)域的一個獨立的程序或庫,它可能是一個或多個模塊組成

模塊(Module),針對一個具體的解決一個特定功能的需求的對象模型,它可能是一個或多個對象組成

對象(Class),針對一個具體的實體對象的定義,它包含這個實體對象的屬性組和方法組

函數(shù)(Function),針對一個具體的行為的定義,它是實現(xiàn)這個行為得到具體邏輯

3. 數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)指的是包含若干屬性的一個 獨立的數(shù)據(jù)模型,在c語言里可以使用struct定義數(shù)據(jù)結(jié)構(gòu),在c++語言里可以使用class定義數(shù)據(jù)結(jié)構(gòu),在java語言里也是使用class定義數(shù)據(jù)結(jié)構(gòu),在php語言里除了可以使用class定義數(shù)據(jù)結(jié)構(gòu)外,還可以使用php獨有的array來定義數(shù)據(jù)結(jié)構(gòu)。

3.1 數(shù)據(jù)結(jié)構(gòu)和變量

數(shù)據(jù)結(jié)構(gòu)是一組變量的集合體,數(shù)據(jù)結(jié)構(gòu)的實例可以作為普通變量傳遞給函數(shù)使用,數(shù)據(jù)結(jié)構(gòu)比較變量的優(yōu)勢有很多,諸如:

攜帶更多的變量,傳遞能力更強大

抽象實體,可以根據(jù)實體的屬性模擬定義抽象實體,這個是對象(class)的精髓

便于維護,通過一個實例可以將一眾變量一起帶著走,這種特性使得編寫代碼變得很優(yōu)雅

3.2 數(shù)據(jù)結(jié)構(gòu)和對象

數(shù)據(jù)結(jié)構(gòu)在沒有對象的c語言是用struct定義的,在c++和java、php等支持對象的語言里和普通對象的區(qū)別就只有一條,就是作為數(shù)據(jù)結(jié)構(gòu)的對象是沒有任何方法定義的,它只作為一組屬性的集合體存在。

4. 實體對象

實體對象(Entity)是設(shè)計模式里的一個概念,這種設(shè)計模式倡導(dǎo)的是所有需要存儲的數(shù)據(jù)都要歸類到一個實體對象里,存儲數(shù)據(jù)的只能是實體對象,讀取數(shù)據(jù)也只能從實體對象的屬性里獲取,這是OOP編程思想的思維,是比較先進的設(shè)計思想。

4.1 c/c++示例

在c/c++里,大家更加習(xí)慣使用struct這種數(shù)據(jù)結(jié)構(gòu)語法定義實體對象

typedef?struct?T_TFUser?{

????int?userId;

????string?userName;

};

在c/c++里的struct就是一個類型,我們可以通過這個struct聲明變量

4.2 java示例

在java里,實體對象會被放入entity包下面,并且使用setter/getter為實體對象增加讀寫能力

@Data

public?class?TFUser?{

????private?Integer?userId;

????private?String?userName;

}

在java里的entity就是一個class,我們可以通過這個class聲明變量

4.3 php示例

在php里,實體對象就是php的數(shù)組

$TFUser?=?array(

????'userId'=>35,

????'userName'=>"福哥"

);

4.4 python示例

在python里,實體對象就是dict(字典)

TFUser?=?{

????"userId":35,

????"userName":"福哥"

}

4.5 javascript示例

在javascript里,實體對象就是object對象

var?TFUser?=?{

????userId:?0,

????userName:?"福哥"

};

5. 總結(jié)

了解了結(jié)構(gòu)層級,就知道一個網(wǎng)站,一個軟件背后有多少代碼了,就可以大概估算出一個需求的工作量了,培養(yǎng)這個經(jīng)驗對于評估項目復(fù)雜度,評估項目周期,是非常有幫助的。

理解數(shù)據(jù)結(jié)構(gòu)的意義,熟練使用實體對象,有助于幫助我們設(shè)計我們的程序代碼結(jié)構(gòu),在功能不斷更新迭代當(dāng)中也不會變得混亂不堪。

【20200919】編程基礎(chǔ),結(jié)構(gòu)(Struct) 第 1 頁 - 鬼谷子叔叔的主頁 - 同福網(wǎng) - TONGFU.net

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容