999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Eclipse的本體圖形編輯器的設計與實現

2008-11-13 01:49:24韓菲帆
總裁 2008年7期
關鍵詞:模型

韓菲帆

摘 要:通過對Eclipse平臺和GEF框架的介紹,分析了Eclipse平臺在圖形編輯方面的優越性。結合本體編輯,設計并實現了基于Eclipse 平臺下的本體編輯器,對編輯器的系統結構做了詳細地分析。編輯器由模型、視圖、控制器三部分組成,由于采用基于MVC 模式的GEF 框架,使得軟件結構清晰,明顯縮短了軟件的開發周期,提高了軟件的可維護性和代碼的重用性。

關鍵詞:Eclipse;本體論;圖形編輯框架;模型——視圖——控制器

1 MVC設計模式

MVC 是一種設計模式,它強制性地把應用程序的輸入、處理和輸出分開。 MVC 把應用程序分成3 個核心模塊:模型、視圖和控制器。

模型:軟件所處理問題邏輯在獨立于外在顯示內容和形式情況下的內在抽象,封裝了問題的核心數據、邏輯和功能的計算關系,它獨立于具體的界面表達和I/ O操作。

視圖:把表示模型數據及邏輯關系和狀態的信息及特定形式展示給用戶。 它從模型獲得顯示信息,對于相同的信息可以有多個不同的顯示形式或視圖。

控制器:處理用戶與軟件的交互操作的,其職責是控制提供模型中任何變化的傳播,確保用戶界面于模型間的對應聯系;它接受用戶的輸入,將輸入反饋給模型,進而實現對模型的計算控制,是使模型和視圖協調工作的部件。通常一個視圖具有一個控制器。

2 GEF 圖形編輯框架

GEF ( Graphical Editing Framework) 是Eclipse平臺下的圖形編輯插件,可用于為已有的應用創建一個圖形編輯器界面。GEF運用基于SWT 繪圖插件Draw2d 在Eclipse 中創建圖形環境。利用GEF提供的公共方法或者在特殊的領域下可以擴展它們GEF 使用能簡潔地改變應用于視圖1 GEF結構圖圖模型的MVC 架構。 GEF 是一個能為大多數程序提供鏈接和構造基礎的完整應用。包括:流程構造器、圖形界面構造器、UML 圖表編輯器(例如流程圖和類圖) ,及類似于HTML 的所見即所得的文本編輯器。

圖1給出了GEF結構圖。

3 本體圖形編輯器的設計與實現

3.1 數據模型的設計

數據模型對象負責存儲顯示內容的抽象,所有的核心數據都存儲在model 對象中。數據模型主要包括兩大部份:代表節點的node 模型和代表連接的connection 模型,每一個節點模型和每一個連接模型都代表一個本體語言中的一個語法元素。 數據模型代表了本體語言中的元素,各種模型之間的關系必須符合本體語言的語法關系,節點模型主要是表示本體語言中的各種基本元素,如類、屬性、實例等。連接模型:連接模型主要是表示本體語言中的各種關系,如子類父類的繼承關系、子屬性父屬性的繼承關系、類與實例的關系等。node模型示意代碼如下:

public class Node extends Element {

…………………..

//模型位置和尺寸的確定

protected Point location = new Point(0,0);

protected Dimension size = new Dimension(100,150);

//連接起點和終點集合的定義

private List souceConnection=new ArrayList();

private List targetConnection=new ArrayList();

public void addtargetConnection(Object connection){

this.targetConnection.add(connection);

firePropertyChange(PROP_INPUTS,null,null);

}

public void addsourceConnection(Object connection){

this.soouceConnection.add(connection);

firePropertyChange(PROP_OUTPUTS,null,null);

}

public void setLocation(Point p) {

if (this.location.equals(p)) {

return;

}

this.location = p;

firePropertyChange(PROP_LOCATION,null,p);

}

public void setSize(Dimension d) {

if (this.size.equals(d)) {

return;

}

this.size = d;

firePropertyChange(PROP_SIZE,null,d);

}

…………………

}

圖2 View的實現圖

圖3 Draw2D結構圖

3.2 視圖的設計

如圖2所示:視圖是應用軟件的表示部分,用于展現數據模型的內容,是用戶與編輯器交互的窗口。 它向用戶提供一個友好界面,使得用戶能夠使用圖形化的方式方便地查看、編寫指定的文件。編輯器的視圖部分主要包括主菜單區、工具區、編輯區。主菜單區主要是顯示整個編輯器的所有文件;工具區則是顯示各種基本圖形模型,主要圖形的編輯就是將工具區的圖形模型拖放到編輯區,以實現基本本體圖形的編輯;編輯區是整個編輯器的核心部分,它是一個大視圖,整個本體的圖形展示都在編輯區,各種基本圖形的屬性及它們之間的關系都在編輯區中實現。雖然GEF可以使用任何圖形包作為View層,但實際上GEF對Draw2D的依賴是很強的。圖3是Draw2D結構圖,Draw2D是基于SWT的圖形處理包。如果一個應用僅需要顯示圖形,只用Draw2D就足夠了;若該應用的模型要求以圖形化的方式被編輯,那么最好使用GEF。

