TDD Boot Camp(TDDBC) - TDDBC横浜3rd/演習 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
!お題 : Javaの奇妙なバージョン
""*Limited Updateは20の倍数を割り当てる
""*Critical Patch Update(CPU)には5の倍数を割り当てる。倍数が偶数になる場合にはさらに1を加算して奇数へ変更する
""*Limited UpdateとCPU以外の予定外のアップデート(Security Alert 等)はそれらバージョン番号の間の数字を使用する
!!例
JDK7u40
* 7 : family number
* 40 : update number
!!!バージョンアップ
* LUされたら → JDK7u60
* CPUされたら → JDK7u45 → JDK7u51
* その他 → JDK7u41
!!最初に
''この仕様に矛盾点がないかペアで相談してみよう!''
!!題1 : validかどうか調べよう
Version.isValid("JDK7u40")
#=> true
Version.isValid("hoge")
#=> false
Version.isValid("JDK7u9x")
#=> false
!!題2 : parseしよう
v = Version.parse("JDK7u40")
#=> JDK7u40を示すオブジェクトを返す
v.familyNumber #=> 7
v.updateNumber #=> 40
Version.parse("JDK7u9x") #=> 例外
!!題3 : 大小比較しよう
u40 = Version.parse("JDK7u40")
u51 = Version.parse("JDK7u51")
jdk8u0 = Version.parse("JDK8u0")
u40.lt(u51) #=> true
u40.gt(u51) #=> false
u40.lt(jdk8u0) #=> true
jdk8u0.gt(u51) #=> true
# ↑ 言語に応じて演算子オーバーロード等はご自由に
!!題4 : 次の番号を計算しよう
u45 = Version.parse("JDK7u45")
u60 = u45.nextLimitedUpdate()
u60.updateNumber #=> 60
u51 = u45.nextCriticalPatchUpdate()
u51.updateNumber #=> 51
u46 = u45.nextSecurityAlert()
u46.updateNumber #=> 46
## next~メソッドはすべて、新たなバージョンを表すオブジェクトを返す
## (selfのバージョンを変えて返すのではない)
!ライセンス
[[クリエイティブ・コモンズ・ライセンス|http://i.creativecommons.org/l/by-sa/2.1/jp/88x31.png]]
この演習問題は [[クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。|http://creativecommons.org/licenses/by-sa/2.1/jp/]]
""*Limited Updateは20の倍数を割り当てる
""*Critical Patch Update(CPU)には5の倍数を割り当てる。倍数が偶数になる場合にはさらに1を加算して奇数へ変更する
""*Limited UpdateとCPU以外の予定外のアップデート(Security Alert 等)はそれらバージョン番号の間の数字を使用する
!!例
JDK7u40
* 7 : family number
* 40 : update number
!!!バージョンアップ
* LUされたら → JDK7u60
* CPUされたら → JDK7u45 → JDK7u51
* その他 → JDK7u41
!!最初に
''この仕様に矛盾点がないかペアで相談してみよう!''
Version.isValid("JDK7u40")
#=> true
Version.isValid("hoge")
#=> false
Version.isValid("JDK7u9x")
#=> false
v = Version.parse("JDK7u40")
#=> JDK7u40を示すオブジェクトを返す
v.familyNumber #=> 7
v.updateNumber #=> 40
Version.parse("JDK7u9x") #=> 例外
u40 = Version.parse("JDK7u40")
u51 = Version.parse("JDK7u51")
jdk8u0 = Version.parse("JDK8u0")
u40.lt(u51) #=> true
u40.gt(u51) #=> false
u40.lt(jdk8u0) #=> true
jdk8u0.gt(u51) #=> true
# ↑ 言語に応じて演算子オーバーロード等はご自由に
!!題4 : 次の番号を計算しよう
u60 = u45.nextLimitedUpdate()
u60.updateNumber #=> 60
u51 = u45.nextCriticalPatchUpdate()
u51.updateNumber #=> 51
u46 = u45.nextSecurityAlert()
u46.updateNumber #=> 46
## next~メソッドはすべて、新たなバージョンを表すオブジェクトを返す
## (selfのバージョンを変えて返すのではない)
!ライセンス
[[クリエイティブ・コモンズ・ライセンス|http://i.creativecommons.org/l/by-sa/2.1/jp/88x31.png]]
この演習問題は [[クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。|http://creativecommons.org/licenses/by-sa/2.1/jp/]]