1. 面向?qū)ο蠓椒?/p>
面向?qū)ο缶幊碳夹g可用于解決許多過程編程技術難以解決的問題,面向?qū)ο蠹軜?gòu)可用于管理并行編程情況下出現(xiàn)的死鎖、無限延遲以及數(shù)據(jù)競爭問題??墒褂妹嫦?qū)ο蠼M件來模塊化應用程序可能需要的線程需求。使用封裝和對象訪問策略來簡化并發(fā)和并行編程。在面向?qū)ο髴贸绦蛑惺褂枚嗑€程的最有效途徑是通過構(gòu)建于C++進程間通信組件(IPC)、C++同步組件以及C++互斥組件之上的應用框架。而構(gòu)建IPC、同步和互斥組件的最有效途徑是構(gòu)建接口類和類庫,讓它們封裝提供線程和API任務的操作系統(tǒng)服務。通過使用接口類、類庫以及多線程應用框架,C++程序員可以構(gòu)建充分利用多線程、多處理器環(huán)境的面向?qū)ο蠹軜?gòu)。
2. 面向?qū)ο蠹軜?gòu)
軟件的架構(gòu)是一套主宰軟件操作的規(guī)則、模式、進程以及斷言。它表示與數(shù)據(jù)組織和執(zhí)行流程有關的整體結(jié)構(gòu),反映了設計思想、開發(fā)方法學以及域模型。當軟件基礎架構(gòu)基于代碼/數(shù)據(jù)封裝、代碼/數(shù)據(jù)繼承和多態(tài)時,此軟件就稱做面向?qū)ο蠹軜?gòu)。具有面向?qū)ο蠹軜?gòu)的軟件構(gòu)建于類和類層次之上,它使用組件方法來構(gòu)建軟件。其中每個組件都是一個獨立的軟件部分,具備特定的功能。我們可以將這些組件裝配起來形成一個更大的軟件部分或者生成一個完整的應用程序。
3. 面向?qū)ο筌浖M件
面向?qū)ο筌浖M件是獨立的功能性單元。每個組件均是某些人物、地點、事件或思想的模型,都包含一些數(shù)據(jù)和服務列表或包含可以操作以上數(shù)據(jù)的運算。它可以對向外提供部分或所有的數(shù)據(jù)與服務。其中能夠為外界所用的數(shù)據(jù)與服務(一般會隱藏數(shù)據(jù))稱做組件的接口(interface)。組件是用于構(gòu)建程序、應用,甚至其它組件的基石。
C++軟件組件是一種軟拼裝體,用于構(gòu)建應用于多目的、多種類應用以及可能無限制組合體的一般性軟件部分。常用的C++組件有以下4種:
1>. 類;
2>. 集合和容器;
3>. 類庫;
4>. 應用框架。
這些組件賦予了應用程序真正的面向?qū)ο蠹軜?gòu)。使用它們,我們可以引入面向?qū)ο蠹軜?gòu)、增量多線程以及多線程架構(gòu)的思想。在這些組件中,應用框架使用集合類、容器類、類庫以及基本類。集合、容器和類庫組成了更基本的類。類組件是所有其它C++組件的基礎。
類具有不同的類型,某些類類型僅對用作藍圖類(blueprint class)有用,這些藍圖類為其他類提供推薦接口策略,而另外一些類型僅能用作基類,還有一些則不宜用為基類。常用類型可歸為以下8類:
1>. 具體類:表示一個祖先-后代世系終止的結(jié)束類,它是進一步繼承的終點。它可以在實現(xiàn)時進行優(yōu)化,因為其不需要擔心派生類
中的功能性,它最小化了對其他類的依賴性;
2>. 抽象類:為所有后代提供藍圖的類。為了使用它,用戶必須從其上派生出一個新類,而且為它上面聲明的所有純虛函數(shù)提供實際定義;
3>. 接口類:類用戶可用的數(shù)據(jù)與函數(shù)成員組成了它的接口。它可用于修改和增強另一個類或類集合的接口,使修改后的類更易于使用、功能更強或語義上更正確。它也可充當非任何類成員函數(shù)的包裝器。當我們包裝在線程處理、進程間通信和多任務處理中使用的操作系統(tǒng)基本要素時,接口類就會發(fā)揮作用。通過封裝操作系統(tǒng)的基本要素,為用戶提供這些基本要素的一般性接口,使代碼跨平臺的移植性更強。
4>. 節(jié)點類:它可用于繼承,但不含純虛函數(shù),可以即時使用,其又著眼于未來,被設計為可重用的,提供了可以在派生類中覆蓋的虛成員函數(shù)。又提供了可以被派生類繼承的受保護數(shù)據(jù)成員和成員函數(shù),可以使用基類的指針在后代類中操作成員函數(shù),可以通過多態(tài)和繼承特殊化節(jié)點類;
5>. 支持類:與域無關,可以跨域使用。在不同的應用程序中非常有用;
6>. 域類:創(chuàng)建用來模擬指定域內(nèi)實體的類,它為現(xiàn)實的某些方面建模,可捕獲某些現(xiàn)實過程或概念的規(guī)則、斷言和行為;
7>. 應用類
8>. 集合和容器類:為充當其它對象組一般性容納器的對象。
類庫和應用框架是不同的。類庫可用于它能應用的幾乎任何方面,而應用框架是一個類的集合,有預定義的結(jié)構(gòu),并表示一個應用。應用框架類之間的關系是事先制定的,其使用也只限于它所表示應用的范圍之內(nèi)。而類庫之間的類根本沒有任何關聯(lián),只是不同的類別。
在一個具有面向?qū)ο蠹軜?gòu)的應用之內(nèi),建議使用應用框架來解決所有多線程問題。它決定并行和并發(fā)有意義的地方。它的用戶受益于并行的同時應當隱藏它。與域類一起,多線程應用框架必須正確使用互斥類和IPC類來提供支持并發(fā)和多進程的軟件基礎。