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打印中的模型分割與打包
主站蜘蛛池模板: 国产三级成人| 亚洲色中色| 全部免费特黄特色大片视频| 国产在线精品网址你懂的| 国产欧美在线观看一区| 丝袜久久剧情精品国产| 国产人在线成免费视频| 国产精品999在线| 人人妻人人澡人人爽欧美一区| 视频一区视频二区日韩专区 | 国产h视频免费观看| 日韩精品中文字幕一区三区| 国产午夜在线观看视频| 久久不卡国产精品无码| 四虎影视库国产精品一区| 动漫精品中文字幕无码| 亚洲成人动漫在线观看| 91视频日本| 97综合久久| 国产无吗一区二区三区在线欢| 在线国产你懂的| 欧美日韩高清| 好吊日免费视频| 四虎成人免费毛片| 强乱中文字幕在线播放不卡| 亚洲欧美国产五月天综合| 国产在线视频自拍| 国产一级视频久久| 中文字幕人妻av一区二区| 亚洲中文字幕日产无码2021| 免费jjzz在在线播放国产| 男女男精品视频| 久精品色妇丰满人妻| 日本一本在线视频| 激情六月丁香婷婷四房播| 欧美a√在线| 91小视频版在线观看www| 91精品情国产情侣高潮对白蜜| 中文字幕va| 久久国产V一级毛多内射| 免费在线不卡视频| 黄色网页在线播放| 久久香蕉国产线看观看亚洲片| 国产日韩丝袜一二三区| 精品国产亚洲人成在线| 六月婷婷激情综合| 日韩av电影一区二区三区四区| 伊人久久精品无码麻豆精品| 天天躁夜夜躁狠狠躁躁88| 久久精品亚洲热综合一区二区| 亚洲欧洲美色一区二区三区| 日韩一区二区在线电影| 免费精品一区二区h| 日本日韩欧美| 国产精品大白天新婚身材| 久久国产亚洲偷自| 亚洲欧洲日产国产无码AV| 九九久久精品国产av片囯产区| 中文字幕佐山爱一区二区免费| 97狠狠操| 丝袜无码一区二区三区| 欧洲日本亚洲中文字幕| 天堂av综合网| 女人毛片a级大学毛片免费| 成人综合在线观看| 91久久夜色精品| 色综合激情网| 福利一区在线| 黄色国产在线| 国产成+人+综合+亚洲欧美| 久久成人18免费| 福利国产在线| 亚洲中久无码永久在线观看软件| 国产丰满大乳无码免费播放| 精品丝袜美腿国产一区| 这里只有精品在线| 国产亚洲精久久久久久久91| 国产精品久久久久无码网站| 亚洲Aⅴ无码专区在线观看q| 欧美成人午夜在线全部免费| 国产精品视频公开费视频| 中文字幕乱码中文乱码51精品|