舉例來說:EditPart(org.eclipse.gef.EditPart)接口并不要求引入任何Draw2D的類,但最常使用的AbstractGraphicalEditPart類的CreateFigure()方法就需要返回IFigure類型。由于這個原因,在GEF的SDK中索性包含Draw2D包就不奇怪了。

3.3 控制器的設計

GEF框架的控制器稱為EditPart 。每一個模型都對應著一個EditPart ,主要作用是將模型和視圖聯接起來,實現模型與視圖之間的同步操作。 為了實現代碼的重用,EditPart被分為Command 和EditPolicy 兩部分。同一個EditPolicy 可以被安裝到多個EditPart中,同一個Command 也可以被多個EditPolicy 所使用。當圖形模型發生改變的時候,圖形模型對應的EditPart 中的EditPolicy 通過傳遞過來的參數,產生相應的命令對象,從而通過命令對象來實現對模型的更新修改。

當用戶有請求時,Editpart 獲得該請求,通過已有的各種策略來判斷應發出的命令,并向數據模型發出與該請求對應的命令,使得數據模型發生改變,而對模型的改變會即時獲得語法檢查,以決定該請求是否合法。若合法,則向Editpart 發出屬性改變的消息,最后由Editpart 將對模型的修改結果返回給視圖,成為用戶可見的結果。控制器示意代碼如下:

public abstract class NodePart extends AbstractGraphicalEditPart implements PropertyChangeListener,NodeEditPart {

…………………

//對不同的請求刷新視圖

public void propertyChange(PropertyChangeEvent evt) {

if (evt.getPropertyName().equals(Node.PROP_LOCATION))

refreshVisuals();

else if (evt.getPropertyName().equals(Node.PROP_SIZE))

refreshVisuals();

else if (evt.getPropertyName().equals(Node.PROP_INPUTS))

refreshTargetConnections();

else if (evt.getPropertyName().equals(Node.PROP_OUTPUTS))

refreshSourceConnections();

}

//安裝Policy

protected void createEditPolicies() {

installEditPolicy(EditPolicy.COMPONENT_ROLE,new NodeEditPolicy());

installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE,new

NodeGraphicalNodeEditPolicy());

installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE,new

NodeDirectEditPolicy());

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 天天综合天天综合| 欧美日韩一区二区在线免费观看 | 中文字幕久久波多野结衣| 无码中文字幕乱码免费2| 国产噜噜噜视频在线观看| 国产在线精品网址你懂的| 欧美日韩激情| 手机在线国产精品| 又黄又湿又爽的视频| 欧美另类第一页| 香蕉综合在线视频91| 久操中文在线| 精品夜恋影院亚洲欧洲| 亚洲性一区| 色欲不卡无码一区二区| 青青草一区二区免费精品| 欧美成人日韩| 国产微拍一区二区三区四区| 免费A级毛片无码无遮挡| 中文字幕色在线| 欧美成人h精品网站| 国产精品手机在线观看你懂的| 欧美日韩在线第一页| 欧美一区二区人人喊爽| 国产网站黄| 欧洲精品视频在线观看| 亚洲精品亚洲人成在线| 亚洲成人黄色在线| 青青草a国产免费观看| 欧美不卡在线视频| 午夜福利视频一区| 好吊妞欧美视频免费| 中文无码精品A∨在线观看不卡| 久久香蕉欧美精品| 亚洲视频在线观看免费视频| 国产精品第三页在线看| 日韩毛片在线播放| 国产区在线看| 四虎国产精品永久一区| 全部免费毛片免费播放| 婷婷六月综合网| 国产91丝袜| 中文国产成人久久精品小说| 色哟哟国产精品| 婷婷亚洲视频| 国产区免费精品视频| 国精品91人妻无码一区二区三区| AV无码一区二区三区四区| 亚洲国产理论片在线播放| 免费无码AV片在线观看中文| 精品少妇人妻av无码久久| 国产高潮流白浆视频| 尤物成AV人片在线观看| 日韩精品亚洲精品第一页| 精品精品国产高清A毛片| 无码一区二区波多野结衣播放搜索| 精品色综合| 国产一在线| 中国一级特黄大片在线观看| 最新国语自产精品视频在| 亚洲午夜福利精品无码| 国产永久无码观看在线| 亚洲无码视频一区二区三区| 亚卅精品无码久久毛片乌克兰 | 激情無極限的亚洲一区免费| 国产老女人精品免费视频| 国产成人永久免费视频| 婷婷激情五月网| 黄色成年视频| 超级碰免费视频91| 日本不卡在线视频| 国产精品亚欧美一区二区三区| 精品中文字幕一区在线| 欧美日本在线| 97se亚洲综合在线天天| 色婷婷色丁香| 国产一区二区三区在线无码| 欧美精品在线视频观看 | 日韩精品亚洲人旧成在线| 国产综合亚洲欧洲区精品无码| 日韩第九页| av大片在线无码免费|