C++是個多範式的語言,所以C++難學,所以C++強大,可比起java,C#,用C++來做軟件開發,開發週期要長很多。
爲什麼呢?這是因爲C++的自由度高,換句話說自由度越高地語言,開發軟件的週期越長,這是有一定道理的
自由度過高就不容易掌控,java和C#它們的庫很強大,這在一定程度上就限制了自由度,相當於提供了一套模式,方法,開發人員不需要去爲實現這些東西而操心
然而C++程序員卻需要爲這些費勁心力,這體現在實現細節上。
本文要說的是抽象數據類型,抽象數據類型 ADT
一種重要的數據類型.它是由一組對象和一組在這些對象上的操作所組成,利用數據抽象機制把一個數據類型的表示和操作彙集起來,封裝在一起,定義成一個新的數據類型,這種新的數據類型統稱爲抽象數據類型
這是工具書上給出的定義。
首先是一種類型
其次是對象以及操作這些對象的集合
C++中得類就是對數據和操作的封裝,也就是所謂的抽象數據類型
那麼如何去定義一個抽象數據類型呢?這想必是所有開發者所苦惱的問題,也同樣是本人苦惱的問題。
這裏來談談本人對於這個問題的理解!
抽象這個詞在國語中得解釋是:概括,大概。比如說讀完一本書之後,大概描述一下書中的主體內容思想。這稱之爲抽象。抽象就是抓住本質,根本,同樣地,不變的等等
我們把同類事物的根本的,本質的,相同的,不變的概括出來就叫抽象,C++的抽象也同樣是這樣。
那麼也就是將一類事物相同的屬性,行爲概括出來,然後封裝在一起形成的一個類,就是所謂的抽象數據類型。
上面解釋了抽象和C++抽象的關係,下面就來探討下定義一個抽象數據類型的依據。
抽象數據類型並不是憑空想出來的,就算能想出來,恐怕也不盡人意,定義一個抽象數據類型的依據是:它能做什麼?
做軟件開發,都會先進行需求分析,然後系統設計,劃分功能模塊 ==
如何去完成一個模塊?當然可以更細分一下,每個模塊所要實現的功能有哪些。
這個時候問題就來了,如何去實現這些功能呢?
好,這就回到了上面提出的問題:定義一個抽象數據類型的依據
依據就是:能做什麼。
也就是爲了完成模塊所需要的功能所以才定義相應的抽象數據類型,具體就是根據模塊的功能需求來定義抽象數據類型,利用抽象數據類型的操作來實現模塊的功能。
總結:抽象數據類型是基於模塊要實現的功能,同時用來實現模塊的功能的