<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>


    隨筆-35  評論-97  文章-0  trackbacks-0

    基礎條件

    EMF Model Query Framework 提供了很多方便使用的條件,這些條件實現了用于簡單的數據類型斷言。包括strings, numbers, 和 booleans. 這些條件用于模型元素的EAttribute之間所進行的邏輯操作.。

    看看這些條件結構:

    從結構圖上可以看出,Condition是最為條件的最頂層父類,它能作各種條件的邏輯操作,AND、OR等,說明條件是可以復合的。而且,Comdition類依賴ConditionPolicy的依賴使得條件能滿足全匹配(ALL)或者任意匹配(ANY)的策略。

    Condition三個子類CompoundCondition(復合條件),Not(非條件)和ObjectInstanceCondition(對象實例條件)

    很容易也看出,CompoundCondition的子類都是一些有關復合的條件類。這些都是可以進行邏輯上的復合的。

    注意到Implies(蘊含),在數學上蘊含是有這樣的規則:當第一個表達式為真,且第二個表達式為假時,結果為假,否則為真。記住哦,否則很容易搞錯的。特別是在條件進行復合時運用蘊含操作,要認真分析前后的表達式。

    簡單條件類型

    看看下面的結構圖就知道條件是如何與簡單類型進行匹配:

    可以很容易看出,這些其實都是一些值類型條件,只是有些條件作了一些擴展的匹配功能,比如字符串條件可以不但可以從字符串內容上(包括子串和正則表達式匹配),還可一從字符長度上匹配。

    下面來舉一些使用例子來看看條件是如果匹配的。

     

    public static void queryExample1()
        
    {
            Object subject 
    = 100d; 
            Condition a 
    = new NumberCondition.DoubleValue(10.0d,1000.0d);  //是否在100-1000的double內
            System.out.println("100 是否在10-1000范圍? " + a.isSatisfied(subject));
            
            Condition b 
    = new BooleanCondition(false);
            System.out.println(
    "true 是否滿足false條件? " + b.isSatisfied(true));
            
            Condition c 
    = new StringValue("EMF-Query"truenew StringAdapter(){
                
    public String getString(Object object)
                
    {
                    
    return object.toString();
                }

            }
    );
            System.out.println(
    "“EMF-Query” 是否滿足c條件?" + c.isSatisfied("emf-query"));
            
            Condition a1 
    = new NumberCondition.DoubleValue(10.0d,15.0d);  //是否在100-1000的double內
            Condition a2 = new NumberCondition.DoubleValue(108d,1000.0d);  //是否在100-1000的double內
            
    //蘊含:當第一個表達式為真,且第二個表達式為假時,結果為假,否則為真。
            Condition complex = a.IMPLIES(a1.OR(a2));//
            System.out.println("復合條件測試:" + complex.isSatisfied(subject));
            
            StringCondition cond 
    = new StringRegularExpressionValue("A+");
            System.out.println(
    "正則表達式測試:" + cond.isSatisfied("CATGGTGCCAC"));
            
            Collection subjects 
    = new ArrayList(); //多個將要匹配的主題
            subjects.add(100d);
            subjects.add(200d);
            subjects.add(209d);
            subjects.add(2000d);
            Condition  interzone
    = new NumberCondition.DoubleValue(100.0d,1000.0d);
            
    //全匹配策略
            System.out.println("全匹配策略: " + ConditionPolicy.ALL.isSatisfied(interzone, subjects));
            
    //任意匹配策略
            System.out.println("任意匹配策略: " + ConditionPolicy.ANY.isSatisfied(interzone, subjects));
        }

    例子很簡單,不需要再作太多的說明了吧。想提提的就是條件一般是用這個condition.isSatisfied(subject) 方法來匹配的。ObjectInstanceCondition留到后面的例子吧。看看輸出的結果:

    100 是否在10-1000范圍? true
    true 是否滿足false條件? false
    “EMF
    -Query”是否滿足c條件?false
    復合條件測試:
    false
    正則表達式測試:
    true
    全匹配策略: 
    false
    任意匹配策略: 
    true
    posted on 2007-06-10 03:37 三告習習 閱讀(1185) 評論(0)  編輯  收藏 所屬分類: emf/gef/gmf
    主站蜘蛛池模板: ww在线观视频免费观看| 亚洲第一网站男人都懂| 国拍在线精品视频免费观看 | av午夜福利一片免费看久久| 日本免费中文字幕| 亚洲午夜久久久久久久久久 | 亚洲爆乳精品无码一区二区三区| 亚洲中文字幕久久精品无码喷水| 亚洲AV成人一区二区三区观看| 国产一精品一av一免费爽爽| 亚洲毛片αv无线播放一区| 一个人看的www免费视频在线观看| 亚洲精品无码专区在线在线播放| 亚洲精品国产日韩| 国产精品极品美女免费观看| 亚洲AV无码日韩AV无码导航 | 中文字幕视频在线免费观看| 亚洲第一极品精品无码久久| 最近中文字幕大全免费视频| 久久久久精品国产亚洲AV无码| 久久精品免费一区二区喷潮 | 成年免费a级毛片免费看无码| 毛片高清视频在线看免费观看| 亚洲欧美日韩久久精品| 免费无码成人AV在线播放不卡| 亚洲欧洲春色校园另类小说| 国产成人无码精品久久久免费 | 国产精品无码永久免费888| 亚洲av午夜福利精品一区| 91麻豆最新在线人成免费观看| 亚洲av日韩专区在线观看| 亚洲色婷婷六月亚洲婷婷6月| 99免费视频观看| 亚洲精品色在线网站| 久久精品夜色国产亚洲av| 美女裸身网站免费看免费网站| 日亚毛片免费乱码不卡一区| 久久精品国产亚洲精品2020| 国产午夜免费福利红片| 亚洲AV无码AV日韩AV网站| 亚洲精品无码不卡在线播HE |