抽象編程是通過抽象的方法來減少編程工作量或有效地減輕編程難度稱為抽象編程
將問題通過功能分解,各個擊破的編程方法(過程化編程) 是一種以行為抽象為主的抽象編程
將問題通過實體分析,分層分類地實現抽象數據類型,從而進行簡單套用編程(基於對象編程)是一種以數據抽象為主的抽象編程
這種抽象編程,通過數據類型復用,方便編程,方便維護和擴展,其效果比過程化編程更好程式語言中沒有許多具體的數據類型
要解決實際問題,很大部分工作是要建立數據模式與實際問題的對應,也就是建立抽象數據類型的過程對象化編程就是基於分層分類的抽象數據類型之具體編程,它能更好地實現數據結構和算法,便是將N.Wirth的程式公式:
程式=算法+數據結構具體化為:
程式=算法+抽象數據類型
基本介紹
- 中文名:抽象編程
- 外文名: Abstract Programming
- 包含:行為抽象和數據抽象
- 領域:計算機語言
- 套用:數據編輯
分類,行為抽象,數據抽象,編程質量,可讀性,安全性,可維護性,程式維護,程式擴展,
分類
抽象編程( Abstract Programming ) 抽象分行為抽象和數據抽象兩種.
行為抽象
通俗地說便是將一個行為序列歸併 (抽象)為一個行為的過程
.例如:
將 "取碗筷、盛飯、盛菜,扒一口飯、夾一筷菜、再扒一口飯、再夾一筷菜" 的若干重複,然後放下碗筷的過程歸併為吃飯。
數據抽象
通俗地說,就是將事物歸類,或者說,將事物看成是一定型號、規格的數據,然後將性質接近的數據歸納(抽象)為一類.
例如:將圓、三角形、長方形歸為形狀類.
例如:
所以,整型向量在語言中是一種具體的數據結構。
編程質量
(Programming Quality )
可讀性
通過使用更好的編程方法可以從本質上改進可讀性通過使用定義良好的算法和語句控制結構,可以局部改進算法的可理解性通過學習和使用優秀程式設計師的編碼習慣,採用一貫的編碼風格,可以增強可讀性。
注意:
高級程式設計師與初學者對可讀性的把握分寸是不同的易編程性:
安全性
編程在算法設計上是挖空心思的勞動過程,而在運用語言對之描述上應該瀟灑自在:容易表達,不容易出錯,運行上更安全。
void f(char* s)
{
string s1,s2=s; //第一種
s1=s;
char* st=new char[strlen(s)+1]; //第二種
strcpy(st,s); char a[40]; //第三種
strncpy(a,s,sizeof(a));
a[sizeof(a)-1]=‘\0’;
}
可維護性
指局部修改不影響系統全局的總體性能,而系統產生的問題通常可以通過局部維護(修改或更換部件) 來解決。
對象化編程是將數據類型也模組化,從而導致更方便的維護性能可擴充性:指系統擴展時,只增加擴展代碼,而對原系統的正常運作只作很少的修改甚至不修改功能擴展的影響:
如果是應用程式功能擴展,那是使用抽象數據類型的抽象代碼擴展,其修改量比之低級代碼要少效率
程式維護
( Program Maintenance )
維護要求:
數個數m,
m若改為根據當前小孩的序號與m的和來確定個數m,則在進行數個數前,先要進行表達式計算,
程式擴展
( Program Extension ) 既要求直接數m個數,最後所獲得的1個勝利者,也要求按維護要求的數法所獲得的勝利者此時,便要保留原來的求勝利者的成員函式,再設計實現一個成員函式,作為功能擴展再在原系統中增加調用該成員函式的語句由於小孩轉圈的結構沒有變,所以該擴展要求就不涉及鍊表修改。