Chapter 4オブジェクトの基本的な使い方を理解しよう

クラスの基礎を理解する
クラスとは:オブジェクトの設計図のこと
インスタンス:クラスから生成されて、使用可能になったオブジェクト
クラスからインスタンスを生成する事をインスタンスかと呼びます。

クラス Customerを考えます。
顧客番号:number
名前:name
メールアドレス:mail
3つのデータを管理します。
※クラスは単なる設計図なので、実際のデータは有りません。
イメージとしてはデータを入れる変数を用意したような物です。

number,name,mail
インスタンス毎に固有のデータです。そのような変数をインスタンス変数と呼びます。

カプセル化
オブジェクト指向言語は外部からインスタンス変数に直接アクセスさせない事が基本です。

アクセッサメソッド
外部に公開したいインスタンス変数に用意する専用メソッド。
インスタンス変数の値を取得するメソッドと、値を設定するメソッドが有ります。
セッタメソッド:値を設定する
ゲッタメソッド:値を取得する
アクセサメソッドの命名規約
・ゲッタメソッドの名前はインスタンス変数と同じにする
・セッタメソッドの名前はインスタンス変数名の前に[set]を記述し、変数名の最初を大文字にする
mailインスタンスメソッド
ゲッタメソッド:mail
セッタメソッド:setMail:
この時の最後に[:]がつきますが、これは引数を1つ持つ事を表します。
アクセサメソッドは必要に応じて用意すれば良いので、全ての変数に用意する必要は有りません。

メソッドの呼び出し方法
変数=[インスタンス メッセージ];
全体を[]で囲み、インスタンスとメッセージの間はスペースで区切ります。
メッセージ:メッセージ式
インスタンス:レシーバ
レシーバに送られたメソッドを実行し、結果を戻り値として変数に代入します。
※戻り値のない関数と同様に、メソッドが値を戻さない場合は、変数は不要です。

ゲッタメソッドは値を取得するだけですので、引数は有りません。
例えばインスタンスcustomer1にたいしてメールアドレスを取得するゲッダメソッドmailを実行して、結果を変数aMailに格納する。
aMail=[customer1 mail];

セッタメソッドは引数を1つとるメソッドです。
例えばインスタンスcustomer1に対してメールアドレスをセットするセッタメソッドsetMailを実行して、メールを設定します。
[customer1 setMail:@"ichiro1@example.com"];

引数を複数持つ場合は1つ目の引数の後に「ラベル:引数」の組み合わせをスペースで区切って記述します。
[インスタンス メソッド名:引数1 ラベル:引数2];
例えば最初の引数でメールアドレス、2番目の引数で名前を設定する場合
[customer1 setMail:@"ichiro1@example.com" withName:@"太田信"];

メソッドは:を含めてメッセージセレクタ全体をメソッド名と呼びます。
セッタのメソッド名は setMail: セッタメソッド2番目のラベルの組み合わせのメソッド名は setMail:withName となります。