一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

X++語言

 Hermanli 2011-03-24

什么是x++?

x++是微軟ERP所使用的內(nèi)部編程語言,和C系列的語言語法很相似,微軟Dynamics AX內(nèi)嵌的開發(fā)語言X++,下面是有關(guān)的一些介紹

原文地址:http://url.csai.cn/user1/16236/archives/2006/10476.html

X++語言特性

X++是Axapta MorphX的開發(fā)語言,它也是一種面向?qū)ο蟮拈_發(fā)語言。由于Axapta是一套ERP平臺,使得用X++進行ERP業(yè)務(wù)的二次開發(fā)變得非常簡單。與其它面向?qū)ο蟮恼Z言不同,X++具有一些自己的特性。

1、 Class Variables

X++的類級別變量都是protected型的,也就是說,無法從類的外部訪問這些變量。在子類中可以訪問父類的類級別變量。如果非要從外部訪問類級別變量,可以使用parm類型的方法來實現(xiàn),這種方法在系統(tǒng)中被廣泛使用。例如,在某個類的classDeclaration中定義了一個int類型的類級別變量value,那么就可以在該類中定義如下的方法來實現(xiàn)對value的修改與訪問:

int parmMyValue (int _value = value)

{

value = _value;

return value;

}

2、 類的靜態(tài)成員變量

與其它面向?qū)ο箝_發(fā)語言不同,無法在X++中定義類的靜態(tài)成員變量,但可以在X++的類中定義靜態(tài)方法。要想在類的靜態(tài)方法中訪問類級別變量,只能夠通過parm類型的方法和實例傳遞策略來實現(xiàn),例如某個類的定義如下:

class StaticTest

{

int value;

}

static void StaticMethod(StaticTest _tester)

{

if (_tester)

{

// 使用實例傳遞策略來訪問類級別變量

print _tester.parmMyValue();

}

}

int parmMyValue(int _value = value)

{

value = _value;

return value;

}

void instanceMethod()

{

print value;

}

那么可以使用下面的方法來調(diào)用類的靜態(tài)方法和實例方法:

static void Job1(Args _args)

{

StaticTest tester = new StaticTest();

;

tester.parmMyValue(123);

tester.instanceMethod();

StaticTest::StaticMethod(tester);

pause;

}

3、 多態(tài)

多態(tài)是一個面向?qū)ο蟮母拍?,它的具體形式是函數(shù)重載(overload),這和函數(shù)重寫(override)是兩個完全不同的概念。X++具備override,但不支持overload。也就是說,無法在一個類里面定義多個名稱相同但參數(shù)列表不同的函數(shù)。X++支持一種退化的overload,就是函數(shù)的默認參數(shù)。系統(tǒng)中很多類的成員方法都有類似下面的定義:

void myFunction (int a, int b, boolean c = false);

那么在調(diào)用該方法的時候,第三個參數(shù)可以不指定,在這種情況下,c的值會使用默認值(false)

4、 成員可見性

嚴格地說,X++并不完全遵守面向?qū)ο蟮乃枷搿T诿嫦驅(qū)ο笏枷胫?,類的所有成員在默認情況下都是私有的,除非設(shè)計師使用public關(guān)鍵字將其定義為公有。這樣做是為了達到“嚴格封裝類的信息,只向外發(fā)布需要的信息”這一目的(注:C++中當(dāng)使用struct定義類時,情況正好相反,因為它需要與C語言兼容),也是遵循面向?qū)ο蠡舅枷氲囊粋€重要體現(xiàn)。然而,X++在默認情況下,類級別變量的可見性都是protected的(如上所述),而方法的可見性都是public的。因此,單純從面向?qū)ο蟮慕嵌热タ疾靀++語言可以發(fā)現(xiàn),X++的定義并不規(guī)范。當(dāng)然,這也是由于X++本身的應(yīng)用特性所決定的,因為它是一種ERP二次開發(fā)語言。比如為了方便起見, Table型變量的所有字段都是public可見的。

5、 平臺開發(fā)

X++支持Axapta ERP平臺開發(fā),不支持OS級別的平臺開發(fā)。例如X++雖然有線程模型,但其主要作用是分離UI和Domain logic,使得在進行業(yè)務(wù)處理的時候不會造成UI的凍結(jié)。典型的例子就是Axapta AOT的“Find”對話框,它會在Find的過程中及時更新用戶界面信息。此外,雖然X++提供Windows API、DLL、COM等的編程接口,但要實現(xiàn)OS底層的處理仍然不是一件容易的事情。假設(shè)需要為Windows開發(fā)一套實時的內(nèi)存管理系統(tǒng),X++絕對不是最好的選擇。

6、 模式應(yīng)用

面向?qū)ο笏枷氲木柙谟谀J綉?yīng)用。X++的語言特性決定了其模式應(yīng)用也會與其它面向?qū)ο笳Z言產(chǎn)生偏差。例如,由于無法定義類的靜態(tài)成員變量,要在X++中實現(xiàn)單身(Singleton)模式,只能通過使用infolog.globalCache方法來保存類的實例。工廠(Factory)模式在X++中使用的非常廣泛,比如SalesFormLetter類的construct方法本身就是一個工廠方法,X++也提供了一個classFactory以生成對應(yīng)的類的實例。在模式應(yīng)用上,X++可以處理大多數(shù)靜態(tài)模式,而對于并發(fā)與網(wǎng)絡(luò)化對象模式,X++不需要處理,也無法處理。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美激情区一区二区三区| 五月激情五月天综合网| 丁香六月啪啪激情综合区| 麻豆tv传媒在线观看| 国产成人精品视频一二区| 日本免费一级黄色录像| 麻豆一区二区三区精品视频| 亚洲熟妇av一区二区三区色堂| 精品视频一区二区不卡| 美国欧洲日本韩国二本道| 亚洲成人黄色一级大片| 亚洲一级二级三级精品| 日本精品最新字幕视频播放| 国产欧美亚洲精品自拍| 美女极度色诱视频在线观看| 国产精品一区欧美二区| 好吊视频一区二区在线| 国产一区二区三区四区中文| 国产在线日韩精品欧美| 国产又黄又爽又粗视频在线| 草草夜色精品国产噜噜竹菊| 伊人天堂午夜精品草草网| 东京热男人的天堂一二三区| 日韩欧美好看的剧情片免费| 国产韩国日本精品视频| 成人日韩在线播放视频| 国产a天堂一区二区专区| 九九热九九热九九热九九热 | 中文字幕日韩一区二区不卡| 久久亚洲国产视频三级黄| 国产精品一区二区成人在线| 日本欧美一区二区三区高清| 色综合久久六月婷婷中文字幕| 久久99夜色精品噜噜亚洲av| 尹人大香蕉中文在线播放| 少妇在线一区二区三区| 国产一区欧美一区日韩一区| 人妻偷人精品一区二区三区不卡| 人妻乱近亲奸中文字幕| 老司机这里只有精品视频| 国产精品欧美一级免费|