TDDBC長岡1.0/演習
お題 : Javaの奇妙なバージョン
Java、バージョン番号のルールを変更 - 20の倍数、5の倍数、1足して…… (アナウンス原文)
- 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のバージョンを変えて返すのではない)
Keyword(s):
References:[TDDBC] [TDDBC長岡1.0]