| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> c/c++ >> 使用Rational進行C++轉換的技巧
 

使用Rational進行C++轉換的技巧

2008-06-01 02:10:21  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  UML 是一個通用的語言。使用 IBM? Rational Software Architect 和 IBM Rational Systems Developer,您可以實現由 UML 模型向 C++ 的轉換。這篇文章討論了如何更好地控制由 UML 向 C++ 轉換而生成的 C++ 代碼。文章分成幾個章節,各部分相對獨立,分別介紹了一種技巧。您可以根據需要選讀,而不必遵循特定的次序。

  應用 C++ Transformation 概要文件以實現 C++ 結構的建模

  在統一建模語言 UML 和某特定領域之間建立聯系的標准方法是使用 UML PRofile(UML 概要文件)。UML 概要文件可以爲已有 UML 元素定義附加語義和特性,例如類、操作等。建模 C++ 特定元素的時候,如 結構體、聯合體、名字空間 等,需要用到 UML 概要文件。在 Rational Software Architect 和 Rational Systems Developer 使用 C++ Transformation profile 實現 UML 向 C++ 的轉換,這個概要文件在 UML 模型中的應用如下所示。

  在 Project EXPlorer 中選擇概要文件將要應用的 UML 模型。

  在 Project Explorer 保持模型是選中狀態,轉換到 Properties View,單擊 Profiles 選項卡。

  如圖1所示,單擊 Add Profile 按鈕。

  圖1. 將 UML 運用到 C++ Transformation 概要文件

使用Rational進行C++轉換的技巧


  如圖2所示,從 Deployed Profile 下拉列表框中選擇 C++ Transformation。

  圖2. 選擇 C++ Transformation

使用Rational進行C++轉換的技巧


  導入 C++ 類型庫

  UML 提供了一組已定義好的類型,有 Boolean, Integer, String 和 UnlimitedNatural。而大多數的編程語言,包括C++,提供了更爲豐富的基本類型。在 C++ 中建模的時候,您可能經常需要使用 C++ 預定義的原始類型(比如,將一個類型賦給某個屬性、參數、操作返回類型,等)。To import the C++ model library that is shipped with the C++ Transform,在 Project Explorer 中右鍵單擊UML模型,然後選擇 Import Model Library,如下圖3所示。

  圖3. 導入 C++ 類型庫

使用Rational進行C++轉換的技巧


  如圖4所示,從 Deployed Library 列表中選擇 C++ Types。

  圖4. 導入 C++ Type Library

使用Rational進行C++轉換的技巧


  在模型中創建 C++ 名字空間

  本章節講述如何在 UML 模型中爲 C++ 名字空間建模。在 C++ 中創建一個名字空間時,需要將 cpp_namespace 原型應用在 UML 包。在 UML 向 C++ 轉換的過程中,一個 UML 包默認被映射成一個文件夾。假如想要將 UML 包映射成名字空間,而不是文件夾,那麽,您需要應用 cpp_namespace 原型,然後設置 NamespaceName 的屬性,使其與指定的名字空間相關聯。這個 stereotyped UML 包下所有的 類、結構、枚舉 (以及其它)生成代碼之後,都將包括在這個名字空間中。

  您可能想知道爲什麽名字空間不能直接采用 stereotyped 包的名稱。這是爲了支持 C++ 匿名的名字空間建模。所以,假如您將 NamespaceName 屬性設置爲空,那麽,該名字空間就會被認爲是匿名的。

  建模 C++ typedefs

  要建模 C++ typedef,需要創建一個 UML 類並在其上應用 cpp_typdef 原型。該原型提供了以下屬性/值:

  arrayDimensions

  ImplementationType

  qualifier

  想要創建一個類型定義,比如 typedef int const IntMatrix100_20_t [10][20];,首先創建一個 UML 類 IntMatrix100_20_t,然後應用 cpp_typedef 原型。如圖5所示,設置該原型的屬性。

  圖5. 建立一個 C++ 類型定義

