2016-03-31 6 views
0

私は小さな計算機アプリケーションを作って、OOPSの概念を学ぼうとしています。私はthis talkを見た。 多態性を使用してswitch文を回避する方法を示します。正しい子クラスインスタンスを取得するスイッチケースなし

私のアプリには4つのオペレータボタンがあります(+-/*)。私は演算子とオペランドに2つのスタックを使用しています ユーザーが任意のボタンのオペランドまたは演算子をタップすると、現在の式にインフィックスツリーを作成し、演算子を演算子スタックに保持しようとします。 ユーザーが「計算」を押すと、演算子スタックを通過し、演算子の優先順位に基づいて挿入記号ツリーを調整します。

は、私は、ValueNode抽象Nodeクラスを持っている - >Nodeを、抽象operatorNode、た。AddNode - > operatorNode、SubtractNode - >OperatorNodeのように。

私のコードは、上記の説明が不明な場合は、次のリンクから派生しています:

私の問題は、スイッチを使用せずにスタックから演算子charに基づいて正しい子クラスオブジェクトを作成するにはどうすればいいですか?

だから、どのように行う指定されたchar(+または-または*または/は)私はスイッチを使用せずにAddNodeまたはSubtractNodeを作成します。

+2

コードを記述するのではなく、投稿してください。あなたを理解して助けが簡単になります。 – Guy

答えて

0

正しいインスタンスを作成するファクトリにオペレータからマップを作成できます。
1だけマップに

マップにあると仮定することができますされていないものは何でも

それらを登録し、新しいオペランドを追加するときに、ツリーの作成を更新するために有するスイッチ
2.回避を避ける:あなたはこの方法でオペランド(定数または変数)

+0

gracias私の友人。 –

関連する問題