軟體生命週期 (software life cycle) 分成三大階段,開發 (development) 、使用 (use) 、修改 (modification) ,接下來便是使用、修改的無限循環
開發階段,自然免不了對需求的分析 (analysis) ,然後設計 (design) 、建置 (implement) ,接著進行測試 (testing) ,其實這順序沒有絕對,「設計」與「建置」可能只是先做個簡單版本,「測試」與「使用」說到底都是實際執行後觀察結果,「修改」等於以之前的基礎再次「設計」與重新「建置」。
我們打算開發的 Encrypt 類別 (class) 的需求已經很清楚,也就是產生一個英文小寫字母的對照餘數陣列 (array) ,我們用 code 屬性 (property) 儲存這個陣列,然後以 setCode() 方法 (method) 建立這個陣列。
上個單元中,我們將 a 設定為 3 , b 設定為 5 ,順利的跑出一個英文小寫字母的對照餘數陣列,現在我們希望把 a 、 b 設定成 0 到 9 之間的隨機整數,這該怎麼做呢?簡單講,就是要有個產生隨機整數的方式,還好程式庫 (library) 中已經有相關程式供我們直接使用,因此我們不需要自己重頭開發。
Cocoa 中有一個函數 arc4random() 可產生一個型態為 UInt32 的隨機整數,介於 0 到 UInt32.max 之間,在 64 位元的機器上, UInt32.max 的值為 4294967295 ,因此把取得的數字除以 10 ,得到的餘數就會是介於 0 到 9 之間的隨機整數。
Cocoa 為 Mac OS 的應用程式介面 (application programming interface) 。
由於需要用到 Cocoa ,因此要在 Playground 的開始幾行加入 import Cocoa
import Cocoa |
setCode() 修改如下
// 設定密碼表 |
func setCode() { |
var a = Int(arc4random() % 10) |
var b = Int(arc4random() % 10) |
var c = 97 |
var i, x, y, m: Int |
// 以迴圈取得每一個餘數 |
for i = 0; i < 26; i++ { |
x = c |
y = x * a + b |
m = y % 26 |
code.append(m) |
c++ |
} |
// 移除第一個預設值 |
code.removeAtIndex(0) |
} |
由於 arc4random() 回傳的是 UInt32 型態的整數,直接寫出來的整數型態則為 Int ,計算需要的型態也是 Int ,所以這裡用 Int 的建構子 (initializer) 轉換型態為 Int 後,才把餘數指派到 a 、 b 內。
測試程式碼不變,移到下面去看一下結果吧
看起來 OK ,多寫些測試程式碼看看
居然有一行都是 2 ,有些是我們要的餘數陣列沒錯,有一些則不是,那表示我們所用的數學公式有問題,接下來要先修正數學公式。
中英文術語對照
軟體生命週期 | software life cycle |
開發 | development |
使用 | use |
修改 | modification |
分析 | analysis |
設計 | design |
建置 | implement |
測試 | testing |
類別 | class |
陣列 | array |
屬性 | property |
方法 | method |
程式庫 | library |
應用程式介面 | application programming interface |
建構子 | initializer |
沒有留言:
張貼留言