當前位置:首頁 » 編程軟體 » 針對抽象編程

針對抽象編程

發布時間: 2022-05-30 09:19:43

A. 編程中如何將抽象的演算法形象化

課本上有個例子的。你按照他的流程走一遍你就懂了。有的演算法過程並不復雜,只是判斷條件變得復雜了一些。
演算法分析中的每一個步驟,都可以對應地轉換成C語言程序中的某一行或者幾行代碼,我們編寫C語言程序代碼的過程,實際上就是用C語言這種編程語言來表達演算法步驟的過程。我們就像一位翻譯官一樣,將計算機看不懂的,用自然語言表達的演算法步驟,翻譯為計算機看得懂的,用編程語言(例如,C語言,也可以是其他編程語言)表達的,並可以被編譯執行的源程序代碼。

B. 為什麼面向對象技術強調針對抽象編程而不是具體編程

當你已經有一段程序之後,想要在其基礎上做一點功能上的修改來獲得新的代碼,這時就可以繼承之前的基類,然後自己進行一些補充生成新的派生類,可以更為方便的繼承已有的程序。簡單地說面向對象的編程的特點就是封裝、繼承與多態

C. 在面對對象編程中抽象類的特點什麼

抽象類的特點:
1、抽象類的方法可以是抽象的,也可以是不抽象的。
2、抽象類的方法可以全是抽象的,也可以全是不抽象的。
3、有抽象方法的類必須是抽象類,或者是介面(但是介面的方法定義必須是public static abstract 修飾)。
4、子類繼承抽象類,必須實現抽象類的所有抽象方法。
5、抽象類不能被實例化,沒有構造函數。
6、子類中的抽象方法不能與父類的抽象方法同名。
7、抽象類的默認屬性修飾符是public abstract。
8、抽象類的屬性不能定義成靜態的。
9、如果抽象類的抽象方法不被重寫,那麼子類也必須是抽象類。

D. 抽象編程的編程質量

(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]=『』;
} 指局部修改不影響系統全局的總體性能,而系統產生的問題通常可以通過局部維護(修改或更換部件) 來解決。
模塊化編程使程序可拆裝,可局部修改,而不影響整體性能與工作,因而可維護性強,過程化編程是將過程模塊化,具有一定的可維護性;
對象化編程是將數據類型也模塊化,從而導致更方便的維護性能可擴充性:指系統擴展時,只增加擴展代碼,而對原系統的正常運作只作很少的修改甚至不修改功能擴展的影響:
過程化編程,會涉及多處擴展代碼與原系統不和諧所帶來的修改對象化編程,如果是抽象數據類型的功能擴展,則不會影響原系統的正常運行,而只是支持應用程序中增加的一些擴展代碼而已;
如果是應用程序功能擴展,那是使用抽象數據類型的抽象代碼擴展,其修改量比之低級代碼要少效率

E. 請問C++語言的抽象編程問題

行為抽象,比如長方形,其必有的行為就是繪制,那麼繪制這個行為可以抽象成一個函數就是繪制函數(內容就是如何繪制一個長方形)。而數據抽象,長方形基本要素就是長寬,那麼這個兩個值就可以抽象成長方形的兩個基本數據,長和寬。
至於數據結構,上網找吧,真的很多解釋的。最基本的數組就是一種數據結構。

F. 面向切面編程 面向介面編程 面向抽象編程 面向對象編程

面向切面的編程 主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。
比如我們最常見的就是日誌記錄了,舉個例子,我們現在提供一個服務查詢學生信息的,但是我們希望記錄有誰進行了這個查詢。如果按照傳統的OOP的實現的話,那我們實現了一個查詢學生信息的服務介面(StudentInfoService)和其實現類(StudentInfoServiceImpl.java),同時為了要進行記錄的話,那我們在實現類(StudentInfoServiceImpl.java)中要添加其實現記錄的過程。這樣的話,假如我們要實現的服務有多個呢?那就要在每個實現的類都添加這些記錄過程。這樣做的話就會有點繁瑣,而且每個實現類都與記錄服務日誌的行為緊耦合,違反了面向對象的規則。
那麼怎樣才能把記錄服務的行為與業務處理過程中分離出來呢?看起來好像就是查詢學生的服務自己在進行,但是背後日誌記錄對這些行為進行記錄,但是查詢學生的服務不知道存在這些記錄過程,這就是我們要討論AOP的目的所在。AOP的編程,好像就是把我們在某個方面的功能提出來與一批對象進行隔離,這樣與一批對象之間降低了耦合性,可以就某個功能進行編程。

