-
抽象編程
鎖定
抽象編程,指通過抽象的方法來減少編程工作量或有效地減輕編程難度。
將問題通過功能分解,各個擊破的編程方法(過程化編程) 是一種以行為抽象為主的抽象編程。
將問題通過實體分析,分層分類地實現抽象數據類型,從而進行簡單應用編程(基於對象編程)是一種以數據抽象為主的抽象編程。
這種抽象編程,通過數據類型複用,方便編程,方便維護和擴展,其效果比過程化編程更好編程語言中沒有許多具體的數據類型。
要解決實際問題,很大部分工作是要建立數據模式與實際問題的對應,也就是建立抽象數據類型的過程對象化編程就是基於分層分類的抽象數據類型之具體編程,它能更好地實現數據結構和算法,便是將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個勝利者,也要求按維護要求的數法所獲得的勝利者此時,便要保留原來的求勝利者的成員函數,再設計實現一個成員函數,作為功能擴展再在原系統中增加調用該成員函數的語句由於小孩轉圈的結構沒有變,所以該擴展要求就不涉及鏈表修改。