1

私は、他の OO 言語の経験が豊富な初心者のオブジェクティブ C プログラマーです。

現在、私は単位変換を伴う電卓に取り組んでいます。私の最初の考えは、 MeasurementUnitという 2 つの抽象クラスを持つことでした。Unit のサブクラスには、MeterKilogramSecondなどがあります。これらのクラスには、基本単位 (おそらく SI 単位) に対する乗数に関する情報と、ラベルや説明などの UI に役立つ情報が含まれます。測定のサブクラスは、LengthMassTimeなどです。これらのクラスには、測定値と単位、および許可された変換を決定し、変換を実行するために必要なメソッドが含まれます。

「必要な Length クラスで共有される Meter クラスを 1 つだけにするにはどうすればよいですか?」などの質問があり始めています。および「そのタイプの測定に共通する、測定ごとに許可される単位のリストを保存するにはどうすればよいですか?」これにより、クラス階層を過剰に設計している可能性があると信じるようになりました。このタスクを達成するためのさまざまなアーキテクチャに関する提案や、初心者が気付いていない可能性のある言語機能について、私の実装に役立つ可能性があるかどうかを疑問に思っていました。

前もって感謝します。

4

3 に答える 3

1

そこで、Objective-Cで単位変換ライブラリを作成し、列挙型を使用しました。各コンバータークラス(Area、Lengthなどの異なるクラス)にはルックアップメソッドがありif()、指定されたユニットの乗数をベースユニットに返すステートメントがあります。次に、変換方法は、その単位から変換するか、その単位に変換するかに応じて、その数値で除算または乗算します。

于 2012-09-07T02:46:49.553 に答える
0

数量パターンを見てください。

重要なことは、これらのクラスが不変の値オブジェクトのように振る舞うことです。

また、本Analysis Patternsでは、 Measurements and Observationsについて詳しく説明しています。一見の価値があるかもしれません。

于 2012-09-07T01:36:20.503 に答える
0

基本的な変換以上のことを行うUnitsKitという測定単位ライブラリを作成しました。たとえば、m/s に秒を掛けると、メートルやフィートなどの長さの単位を取得できます。

クラス構造の基本的な概要は、値と派生単位を含む SMQuantity から始まります。派生単位は、それぞれ独自の次元指数を持つ 1 つ以上の基本単位で構成されます。各基本単位は、名前、記号、基本単位 (m は km の基本単位)、スケール、静的有理数、および次元で構成されます。見てください。

于 2013-08-24T10:03:49.227 に答える