G. 什麼是 「面對對像的程序設計」

這個一句話解釋不了,如果你沒有去深入它一下也理解不了。但是經過學習,你就會不斷增加對它的理解。C++就是典型的面向對象的語言。

面向對象是繼結構化革命之後的又一次軟體開發方式革命。面向對象的主要思想是基於抽象數據類型的(Abstract Data Type, ADT):在結構化編程過程中,人們發現把某種數據結構和用於操縱它的各種操作以某種模塊化方式綁定到一起會非常方便,使用這種方式進行編程時數據結構的介面是固定的。
如果對抽象數據類型進一步抽象,就會發現把這種數據類型的實例當作一個具體的東西、事物、對象,就可以引發人們對編程過程中怎樣看待所處理的問題的一次大的改變。抽象數據類型方法雖然也有一定的抽象能力,但其核心仍然是數據結構和演算法。而面向對象方法直接把所有事物都當作獨立的對象,處理問題過程中所思考的不再主要是怎樣用數據結構來描述問題,而是直接考慮重現問題中各個對象之間的關系。可以說,面向對象革命的最重要價值就在於改變了人們看待和處理問題的方式。
面向對象方法中,對象可以接受其他對象傳來的消息,也可以向其他對象發送消息。有的語言靜態類型,決定了對象可接受的消息的范圍,這稱為對象的類型的介面。有的語言中對象可以接受任何消息,但只對其有意義的消息進行反應。對象中可以包含其他對象,這成為「聚合」,對象可以被當作其他類型的對象,這要求對象的類型「繼承」另外的類型。對象只能通過其所提供的介面來進行訪問,其內部具體實現是不可訪問的,這成為「封裝」。面向對象方法的三個核心要素是:封裝、繼承、多態。

H. 抽象類就是指用來被繼承的類嗎

1. 什麼是抽象類抽象類僅提供一個類型的部分實現。抽象類可以有實例變數,以及一個或多個構造函數。抽象類可以同時有抽象方法和具體方法。一個抽象類不會有實例,這些構造函數不能被客戶端調用來創建實例。一個抽象類的構造函數可以被其子類調用,從而使一個抽象類的所有子類都可以有一些共同的實現,而不同的子類可以在此基礎上有其自己的實現。

2. 抽象類的用途
1) 具體類不是用來繼承的。 Scott Meyers曾指出,只要有可能,不要叢具體類繼承。
2) 假設有2個具體類,類A和類B,類B是類A 的子類,那麼一個最簡單的修改方案是應當建立一個抽象類(或java介面)C,然後讓類A和類B成為抽象類C的子類。
3) 抽象類應當擁有盡可能多的共同代碼。以提高代碼的復用率。
4) 抽象類應當擁有盡可能少的數據。

3. 基於抽象類的模式和原則
1) 針對抽象編程,不要針對具體編程。
2) 盡量使用合成(Composition),而不要使用繼承來達到復用的目的。
3) 使用摸板方法模式

4. 什麼時候應當使用繼承復用
1) 子類是超類的一個特殊種類,而不是超類的一個角色,也就是要區分」is – a」 和「has-a」兩種關系。
2) 永遠不會出現需要將子類換成另一個子類的情況。如果設計師不是很肯定一個類回不會在將來變成另一個類的子類的話,就不應當把這個類設計成這個超類的子類。
3) 子類具有擴展超類的責任,而不是具有置換掉(Override)或注銷掉(Nullify)超類的責任。
4) 只有在分類學上有意義時,才可以使用繼承,不要叢工具類繼承。

