Menu
Coddy logo textTech

クラスの定義

CoddyのSwiftジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 2/57。

クラスは、ある種類のオブジェクトを表します。つまり、それぞれのオブジェクトが保持するデータと、実行できることを定義します。class Dog { ... }は型を宣言し、Dog()はその型のオブジェクトを作成します。これはインスタンスとも呼ばれます。

class Dog {
    var name = "Rex"
    var age = 3
}

let dog = Dog()
print(dog.name)
print(dog.age)

出力:

Rex
3

クラス内の変数は、そのクラスのプロパティです。各インスタンスは独自のコピーを持ち、ドットを使って読み取りや変更を行います。

class Dog {
    var name = "Rex"
    var age = 3
}

let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)

出力:

Rex
Bella

クラス内の関数はメソッドです。メソッドは、それが呼び出されたインスタンスのプロパティを読み取ったり変更したりできます。

class Counter {
    var count = 0

    func increment() {
        count += 1
    }

    func report() -> String {
        "count is \(count)"
    }
}

let clicks = Counter()
clicks.increment()
clicks.increment()
print(clicks.report())

出力:

count is 2

型名は UpperCamelCase(BankAccount)で記述し、プロパティとメソッドは lowerCamelCase(balance、deposit())で記述します。データと、それに対して動作する関数を1つの型にまとめることが、オブジェクト指向プログラミングの核心的な考え方です。Counterを使用するコードはincrement()を呼び出すだけで、カウントがどのように保存されているかを知る必要はありません。

class BankAccount {
    var balance = 0

    func deposit(_ amount: Int) {
        balance += amount
    }
}
challenge icon

チャレンジ

簡単

クラス Pet のメソッド describe() を完成させてください。プロパティから作成した1文を返します。名前が Rex、種別が dog、年齢が 3 のペットの場合、Rex is a 3 year old dog になります。

用意されたコードは Pet を作成し、入力(名前、種別、年齢)からそのプロパティを設定し、describe() の結果を出力します。

コードは Pet.swift に記述してください。main.swift には用意された入出力コードが含まれており、編集できません。

自分で試してみよう

// 提供された入出力コード: そのままにしておく
var input: [String] = []
while let line = readLine() { input.append(line) }
let pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = Int(input[2])!
print(pet.describe())
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド