2015年10月9日金曜日

【Xcode / Swift入門】関数とクラスについて

本稿では、関数と、オブジェクト指向プログラミングでは必須のクラスについて、記載していきます。関数もクラスも特にSwiftならでは、というわけではなく、他の言語でも頻繁に使用される概念になります。


関数

関数とは、簡単にいうと、データを受け取り(受け取るデータを引数と言います。)、決められた(もしくは自分で決めた)処理を実行して結果を返してくれるプログラムのことを言います。

例えば、今までよく使用してきたprint()も、( )内に記載した値を表示してくれる関数です。そして、( )内に記載していた値を引数と呼びます。

swiftでは関数を下記のように定義します。

func 関数名(引数) -> 返り値の型 {
    return 返り値
}

では、上記を使って、時間ごとに挨拶を変える関数を作ってみたいと思います。 
Playgroundを起動し、下記のように記述してみてください。

//時間(引数)の定義
var time = 23

//時間によって挨拶を変える関数
func greetings(time: Int) -> String{
    
    if time < 5 {
        return "もう\(time)時だ。早く寝よう。"
    }else if time < 10 {
        return "\(time)時ですね。おはようございます"
    }else if time < 15 {
        return "\(time)時ですね。こんにちは"
    }else if (time < 17) {
        return "\(time)時ですね。お疲れ様です"
    }else if (time < 24) {
        return "おやすみなさい"
    }else {
        return "エラー:そんな時間はありません"
    }
}

//関数呼び出し
greetings(time)

これは、greetingsという関数の中で、引数として受け取った時間データを元に挨拶のパターンを変えて、その時刻にあった挨拶を返すというものです。Int型の引数で受け取った値をString型で返すことが読み取れると思います。
また、timeの値を変更すると関数の値が変化することがわかると思います。



このように関数を使うことにより、引数で渡されたデータを使って処理を実行することが可能となります。簡単な処理(プログラム)なら特に気にしなくて良いのですが、複雑になったり、コード数が多くなったりすると、プログラム内の色々な場所に頻繁に出てくるような記述が出てきます。そういったものを、関数として再利用できるように別出しするととても便利です。

クラス

クラスとは、オブジェクト指向プログラミングでは、必ずでてくるとても重要な概念です。簡単に言うと、前述した関数と変数をまとめたものです。

まず、単語の定義です。クラスでは、インスタンス、プロパティ、メソッドと呼ばれる単語が頻繁に使用されます。

インスタンス:クラスを使用できるようにした値(変数、定数)
プロパティ:クラス内にて定義した変数
メソッド:クラス内に定義した関数

そして、クラスは下記のように記述します。

class クラス名{

    //プロパティの定義
    var 変数名
 let 定数名

    //メソッドの定義
    func 関数名(引数) -> 返り値の型 {
    return 返り値
 }
}

では、先ほど作成した時間によって挨拶を変更するプログラムをクラスとして記述してみたいと思います。変更箇所は簡単で、変数と関数をclassの中に入れると完成です。

class goodGreetings{

    //時間(引数)の定義
    var time :Int = 0

    //時間によって挨拶を変える関数
    func greetings(time: Int) -> String{
    
        if time < 5 {
            return "もう\(time)時だ。早く寝よう。"
        }else if time < 10 {
            return "\(time)時ですね。おはようございます"
        }else if time < 15 {
            return "\(time)時ですね。こんにちは"
        }else if (time < 17) {
            return "\(time)時ですね。お疲れ様です"
        }else if (time < 24) {
            return "おやすみなさい"
        }else {
            return "エラー:そんな時間はありません"
        }
    }
}

次にクラスの操作です。インスタンスを生成して、定義したクラスを利用できるようにします。インスタンスの生成は、クラス名の後ろに()を付け、定数に代入します。そして、このクラス名()が代入された定数をインスタンスと言います。加えて、クラスの中の変数を使用したい(変数に値を代入したい)場合はインスタンス名.プロパティ、クラスの中の関数を使用したい場合は、インスタンス名.メソッドを使います。

では、実際に先ほどのプログラムにインスタンスの生成および変数への値の代入、関数の利用を実行してみます。

//クラスの利用
let gG = goodGreetings() //インスタンスの生成
gG.time = 4
gG.greetings(gG.time)


実行結果は以下になります。インスタンス名.プロパティに代入した値により、挨拶が変化しているのが確認できると思います。



では次回は、アプリ開発に必要なXcodeの機能について説明したいと思います。




0 件のコメント:

コメントを投稿