I. 抽象編程的介紹

抽象編程是通過抽象的方法來減少編程工作量或有效地減輕編程難度稱為抽象編程將問題通過功能分解,各個擊破的編程方法(過程化編程) 是一種以行為抽象為主的抽象編程將問題通過實體分析,分層分類地實現抽象數據類型,從而進行簡單應用編程(基於對象編程)是一種以數據抽象為主的抽象編程這種抽象編程,通過數據類型復用,方便編程,方便維護和擴展,其效果比過程化編程更好編程語言中沒有許多具體的數據類型要解決實際問題,很大部分工作是要建立數據模式與實際問題的對應,也就是建立抽象數據類型的過程對象化編程就是基於分層分類的抽象數據類型之具體編程,它能更好地實現數據結構和演算法,便是將N.Wirth的程序公式:程序=演算法+數據結構具體化為:程序=演算法+抽象數據類型

J. 什麼是抽象編程

顧名思義抽象編程是指在編程的過程中把大象抽出來。
如何在編程的過程中把大象抽出並保持程序的可移植性,這個一直以來是一個困擾全世界各類語言編程的程序員的一個難題。
最早提出抽象這個概念的是
達芬奇
在他的名畫中有著抽象的充分演示。
如果在一個項目中做到抽象編程的話,無疑是完美的。那麼在編譯型的語言中如果做到呢?
首先搭建環境,這個問題怎麼說呢?真是個見仁見智的。
在C語言中和在JAVA又或者在Python中如何搭建這個抽象的環境。
由於筆者最近熱衷於Python的開發。首先談談在Python中如何做到把大象抽出來的同時保證程序的完美的可移植性。
第一
建立一個抽象類庫。
打開IDLE,引入抽象的概念。
第二
告訴大象我們即將把你抽出來。這個對於大象來說是很不公平的,它肯定的回答NO
那麼我們是不是就不能把大象抽出來了呢?當然可以。大象是很笨的,我們可以先構造一個函數。內容包括香蕉芒果等大象愛吃的食物,先把大象「騙」出來。當然這個也是很有技巧的。騙出來以後大象暫時存在什麼地方呢?眾所周知Python講究效率、快捷的開發注重的是解決問題。那麼,我們到哪裡去找個那麼大的空間把大象存進去呢?答案當然是動物園啦。首先與管理員協調暫存事宜。待需要的時候在把大象引入回來。
第三
大象的引入問題
這個時候相信大家對把大象存在什麼位置已經有了個初步的了解,但是如果管理員很熱愛大象的話,給大象提供的伙食比我們先前的要好。那麼這個時候引入無疑會增加成本。必須提供更好的伙食條件大象才有可能原因再次回來我們預先的架構中繼續工作。那麼在作者的BLOG中有著一套比較完整的解決方案。下面的參考地址會給出作者的Blog地址。請大家爭相傳閱。
總結:抽象編程的原理大家都清楚了。需要解決的主要問題就是把大象抽出後的再次引用問題。這個也是本文的難點。希望對大家有所幫助。

熱點內容
安卓如何玩手機游戲 發布:2024-05-21 10:03:15 瀏覽:109
好的少兒編程學校 發布:2024-05-21 10:02:38 瀏覽:439
c語言字元個數統計 發布:2024-05-21 09:54:31 瀏覽:415
ubuntupython文件 發布:2024-05-21 09:41:01 瀏覽:161
java後端介面 發布:2024-05-21 09:40:59 瀏覽:931
豪華尊貴分別對應哪些配置 發布:2024-05-21 09:40:56 瀏覽:621
逗號幫手體驗密碼是多少 發布:2024-05-21 09:31:44 瀏覽:131
vb資料庫excel 發布:2024-05-21 09:18:57 瀏覽:319
資本論第一卷中央編譯局 發布:2024-05-21 09:06:21 瀏覽:67
我的世界多人游戲伺服器有哪些 發布:2024-05-21 09:02:48 瀏覽:590