2014-02-10 277 views
1

我正在使用VS2012開始我們從頭開始的課程項目,我們將使用C++來創建類似這樣的東西(我認爲聚合部分是相反的):將UML類圖轉換爲C++代碼(VS 2012)

https://www.dropbox.com/s/w2zh7yltbups6cm/class.png

好了,我們只好在紙上,寫的代碼爲每個類都沒有問題,但我們無法測試,因爲每一個類依賴於另一個,這不是在按時完成。長話短說:每個類都有自己未經測試的代碼,並且VS不會檢測到任何錯誤,並且基於我們以前的經驗,我們知道代碼是正確的,無論如何都沒有語法錯誤。

當我開始編譯大約500個錯誤時,無處不在,其中一些在「time.h」中說,我認爲它在編譯器中出錯了,嘗試切換到C :: B並查看它是否工作但我需要一個不同的編譯器,我沒有時間下載任何大文件,嚴重的是,在兩天內完成最後期限並且網速很快。我在這裏做了一些研究(並用google搜索)我把它縮小到循環依賴,我學會了我可以在VS中繪製圖表並獲取代碼文件,不幸的是它在C#中執行,而我有一個C++代碼(它必須是C++)。

如何在C++中實現此圖?哪個類應該包含哪些頭文件? 我將來如何避免這種情況?


編輯: 通過刪除所有的依賴和禁用預編譯頭(真的不知道,如果我不得不)解決了這個問題,那麼我包含在其相應的.cpp每個.H,然後我列入每個.h每個頭需要使用。 所有這些都沒有真正解決我的問題,這是聲明! 我做的#ifndef MyClass的和#define MyClass的每個頭,並宣佈了使用的類,我認爲這就是被稱爲「前進宣言」(糾正我,如果我錯了) 反正它終於編譯和我將開始測試。

如果您有任何意見,那麼請務必添加它們。

回答

0

循環「依賴」可以。爲什麼不?因爲它們不是dependencies,但associations具有可見的導航性。但你在這裏有一些問題。

  • 預約最好有會員導航。落後也可能是。但保留應該有作爲屬性的成員實例。這是更簡單的方法。

  • 另外Rental也是DVD和Customer之間關聯的類表示。並且應該將它們的實例作爲屬性。再次,後退導航是可能的,但你需要它嗎?也許。

另一個問題:

  • 標題-DVD聚集有正確的方向,但它應該是複合材料,因爲有沒有標題中沒有DVD。

測試:你可以做單元測試,首先嘲諷隔離,其他的類。在開始調試之後,用真正的類來替換模​​擬。之後,嘗試單元測試沒有嘲笑,然後正常的自動測試,與自動輸入/輸出/比較。

至於代碼工程,下載VP UML企業「測試版」和/或的Sparx的企業架構師,EVAL專業版。他們都可以用C++進行代碼工程。

+0

謝謝,我最終做了你所描述的。 我會檢查出這些程序以備將來使用。 原來我們遇到了語言本身的問題,一旦我們解決了問題,我們就完全測試了我們的代碼,但我知道這不是最佳做法,但我們已經過了緊迫的截止日期。 整個應用程序現在正在處理一些小錯誤。 – Maverick

+0

@Maverick小心,他們不理想。有些概念很難在其中顯示。但他們是我們擁有的最好的。 Eclipse Papyrus非常強大且免費,但它仍然處於Beta階段,遠未就緒。 – Gangnus