2016-07-18 13 views
2

UMLダイアグラムを使用してCプログラムを記述している場合、合成と集計を行うことはできますか?オブジェクト指向言語用に予約されていますか?UMLダイアグラム(C言語)

たとえば、特定のコードのライフサイクルがそのファイルを使用しているユーザーに依存しているため、コードの特定のセグメントのみに使用されているソース内に構造体またはバッファがあるとします。右?

アソシエーションとダイレクトアソシエーションを使用する必要がありますか?

+0

UMLのクラス図は、実際にクラスを持つ言語(ある種の名前)に適しており、Cではそうではありません。それにもかかわらず、UMLクラスを使用してC構造体の型を表現することはできます。その場合、集約とコンポジションのコンセプトはCにマップされます - 一つの構造体がメンバとして別のインスタンスまたは配列を含むときにはコンポジションを使用し、最初の構造体に*ポインタ*またはポインタの配列もう片方に。 –

+0

なぜCが直接サポートしていないのか、あなたはCでOOプログラムを書くことができます。 (これはとにかくまだ議論の余地があります) – Olaf

+0

埋め込まれたCのUML図を理解しようとした時を思い出します。この考えを残す方が良いとの結論に達しました... –

答えて

4
  1. はい、どの言語のプログラムでも記述できます。オブジェクト(構造、W/E)は、それがタイトな別のオブジェクトと結合されたライフサイクルだた

  2. あなたはどちらのポジションでも集約ある説明は何

  3. を集約ない、組成物です。特定のコードセグメントでのみ有効な特定の構造体/バッファのライフサイクルは、シーケンスダイアグラム(バッファを取得し、リリースバッファコールはダイアグラムに表示する必要があります)でよりよく表現できます。

  4. CompositionとCでの集約POD構造体について考えてみましょう。それらの中には、内部の他のPOD構造体を参照するものもあります。参照にメモリ所有権がある場合、それは合成(例えば、リリースする必要のあるポインタ)です。参照にメモリの所有権がない場合は、集約です(例:構造体を解放するときに解放する必要のないポインタ)。

+1

私は何とかC- (私はしばしば<を使いますが、その意味を説明する限り、どんな名前でもOKです)。これらのステレオタイプのクラスは、実際のクラスではなく、ちょうど操作を伴うCファイルです。 –