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のバージョンを変えて返すのではない)
Last modified:2013/06/06 14:26:00
Keyword(s):
References:[TDDBC] [TDDBC長岡1.0]