読者です 読者をやめる 読者になる 読者になる

Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 670 - Applying MVC 2

2年前の講義は2週目から理解するのに苦しんでいましたが、今回は少し余裕をもって理解することができます。

Developing iOS 9 Apps with Swift - Free Course by Stanford on iTunes U

「π」ボタンをコピペして作って次の関数ボタンを「√(ルート)」に変更します。今度はperformOperationメソッドに繋がったボタンのコピペなので問題無く繋がっています。

f:id:yataiblue:20160508211559j:plain

そしてperformOperetionメソッドを拡張して行きます。

@IBAction func performOperation(sender: UIButton) {
    userIsInTheMiddleOfTyping = false
    if let mathematicalSymbol = sender.currentTitle {
        if mathematicalSymbol == "π" {
            displayValue = M_PI
        } else if mathematicalSymbol == "√" {
            displayValue = sqrt(displayValue)
        }
    }
}

これで問題はありません... と言いたいところですが、大きな問題があります。このメソッドで計算をさせているのですが、ViewControllerはMVCのC(コントローラー)です。ということは演算部分を担当する場所ではありません。演算機能はユーザーインターフェイスから独立させる必要があります。そうですM(モデル)として区別させていきます。ここでMVCスタイルに変更していきます。

モデルはメニュー「File > New > File...」からダイアログ「iOS > Source > Swift File」を選んで新しいクラスを作ります。

名前は「CalculatorBrain」にしてCalculatorプロジェクト内にセーブします。

インポートするモデュールは「Foundation」だけです。UIKitは必要ありません。

CalculatorBrainクラス宣言をします。

f:id:yataiblue:20160508215859j:plain

APIの説明があります。APIは他のクラスから利用するメソッドやプロパティのことでプログラミングインターフェイスになります。

まず必要になるメソッドとプロパティを用意します。ここで私はコーディング(プログラミング)の方法を垣間見ることができたと思いました。2年間iOS開発の勉強をしているのになかなかオリジナルアプリの開発ができないのは私の開発手法にも問題があると思います。まず具体的にどういうメソッドやプロパティが必要か考えてメソッド名やプロパティを用意することを初めにすべきなんですね。勉強になりました。

class CalculatorBrain {
    
    func setOperand(operand: Double) {}
    
    func performOpeation(symbol: String) {}
    
    var result: Double {
        get {
            return 0.0
        }
    }
}

このメソッドやプロパティは他のクラスで利用していくためプログラミング・インターフェースの顔になるのでAPIと呼ばれます。ここでアクセス・コントロールを理解する必要があるんです。Swiftで遊ぼう! - 460 - アクセス・コントロール(Access Control) :未完 - Swiftで遊ぼう! on Hatenaを見ても明らかですが、ViewControllerで使用するメソッドやプロパティはクラス外から呼ばれる必要が無いので、すべて「private」を付けることが推奨され、CalculatorBrainのメソッドはデフォルト(internal)のままにします。

今日はここまで。