對象模型圖
一、對象模型圖中的類與接口
ArcGIS Engine 提供大量的對象,這些對象之間存在各種各樣的關系,如繼承、組合、關聯等。對象模型圖(Object model diagram,ODM)是以統一建模語言UML為基礎,用來表現對象之間關系的類圖,它是了解和熟悉ArcGIS Engine 體系架構的基礎。熟練掌握OMD圖可以幫助開發人員快速了解類之間的相互關系,類的接口轉換,選擇正確的接口,獲取所需的屬性、方法等;熟練閱讀OMD圖不但能夠基於ArcGIS Engine的GIS軟件可發過程中獲得非常大的幫助,也是熟練掌握ARCGIS Engine開發技能的必備要求。
從圖中可以看出,ArcGIS Engine 包含三種類型的類:AbstractClass類、CoClass類、Class類,在UML中采用不同的樣式填充。
- AbstractClass類
AbstractClass即抽象類。該類不能被實例化,也就是說不能用new關鍵字去生成一個該類的對象。根據面向對象思想的概念,不同的類可以繼承自同一個抽象類,但是內部的實現可能是不一樣的。例如:
IGeometry point=new Point(); IGeometry polygon=new Polygon(); IEnvelop envelope=point.Envelope; envelope=polygon.Envelope;
上面的例子中,Point類都繼承於Geometry抽象類,都實現了Geometry抽象類的Envelope屬性,但其中的內部細節的實現是不同的,每次得到的envelope變量也是不同的。
2. CoClass類
CoClass類即可創建類。該類可以通過new關鍵字直接實例化對象,它的實例對象不依賴其他對象的存在而存在,其生存周期也不由其他的對象管理。如“QueryFilter是一個組件類,可以用new關鍵字創建一個pQueryFilter對象”。例如
IQueryFilter pQueryFilter=new QueryFilterClass();
3. Class類
Class類,即可實例化類。該類不能直接使用new關鍵字創建對象,但是可以借助其他對象類來創建該類的實例,例如Workspace類可以通過WorkspaceFactory類的OpenFromFile方法來創建。代碼如下:
IWorkspaceFactory pWSFactory=new ShapfileWorkspaceFactoryClass();
IWorkspace pWorkspace=pWSFactory.OpenFromFile(filepath,0);
4. 類的關系
- 繼承關系
繼承是面向對象編程的重點之一,只能通過派生子類的方法來實現自己。子類繼承父類的全部非私有屬性和方法。類之間的繼承可以看成是類功能的擴展,即子類在繼承父親屬性和方法的基礎上,還可增加自己特有的屬性和方法。
- 組合關系
組合關系是指其中一個類對象的組成部分,由組成對象控制被組成對象的整個生命周期。
- 關聯關系
關聯關系是指可以從一個類對象是另一個對象的組成部分,他是一種松散的關系,關聯關系是具有方向的,若只存在一個方向,則為單向關聯。
- 依賴關系
依賴關系表示一個對象具有生產另外一個對象的方法。在OMD圖中一般用虛線表示。