資源描述:
《occ體系結(jié)構(gòu)和基本概念》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。
1、第1章OCC體系結(jié)構(gòu)和基本概念OCC是用面向?qū)ο蠓椒ㄔO(shè)計的一個CAD基礎(chǔ)平臺(軟件)。為了能從整體上把握OCC的組織情況,也為了方便后續(xù)章節(jié)的討論,本章將介紹OCC體系結(jié)構(gòu)和幾個基本概念。1.1OCC體系結(jié)構(gòu)1.1.1面向?qū)ο蠓椒ê兔嫦驅(qū)ο蟮能浖こ淘诮榻BOCC體系結(jié)構(gòu)之前,先介紹面向?qū)ο蠓椒ǖ母拍詈褪裁唇忻嫦驅(qū)ο蟮能浖こ獭T诿嫦驅(qū)ο蟮姆椒ǔ霈F(xiàn)以前,程序員都采用面向過程的程序設(shè)計方法,其中典型的是結(jié)構(gòu)化程序設(shè)計。這種設(shè)計的思路是:自頂向下、逐步求精。其程序結(jié)構(gòu)是按功能劃分為若干個基本模塊,這些模塊形成一個樹狀結(jié)構(gòu)。各模塊間的關(guān)系盡
2、可能簡單,在功能上相對獨立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。其模塊化實現(xiàn)的具體方法是使用子程序。結(jié)構(gòu)化程序設(shè)計由于采用了模塊分解與功能抽象以及自頂向下、分而治之的方法,從而有效的將一個復雜的程序系統(tǒng)設(shè)計任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護[2]。這種設(shè)計方法的致命缺點是:程序的可重用性差。因為它把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨立的實體,當數(shù)據(jù)結(jié)構(gòu)改變時,所有相關(guān)的處理過程都要進行相應(yīng)的修改。而面向?qū)ο蟮姆椒▽?shù)據(jù)及對數(shù)據(jù)的操作放在一起,作為一個相互依存、不可分離的整體——對象。對同類型對象抽象出
3、其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進行處理。類通過一個簡單的外部接口與外界發(fā)生關(guān)系,對象與對象之間通過消息進行通信[2]。這樣,程序模塊間的關(guān)系更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性就有了良好的保障,實現(xiàn)了“高內(nèi)聚”“低耦合”。另外,繼承與多態(tài)性可以大大提高程序的可重用性,使得軟件的開發(fā)和維護都更為方便。面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用。它包括面向?qū)ο蟮姆治觯∣OA)、面向?qū)ο蟮脑O(shè)計(OOD)、面向?qū)ο蟮木幊蹋∣OP)、面向?qū)ο蟮臏y試(OOT)和面向?qū)ο蟮能浖S護(OOSM)等主要內(nèi)容[2]
4、。1.1.1OCC的體系結(jié)構(gòu)整個OCC就是用面向?qū)ο蠓椒ㄔO(shè)計出來的一個對象庫。之所以用面向?qū)ο蠓椒ǘ皇敲嫦蜻^程方法,是因為用面向?qū)ο蠓椒ㄓ腥齻€好處。第一,由面向?qū)ο蠓椒ǔ橄蟮南到y(tǒng)結(jié)構(gòu)能映射到數(shù)據(jù)庫結(jié)構(gòu)中,很容易實現(xiàn)程序與數(shù)據(jù)結(jié)構(gòu)的封裝。第二,面向?qū)ο蠓椒◤乃幚淼臄?shù)據(jù)入手,以數(shù)據(jù)為中心來描述系統(tǒng),數(shù)據(jù)相對于功能而言,具有更強的穩(wěn)定性,這樣設(shè)計出的系統(tǒng)模型往往能較好地映射問題域模型[3]。第三,對象、類、繼承性、多態(tài)性的引入使用,令面向?qū)ο蟮脑O(shè)計方法能更好地生產(chǎn)可重用的軟件構(gòu)件和解決軟件的復雜性問題。不過,面向?qū)ο蟮脑O(shè)計方法要求開發(fā)
5、人員必須花很大精力去分析對象是什么,每個對象應(yīng)該承擔什么責任,所有這些對象怎樣很好地合作以完成預(yù)定的目標。這樣做換來的好處是:提高了目標系統(tǒng)的可重用性,減少了生命周期后續(xù)階段的工作量和可能犯的錯誤,提高了軟件的可維護性[3]。用面向?qū)ο蠓椒ê蛙浖こ趟枷敕治觯麄€OCC由五個模塊組成,分別是基礎(chǔ)類模塊、建模數(shù)據(jù)模塊、建模算法模塊、可視化模塊、數(shù)據(jù)交換模塊和應(yīng)用程序模塊。其中,建模數(shù)據(jù)模塊主要提供二維和三維幾何模型的數(shù)據(jù)結(jié)構(gòu),也稱數(shù)據(jù)結(jié)構(gòu)模塊。一個模塊主要由一個或幾個工具箱構(gòu)成。當然它也可以包含一些執(zhí)行體和資源體等。就結(jié)構(gòu)上看,一個工
6、具箱就是一個共享庫(如.so或.dll類型的文件)。每個工具箱由一個或幾個包組成。而每個包則由許多類組成,例如,一個幾何包包含點類、線類和圓類等。在同一個包中,不能含有相同名字的兩個類。使用類的時候,類名要以包名作前綴,如Geom_Circle。圖2.1簡要說明了包的內(nèi)容。圖2.1包的內(nèi)容1.1基本概念1.1.1類和泛化1、類OCC是一個面向?qū)ο蟮能浖?,與所有面向?qū)ο蟮能浖粯?,其最基本的軟件成分是類。一個類就是一種數(shù)據(jù)類型的實現(xiàn)。類有自己的行為(由它的函數(shù)提供的服務(wù))和結(jié)構(gòu)(類的數(shù)據(jù)結(jié)構(gòu)——用來存儲其數(shù)據(jù))。OCC中所有類按其實現(xiàn)
7、方式可以分三種:普通類、推遲類和通用類。普通類含有實例方法,可以被直接實例化。而推遲類則不能被實例化。推遲類的作用在于使一層類共同擁有一種給定的行為,而這些行為的發(fā)生取決于普通類(推遲類的派生類)的實現(xiàn)。通過推遲類的創(chuàng)建,可以保證所有派生自同一推遲類的普通類擁有相同的繼承行為。在C++中,與推遲類等同的是抽象類。至于通用類,它提供了一套處理其他數(shù)據(jù)類型的功能行為。通用類的實例化需要為它的參數(shù)指定類型。通用類的作用與C++中模板類的作用一樣。2、泛化這里所謂的泛化,主要是通過通用類的實現(xiàn)來獲得的。通用類分兩步實現(xiàn)。首先,對一個通用類進
8、行聲明以建立模型。在CDL(CASCADE定義語言)中,通用類被聲明為對不確定類型數(shù)據(jù)項的操作。這里的數(shù)據(jù)項就是通用類中的形參。對通用類的形參進行限制,就可以使形參類型成為普通類的子類。要注意的是:聲明一個通用類并沒有創(chuàng)建一個新的類類