5

ダイナーの食事をモデル化する必要があるとしましょう。

食事はいくつかの「構成要素」で構成されます。

  1. (フライドポテトまたはライスまたはウェッジ)
  2. AND(6種類の飲料の1つ)
  3. AND(7つの異なるソースのうちの1つまたは2つ、またはまったくない)

別の食事は次のもので構成できます。

  1. (サラダまたはご飯)
  2. AND(にんにくまたはにんにくなし)

それ以上の食事は以下から構成されます:

  1. フライドポテト

  2. ただの飲み物

  3. ただ ...

これをどのようにモデル化できますか?(UML、実体関連、コード、...あなたが最もよく説明できるものは何でも)

おそらく、私が実行したいいくつかのタスクを知っていると役立つでしょう。

  • 顧客が最初に食事を選択し、残りのすべての「アドオン」を表示できるようにします。
  • コンポーネントのリストから食事を検出します。たとえば、顧客がフライドポテト、ソース、飲み物を注文した場合、最初の例から食事を検出できるはずです。

すべてのコンポーネントを記事に分割し、「フライドポテト」を「チーズバーガー」、「シュニッツェル」、「...」の補足としてマークするための何らかの役割マッピングを追加することを考えましたが、複数の追加をモデル化するにはどうすればよいか疑問に思いました-ons、オプションのアドオン、n-out-of-mアドオン..

あなたが私を助けてくれることを願っています...

4

5 に答える 5

1
  1. 注文は、食事、コンポーネント、または両方の組み合わせのいずれかで構成できるように思われるので、s とs のOrderリストを持つクラスがあると言えます。 をサブクラス化するか、同じインターフェースを実装する必要があります。ComponentMealMealComponent
  2. はいくつMealかの「スロット」で構成されており、いくつかの のセットで埋めることができますComponent。 s は、自分が持っているスロットの数と、それらを埋めることができるMeals を知っている必要があります。Component
  3. Meal「s のリストから a を検出するComponent」という質問はトリッキーです。頭のてっぺんから、私が考えることができる最良の方法Mealは、 のリストを取り、それがそれらから作成できるComponent場合に true を返すメソッドをそれぞれに与えることです (または、それを構成する sのサブセット)。 は、知っている のリストを調べて、それらのいずれかが現在の のから作成できるかどうかを確認します。ただし、これを行うためのより良い方法があるかもしれません。MealComponentMealOrderMealComponentOrder

お役に立てれば!

于 2009-02-28T16:35:33.327 に答える
1

これが宿題であれば問題ないかもしれません...しかし、これが実際のアプリで使用される場合は、食品ごとに具体的なクラスを使用しないことを強くお勧めします。上記のおすすめのコーラ教室、サラダ教室、ライス教室など。これは、アプリケーションを柔軟性のないものにする確実な方法です。

名前のプロパティなどを持つ食品クラスと飲み物クラスがあれば、はるかに良いでしょう..

新しいスペシャルアイテムやフードアイテムがあるからといって、アプリケーション全体を再構築しなければならないことを想像してみてください...クールではありません;)。

他の回答に欠けているのは、グループのアイデアだと思います。各食品アイテムは、他のアイテムと一緒にグループに属することも、単独でグループに属することもできます。

フライドポテト、ライス、ウェッジがグループ A に属しているとします。ドリンクはグループ B に属します。次に、コンボをグループのリストとしてモデル化できます。Aグループ1点とBグループ1点、またはAグループ2点とBグループ1点。

食品を同時に複数のグループに所属させることもできます...オプションをより柔軟にすることができます。

すべての関係を定義する db モデルは複雑になる可能性がありますが、必要だと思います。

おそらく次のようなものです:

group(id, name, desc) - 似たようなアイテムのグループ - 前菜、前菜、飲み物など

foodItem(id, name, desc)- フライドポテト、ライスなどの 1 つのアイテムを表します。

foodItem_group(foodIgem_Id, group_Id)- 食料品をグループにマッピングします - 多対多

combo(id, name, desc)- コンボを説明

combo_group(combo_Id, group_Id)- グループをコンボにマッピング - 多対多

これは、基本的な必要なモデルを表すのに役立つと思います-追加のテーブルに、顧客が実際に注文したものを保存する必要がある場合があります..もちろん、顧客の注文がコンボと一致するかどうかを検出することは、ビジネスロジックに任されています.

于 2009-02-28T17:55:20.123 に答える
0

これは最終的にデータベースに保存されると思います。2 つのテーブルを作成することをお勧めします。

  1. コンポーネント(フライドポテト、サラダ、ガーリックなど)を保存します
  2. id1、id2、関係。関係は次のとおりです。
    • 属する
    • 仲良くやっていく

「属している」関係に基づいて、すべてのコンポーネントが特定の食事に属しているかどうかを確認できます。次に、その食事に属するすべてのコンポーネントを選択して、選択したコンポーネントが食事の 50% 以上を占める場合にその食事を提案します。

「合う」関係に基づいて、食事や選択したコンポーネントへのアドオンを提案できます。

于 2009-02-28T16:31:54.427 に答える