using System.Diagnostics.Contracts; namespace TypeDefinition.Models { /// /// 特性データ /// public partial class Characteristics { public Characteristics(double X, double Y, double Z) { Contract.Ensures(this.Validate()); this._X = X; this._Y = Y; this._Z = Z; } /// /// 特性 X /// public double X { get { return _X; } } private readonly double _X; /// /// 特性 Y /// public double Y { get { return _Y; } } private readonly double _Y; /// /// 特性 Z /// public double Z { get { return _Z; } } private readonly double _Z; /// /// 一次ノルム /// public double Norm { get { return X + Y + Z; } } public bool Validate() { return 0 <= X && X <= 1 && 0 <= Y && Y <= 1 && 0 <= Z && Z <= 1 && Norm >= 1; } } }