どのようにモデル化時間にオブジェクト指向す。
-
23-09-2019 - |
質問
取り扱って異なるApiを使用する整数型モデル。けないように同意します。Ru,キーワード:秒でのミリ秒です。
これまでのエラーが出ないように思いを見つけることができ、ハンガリー語表記:durationInMillis,durationInSecondsいます。
こださいな、真にOOのモデリング期間?何かすることでタイプシステムを助けてくれるだけ誤りを犯さんが誤って処理時間(ミリ秒単位として時間が秒ます。
解決
で、それぞれの期間別のクラスおよび使用のミリ秒単位として権威のある形での使用を計算すなわち、過負荷機能 getMilliSeconds()
もの。
class Duration
{
...
virtual const unsigned long long getMilliSeconds() const;
...
}
class MilliSeconds : public Duration
{
...
};
class Seconds : public Duration
{
...
};
Allthoughい、より良い粒度でナノ秒単位がより良い権威ある表現。とにかく、授業の粒度な問題--例えば、時間は日です。
編集: が見たいと思い ブ::date_time インスピレーションを得るため、それは魅惑的です。
他のヒント
確かにそこにある:秒、ミリ秒からDuration
クラスのインスタンスを作成するファクトリメソッドのカップルで時間とスローを表現するクラスを作成します:
class Duration
{
public static Duration FromSeconds(int seconds)
{
// ...
}
public static Duration FromMilliseconds(int milliseconds)
{
// ...
}
}
このクラスは、単一の(好ましくは、読み取り専用)プロパティを提供するべきである - 例えば、Milliseconds
ために、特定のインスタンスにカプセル化されたミリ秒数を返すであろう
また、あなたがSeconds
性質を持つことができます。
(あなたのコンパイラがそれらを可能にしている場合)私は、彼らがここでの唯一の複雑な問題になるので、ここで任意の暗黙の型変換演算子を避けると思います。
あなたはインスピレーションのために TimeSpan
のを見てみることができます(あなたは.NETにしている場合や、完全にそれを使用します)。