1

私はゼロから始めたコース プロジェクトに VS2012 を使用しています。C++ を使用して次のようなものを作成します (集計部分が逆になっていると思います)。

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

ええと、私たちは紙にそれを持っていて、問題なく各クラスのコードを書きましたが、各クラスはその時点で完成していなかった別のクラスに依存しているためテストできません。簡単に言うと、各クラスにはテストされていない独自のコードがあり、VS はエラーをまったく検出しません。これまでの経験に基づいて、コードが正しいこと、とにかく構文エラーがないことがわかっています。

コンパイルを開始すると、500個のエラーがどこからともなく出てきます。そのうちのいくつかは「time.h」に記載されています。コンパイラに問題があると思い、C::Bに切り替えて動作するかどうかを確認しましたが、別のコンパイラで、大きなファイルをダウンロードする時間がありません。真剣に、締め切りは2日で、インターネットの速度は最低です。

ここでいくつかの調査を行い(そしてグーグルで調べました)、循環依存関係に絞り込み、VSで図を描画してコードファイルを取得できることを学びましたが、残念ながら、C++コードを持っている間はC#でそれを行います)。

この図を C++ で実現するにはどうすればよいですか? どのクラスにどのヘッダーを含める必要がありますか? 今後これを回避するにはどうすればよいですか?


編集:すべての依存関係を削除し、プリコンパイル済みヘッダーを無効にすることで解決しました(必要かどうかはわかりません)。次に、各 .h を対応する .cpp に含め、必要なすべてのヘッダーを各 .h に含めました使用する。私の問題を本当に解決しなかったのは、宣言だけでした!!! #ifndef myclassを実行し、各ヘッダーに #define myclassを使用し、使用するクラスを宣言しました。これは「前方宣言」と呼ばれるものだと思います (間違っている場合は訂正してください) とにかく、最終的にコンパイルしてテストを開始します。

コメントがあれば、ぜひ追加してください。

4

1 に答える 1

0

循環的な「依存」が可能です。なぜだめですか?それらはそうではありませんdependenciesassociations、目に見えるナビゲーション機能を備えているためです。しかし、ここでいくつかの問題があります。

  • 予約は会員ナビがあったほうがいいです。後方もそうかもしれません。ただし、Reservation には属性として Member インスタンスが必要です。もっと簡単な方法です。

  • また、Rental は、DVD と Customer の間の関連付けのクラス表現です。また、それらのインスタンスを属性として持つ必要があります。繰り返しますが、戻るナビゲーションは可能ですが、必要ですか? 多分。

別の問題:

  • タイトルと DVD の集約には正しい方向がありますが、タイトルのない DVD は存在しないため、コンポジットである必要があります。

テスト:最初にモックを作成してクラスを他のクラスから分離し、単体テストを実行できます。デバッグ後、モックを実際のクラスに置き換え始めます。その後、モックなしで単体テストを試してから、自動入力/出力/比較を使用して通常の自動テストを試してください。

コード エンジニアリングについては、VP UML エンタープライズ「テスト用バージョン」および/または Sparx のエンタープライズ アーキテクト、評価プロフェッショナル バージョンをダウンロードしてください。どちらも C++ でコード エンジニアリングを行うことができます。

于 2014-02-10T21:38:13.050 に答える