使用Rational進行C++轉換的技巧


  在將 typedef 定義與概要文件中提供的屬性相關聯的過程中,您可能會考慮到以下方式: typedef

  創建多維數組屬性

  在本節中,您將會學到如何爲一個大小爲[10][20][30]的三維數組定義屬性。在 Project Explorer 中選擇需要賦給多維數組的屬性。在 Properties 視圖中,單擊 Stereotypes 選項卡,然後單擊 Apply Stereotypes 按鈕,並選擇 cpp_type 原型。這個原型提供了以下屬性/值:

  arrayDimensions

  InitializerKind

  isAuto

  isMutable

  isRegister

  isVolatile

  qualifier

  如圖6所示,在 arrayDimensions Value 處,指定 [10][20][30]。這樣,在源代碼中就會生成維度屬性爲[10][20][30]的數組。

  圖6. 設置 Multidimensional Attributes

  將一個方法的形參設置爲常量

  這個技巧的原理同上(前面提到的定義多維數組)。在 Project Explorer 中選擇預備設置爲 const 的參數。單擊 Apply Stereotypes 按鈕並選擇 cpp_type 原型。該類型提供了以下屬性/值:

  arrayDimensions

  InitializerKind

  isAuto

  isMutable

  isRegister

  isVolatile

  qualifier

  這些屬性都是可能用得到的,但暫時只介紹 qualifier 屬性。在 qualifier 的 Value 處,輸入 const (如 圖5 所示)。這樣,當轉換執行的時候,將在源代碼中爲選定的參數生成帶有常量修飾符的函數簽名。

  注: 請確保輸入的值是有效的。假如輸入錯誤,則會導致編譯失敗,您需要在再次運行轉換之前修正錯誤。

  另外,cpp_type 原型也適用于類的屬性。但是,生成一個常量屬性的更簡單的方法是將屬性標明爲 Read Only。

  將整個方法聲明爲常量

  假設您想要將一個方法聲明爲常量,以便在生成的代碼中帶有 const 要害字: )int Operation1(MyType Parameter1 const;。您需要在 Properties 視圖的 General 選項卡中選擇 Query 修飾符。這裏,不需要應用原型。

  圖7. 創建一個常量方法

使用Rational進行C++轉換的技巧


  給一個方法增加異常處理

  Exceptions 是 UML 中重要的類,它在建模過程中不需要使用概要文件。爲了簡化並推廣建模, UML to C++ Transformation 使用了普遍適用的 UML 屬性,而不是概要文件。要生成一個 throw 子句,比如 int Operation1() throw ( MyType);,您首先需要爲操作創建一個參數,然後設置其 Is Exception 屬性爲 true。

  在轉換過程中,參數名是可以被忽略的,但最好還是定義一個合適的名稱(以備異常抛出時正確提示)。圖8顯示了如何將參數的 Is Exception 屬性設置爲 true。

  圖8. 設置某方法的 throw 類型

使用Rational進行C++轉換的技巧


  控制生成的代碼中的 include 聲明

  UML to C++ Transformation 可以自動生成恰當的 include 聲明。 然而,您可能想要根據需要生成更合適的 include 聲明。例如,已確定要使用本地方法體的某個類型變量,因此,想要生成包括在文件中的 include 聲明建模時,您可能需要創建兩個類之間的依靠,然後將 cpp_dependency 原型應用在依靠。這個原型和名爲 IsInclusionInHeader 的屬性一起出現,該屬性值默認爲 false。假如需要將 include 聲明包括在生成的文件體中,請將這個屬性值設爲 false;假如需要將 include 聲明生成在頭文件中,那麽,可以不設置依靠的 cpp_dependency 原型,也可以應用原型並將 IsInclusionInHeader 屬性值設爲 true。

  使用文件級別得重用保護部分

  假如要使用標准庫的類型,或者一些源代碼的其它庫,您需要在模型中將這些類型設置爲普通的字符串。例如,假如要將一個屬性聲明爲整型,您需要在模型中指定它的類型爲 vector 轉換時,將會把這些類型當成原始類型,並且不會生成任何 include 聲明或其它聲明。因此,您需要將這些都明確地包含進源文件中。

  比如,對于 vector 類型,您應當明確地將 include 聲明放置在源代碼中,比如 #include 。如列表1所示,在應用 UML 向 C++ 的轉換過程中,每個生成的文件都一字不漏地包含一些段落的內容。請注重 //TODO: Add definitions that you want preserved。您添加到 Begin section 和 End section 中的任何內容都將被保存下來。請在此處添加聲明,比如這裏的 #include 。

  列表1. 類 Car 所生成代碼

  

  #ifndef CLASS1_H

  #define CLASS1_H

  //Begin section for file Class1.h

  //TODO: Add definitions that you want preserved

  //End section for file Class1.h

  #include "MyType.h"

  //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"

  class Class1

  {

  //Begin section for Class1

  //TODO: Add attributes that you want preserved

  //End section for Class1

  public:

  //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"

  int Operation1()const throw ( MyType);

  }; //end Class Class1

  #endif

  刪除類級別得重用保護部分

  請注重,在前面列表1的代碼中,有一段 //Begin section for Class1 ... //End section for Class1 ,您可以將 C++ 中所有不能建模的聲明保存在這裏。返回 UML to C++ Transformation 時,不會覆蓋這段聲明。假如您不需要這一聲明出現在生成的代碼中,可以選擇刪除。但是,刪除之後,即使再次運行 UML to C++ Transformation,這些聲明也不會重新生成。

  假如不需要,可以刪除如列表2所示的段落,那麽刪除之後不能夠重新生成。假使想要恢複這些聲明,您就需要手動地進行插入。

  列表2. 類 Car 生成的代碼

  

  ...

  //Begin section for Class1

  //TODO: Add attributes that you want preserved

  //End section for Class1

  ...

  不修改 UML 模型的情況下,改變生成包的名稱。

  要改變包的名稱,請雙擊打開轉換配置文件。如圖9所示,單擊 Mapping 選項卡,選擇 Enable mapping。

  圖9. 使用映射模型

使用Rational進行C++轉換的技巧


  單擊 New 按鈕,創建一個默認的映射模型,賦給一個適合的名稱。單擊 Edit Mapping 按鈕,出現如圖10所示的對話框。

  圖10. 編輯映射模型

使用Rational進行C++轉換的技巧


  假使您正進行到如圖11所示的 UML 模型。假如沒有映射模型,那麽 Date 類將會生成在一個名爲 Package1 的文件夾內。然而,假如您想要將 Package1 生成爲 Folder1,那麽需要使用映射模型。浏覽映射模型,找到 Package1,然後在向導底端的 Mapped Name 編輯框輸入 Folder1。這樣,在生成的代碼中,Date 類就生成在名爲 Folder1 的文件夾內了。

  圖11. 您正在操作的 UML 模型

  在同一個文件裏生成多個類

  在映射模型中,假如您想將一個 UML 類映射爲另外的名稱,您需要改變其將要生成文件的名稱,而不是類名。默認情況下,頂級類將生成一個與類名相同名稱的文件。因此,對于一個名爲 MyClass 的 UML 類,UML 向 C++ 的轉換將會生成文件 MyClass.h 和 MyClass.cpp。

  但是,在使用映射模型的時候,您也可以選擇生成與原類名不同名稱的文件。比如,您可以改變 UML 包的名稱,生成另外命名的文件夾;您也可以將一個 UML 類映射爲另外命名的文件。類的名稱並不受映射模型的影響。因此,要想在一個文件中生成多個類,您所需要做的僅僅是在映射模型中爲它們指定相同的目標名稱。
 
 
 
上一篇《C++ builder 的文件讀寫操作總結》
下一篇《Win32下兩種用于C++的線程同步類(上)》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
  UML 是一個通用的語言。使用 IBM? Rational Software Architect 和 IBM Rational Systems Developer,您可以實現由 UML 模型向 C++ 的轉換。這篇文章討論了如何更好地控制由 UML 向 C++ 轉換而生成的 C++ 代碼。文章分成幾個章節,各部分相對獨立,分別介紹了一種技巧。您可以根據需要選讀,而不必遵循特定的次序。   應用 C++ Transformation 概要文件以實現 C++ 結構的建模   在統一建模語言 UML 和某特定領域之間建立聯系的標准方法是使用 UML PRofile(UML 概要文件)。UML 概要文件可以爲已有 UML 元素定義附加語義和特性,例如類、操作等。建模 C++ 特定元素的時候,如 結構體、聯合體、名字空間 等,需要用到 UML 概要文件。在 Rational Software Architect 和 Rational Systems Developer 使用 C++ Transformation profile 實現 UML 向 C++ 的轉換,這個概要文件在 UML 模型中的應用如下所示。   在 Project EXPlorer 中選擇概要文件將要應用的 UML 模型。   在 Project Explorer 保持模型是選中狀態,轉換到 Properties View,單擊 Profiles 選項卡。   如圖1所示,單擊 Add Profile 按鈕。   圖1. 將 UML 運用到 C++ Transformation 概要文件   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423204311.gif[/img][/url]   如圖2所示,從 Deployed Profile 下拉列表框中選擇 C++ Transformation。   圖2. 選擇 C++ Transformation   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423219496.gif[/img][/url]   導入 C++ 類型庫   UML 提供了一組已定義好的類型,有 Boolean, Integer, String 和 UnlimitedNatural。而大多數的編程語言,包括C++,提供了更爲豐富的基本類型。在 C++ 中建模的時候,您可能經常需要使用 C++ 預定義的原始類型(比如,將一個類型賦給某個屬性、參數、操作返回類型,等)。To import the C++ model library that is shipped with the C++ Transform,在 Project Explorer 中右鍵單擊UML模型,然後選擇 Import Model Library,如下圖3所示。   圖3. 導入 C++ 類型庫   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423219817.gif[/img][/url]   如圖4所示,從 Deployed Library 列表中選擇 C++ Types。   圖4. 導入 C++ Type Library   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423219947.gif[/img][/url]   在模型中創建 C++ 名字空間   本章節講述如何在 UML 模型中爲 C++ 名字空間建模。在 C++ 中創建一個名字空間時,需要將 cpp_namespace 原型應用在 UML 包。在 UML 向 C++ 轉換的過程中,一個 UML 包默認被映射成一個文件夾。假如想要將 UML 包映射成名字空間,而不是文件夾,那麽,您需要應用 cpp_namespace 原型,然後設置 NamespaceName 的屬性,使其與指定的名字空間相關聯。這個 stereotyped UML 包下所有的 類、結構、枚舉 (以及其它)生成代碼之後,都將包括在這個名字空間中。   您可能想知道爲什麽名字空間不能直接采用 stereotyped 包的名稱。這是爲了支持 C++ 匿名的名字空間建模。所以,假如您將 NamespaceName 屬性設置爲空,那麽,該名字空間就會被認爲是匿名的。   建模 C++ typedefs   要建模 C++ typedef,需要創建一個 UML 類並在其上應用 cpp_typdef 原型。該原型提供了以下屬性/值:   arrayDimensions   ImplementationType   qualifier   想要創建一個類型定義,比如 typedef int const IntMatrix100_20_t [10][20];,首先創建一個 UML 類 IntMatrix100_20_t,然後應用 cpp_typedef 原型。如圖5所示,設置該原型的屬性。   圖5. 建立一個 C++ 類型定義   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423220055.gif[/img][/url]   在將 typedef 定義與概要文件中提供的屬性相關聯的過程中,您可能會考慮到以下方式: typedef   創建多維數組屬性   在本節中,您將會學到如何爲一個大小爲[10][20][30]的三維數組定義屬性。在 Project Explorer 中選擇需要賦給多維數組的屬性。在 Properties 視圖中,單擊 Stereotypes 選項卡,然後單擊 Apply Stereotypes 按鈕,並選擇 cpp_type 原型。這個原型提供了以下屬性/值:   arrayDimensions   InitializerKind   isAuto   isMutable   isRegister   isVolatile   qualifier   如圖6所示,在 arrayDimensions Value 處,指定 [10][20][30]。這樣,在源代碼中就會生成維度屬性爲[10][20][30]的數組。   圖6. 設置 Multidimensional Attributes      將一個方法的形參設置爲常量   這個技巧的原理同上(前面提到的定義多維數組)。在 Project Explorer 中選擇預備設置爲 const 的參數。單擊 Apply Stereotypes 按鈕並選擇 cpp_type 原型。該類型提供了以下屬性/值:   arrayDimensions   InitializerKind   isAuto   isMutable   isRegister   isVolatile   qualifier   這些屬性都是可能用得到的,但暫時只介紹 qualifier 屬性。在 qualifier 的 Value 處,輸入 const (如 圖5 所示)。這樣,當轉換執行的時候,將在源代碼中爲選定的參數生成帶有常量修飾符的函數簽名。   注: 請確保輸入的值是有效的。假如輸入錯誤,則會導致編譯失敗,您需要在再次運行轉換之前修正錯誤。   另外,cpp_type 原型也適用于類的屬性。但是,生成一個常量屬性的更簡單的方法是將屬性標明爲 Read Only。   將整個方法聲明爲常量   假設您想要將一個方法聲明爲常量,以便在生成的代碼中帶有 const 要害字: )int Operation1(MyType Parameter1 const;。您需要在 Properties 視圖的 General 選項卡中選擇 Query 修飾符。這裏,不需要應用原型。   圖7. 創建一個常量方法   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423220359.gif[/img][/url]   給一個方法增加異常處理   Exceptions 是 UML 中重要的類,它在建模過程中不需要使用概要文件。爲了簡化並推廣建模, UML to C++ Transformation 使用了普遍適用的 UML 屬性,而不是概要文件。要生成一個 throw 子句,比如 int Operation1() throw ( MyType);,您首先需要爲操作創建一個參數,然後設置其 Is Exception 屬性爲 true。   在轉換過程中,參數名是可以被忽略的,但最好還是定義一個合適的名稱(以備異常抛出時正確提示)。圖8顯示了如何將參數的 Is Exception 屬性設置爲 true。   圖8. 設置某方法的 throw 類型   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423220426.gif[/img][/url]   控制生成的代碼中的 include 聲明   UML to C++ Transformation 可以自動生成恰當的 include 聲明。 然而,您可能想要根據需要生成更合適的 include 聲明。例如,已確定要使用本地方法體的某個類型變量,因此,想要生成包括在文件中的 include 聲明建模時,您可能需要創建兩個類之間的依靠,然後將 cpp_dependency 原型應用在依靠。這個原型和名爲 IsInclusionInHeader 的屬性一起出現,該屬性值默認爲 false。假如需要將 include 聲明包括在生成的文件體中,請將這個屬性值設爲 false;假如需要將 include 聲明生成在頭文件中,那麽,可以不設置依靠的 cpp_dependency 原型,也可以應用原型並將 IsInclusionInHeader 屬性值設爲 true。   使用文件級別得重用保護部分   假如要使用標准庫的類型,或者一些源代碼的其它庫,您需要在模型中將這些類型設置爲普通的字符串。例如,假如要將一個屬性聲明爲整型,您需要在模型中指定它的類型爲 vector 轉換時,將會把這些類型當成原始類型,並且不會生成任何 include 聲明或其它聲明。因此,您需要將這些都明確地包含進源文件中。   比如,對于 vector 類型,您應當明確地將 include 聲明放置在源代碼中,比如 #include 。如列表1所示,在應用 UML 向 C++ 的轉換過程中,每個生成的文件都一字不漏地包含一些段落的內容。請注重 //TODO: Add definitions that you want preserved。您添加到 Begin section 和 End section 中的任何內容都將被保存下來。請在此處添加聲明,比如這裏的 #include 。   列表1. 類 Car 所生成代碼   #ifndef CLASS1_H   #define CLASS1_H   //Begin section for file Class1.h   //TODO: Add definitions that you want preserved   //End section for file Class1.h   #include "MyType.h"   //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"   class Class1   {   //Begin section for Class1   //TODO: Add attributes that you want preserved   //End section for Class1   public:   //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"   int Operation1()const throw ( MyType);   }; //end Class Class1   #endif   刪除類級別得重用保護部分   請注重,在前面列表1的代碼中,有一段 //Begin section for Class1 ... //End section for Class1 ,您可以將 C++ 中所有不能建模的聲明保存在這裏。返回 UML to C++ Transformation 時,不會覆蓋這段聲明。假如您不需要這一聲明出現在生成的代碼中,可以選擇刪除。但是,刪除之後,即使再次運行 UML to C++ Transformation,這些聲明也不會重新生成。   假如不需要,可以刪除如列表2所示的段落,那麽刪除之後不能夠重新生成。假使想要恢複這些聲明,您就需要手動地進行插入。   列表2. 類 Car 生成的代碼   ...   //Begin section for Class1   //TODO: Add attributes that you want preserved   //End section for Class1   ...   不修改 UML 模型的情況下,改變生成包的名稱。   要改變包的名稱,請雙擊打開轉換配置文件。如圖9所示,單擊 Mapping 選項卡,選擇 Enable mapping。   圖9. 使用映射模型   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423220536.gif[/img][/url]   單擊 New 按鈕,創建一個默認的映射模型,賦給一個適合的名稱。單擊 Edit Mapping 按鈕,出現如圖10所示的對話框。   圖10. 編輯映射模型   [url=/bbs/detail_1785447.html][img]http://image.wangchao.net.cn/it/1323423220617.gif[/img][/url]   假使您正進行到如圖11所示的 UML 模型。假如沒有映射模型,那麽 Date 類將會生成在一個名爲 Package1 的文件夾內。然而,假如您想要將 Package1 生成爲 Folder1,那麽需要使用映射模型。浏覽映射模型,找到 Package1,然後在向導底端的 Mapped Name 編輯框輸入 Folder1。這樣,在生成的代碼中,Date 類就生成在名爲 Folder1 的文件夾內了。   圖11. 您正在操作的 UML 模型   在同一個文件裏生成多個類   在映射模型中,假如您想將一個 UML 類映射爲另外的名稱,您需要改變其將要生成文件的名稱,而不是類名。默認情況下,頂級類將生成一個與類名相同名稱的文件。因此,對于一個名爲 MyClass 的 UML 類,UML 向 C++ 的轉換將會生成文件 MyClass.h 和 MyClass.cpp。   但是,在使用映射模型的時候,您也可以選擇生成與原類名不同名稱的文件。比如,您可以改變 UML 包的名稱,生成另外命名的文件夾;您也可以將一個 UML 類映射爲另外命名的文件。類的名稱並不受映射模型的影響。因此,要想在一個文件中生成多個類,您所需要做的僅僅是在映射模型中爲它們指定相同的目標名稱。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
陽光靓麗的模特兒(8)
陽光靓麗的模特兒(7)
陽光靓麗的模特兒(6)
陽光靓麗的模特兒(5)
秋-印象
德慶盤龍峽 一
松江印象之三
雲之南(寬幅)
 
>>返回首頁<<
 
 
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有