Ejemplo n.º 1
0
        private readonly コマ数 koma;              // e.g. 12コマ

        public 予約期間(予約年月日 ReservationDate, 予約開始_時 予約開始_時, 予約開始_分 予約開始_分, コマ数 予約コマ数)
        {
            //todo: ビジネスルール:10:00-19:00までしか予約が出来ない
            // 予約開始時刻とコマ数を見て、10:00-19:00までしか予約できないことを確認する
            var 残コマ数 = コマ数.残コマ数を教えて(予約開始_時, 予約開始_分);

            if (!(残コマ数 >= 予約コマ数))
            {
                throw new ArgumentException($"{残コマ数}を超えることはできません");
            }

            //todo:
            // 1. このメソッドの中で、予約開始時刻のDateTimeとコマ数のDateTimeを貰って、
            // 計算をして、10:00-19:00以内だよね?ということを確認する
            // ↑DateTimeをおもらしするのは止めたほうが良さそう。
            //
            //   1-1: Range が終了時刻を判断する (from 予約開始時刻、コマ数)

            // 予約開始_時と予約開始_分を渡して、残コマ数が取れる。それを比較する。

            // 2. ↑の計算を予約開始時刻クラスか、コマ数クラスの中に委譲する?
            //   2-1: 予約開始時刻が最大コマ数とかをくれる?

            // 3. ↑もしかしたら、それ専用のクラスを作るか?

            // 最終手段. コマ数をやめて、予約終了時刻を作るか?

            this.ReservationDate = ReservationDate;
            this.予約開始_時          = 予約開始_時;
            this.予約開始_分          = 予約開始_分;
            this.koma            = 予約コマ数;
        }
Ejemplo n.º 2
0
        // こいつは,コマの数ではなくて、実は時間を返してあげる必要がある?

        public static コマ数 残コマ数を教えて(予約開始_時 開始_時, 予約開始_分 開始_分)
        {
            // TODO:日付と秒は適当
            // 日付は関係ない!
            DateTime time    = new DateTime(1900, 1, 1, (int)開始_時, (int)開始_分, 0);
            DateTime endTime = new DateTime(1900, 1, 1, 19, 0, 0); // TODO: 予約可能(?)な最終時刻を知っているのは誰?

            int miniute = (int)(endTime - time).TotalMinutes;

            return(new コマ数(miniute / コマあたりの分数));
        }