心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

詳解 Objective-C 2.0 第3版 CHAPTER4 オブジェクトの型と動的結合

   


CHAPTER4は「オブジェクトの型と動的結合」なんだけど、
動的結合ってなに??

インスタンスAからインスタンスBのデータ読み出したり、仕事させたりすることなんじゃないの??それってプログラムのする当たり前の事でしょ。わざわざ動的結合って何??なんなのさ?

p58
04-01 動的結合

p59
送られたメッセージに対応して、どのメソッドが実行されるのか、実行時に決定される方式を動的結合という。コンパイルのときに決まってしまうのが静的結合。

んーあまりいい説明でないような気がするが読み進める。

p59
ポリモーフィズム

p60
例えば図形を描くとき、
[target move:direction]
とし、target 側で図形の種類の増加に対応すればよい。メッセージ送信側に変更は不要。なんかあたりまえだが、手続き型を知っている古いプログラマ向け説明なのかも。

p61
04-02 型としてのクラス
クラス名を型として使う

オブジェクトはid型で表す。けども、特定クラスのインスタンスであると明示するときは、
Foo *
と書く。Fooクラスのインスタンスである、という意味。

この書き方は、変数、引数、返り値として使える。

Volume *v;

p67
ここで
[(B *)b sayHello];

という、クラスAのインスタンスであるbをクラスBのインスタンスとしてキャストするという書き方が出てくる。例は、あえてクラス設計がまずいプログラムを例にしてコンパイラをごまかすために書いているけど、実際にこの書き方が必要なのもそういう場合か?あんま好きじゃないな。

p60
04-03 プログラミングにおける型宣言

シグネチャの一般的な意味は「署名」になりますが、プログラミング用語としては戻り値の型から始まる関数(メソッド)名、引数までの、そのメソッドの宣言や定義で使われる一連の正式な文字列のことを表します。とのこと。本の説明はわかりづらい。

– (id)cellAtRow:(int)row column:(int)col;
(id) 戻り値の型
cellAtRow,column メソッドシグネチャキーワード
(int) 引数の型
row,col 引数の名前

p74
04-04 インスタンス変数の情報隠蔽

オブジェクトの外からインスタンスへんすにはアクセスできない。他も言語も一緒。アクセスするなら専用メソッドを用意しろ。
しかし、
オブジェクトobjのインスタンス変数myvarにアクセスするには
obj->myvar
と書ける。こういうの、得意がって書く人いるけど、コーディング規約で取り締まるのがよいかと。

p76
アクセサ

この本はイリーガルの説明が先、本質が後という傾向があるようだ。

p77
インスタンス変数を参照するメソッドはインスタンス名と同じ名前のメソッドにする(getはつけない)。値を変更するメソッドはインスタンス名にsetをつける。
-(float)weight;
-(void)setWeight: (float)value;

p78
インスタンス変数の可視性
@private,@protected,@publicについて

p80
実装部でのインスタンス変数定義

Xcode4.2からできるようになった。これでいいと思う。わざわざヘッダに分離して書く必要はない。

p81
04-05 クラスオブジェクト
ここが一番基本的なことが書いてある。最初にかけばいいのに、先に例外って構成が悪いですこの本。

Rubyだと、クラスは単なるテンプレじゃなく、クラスもオブジェクトというクラスオブジェクトの考えをしていますが、Objective-Cも同様。
クラスメソッドのことをファクトリメソッドと呼ぶ事もあり。

p84
インスタンスメソッドは-で書いたがクラスオブジェクトは+で書く。

だいたい終わり。
面倒くさくなってきた。
Objective-Cのキモチワルイとこ網羅したかと思う。

CHAPTER5,6とばして7に行きたいけど、ちょっとXcode触ってくる。

 - テクニカル

Comment

  1. […] 詳解 Objective-C 2.0 第3版 CHAPTER3 継承とクラス Posted on 2014年5月11日 詳解 Objective-C 2.0 第3版 CHAPTER4 オブジェクトの型と動的結合 Posted on 2014年5月11日 うーん、、わずか4日しか勉強していない。 […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

Railsを立ち上げる

RubyのアップデートとRailsのインストールが無事終わったので、いよいよRa …

no image
RailsTutorial4.0を高速で復習する。3章。

巷にRails4本がなく、Rails3本をRails4でやってみようとしたところ …

実機なしでRetina 3.5インチのスクリーンショットを撮る

iPhoneアプリ公開時に2種類の画像登録が必要です。 1つ目はアイコン。アプリ …

使ったらダメなiPhoneケーブル

iPhoneのApple純正ケーブルって、はげやすくないですか?iPhone5用 …

no image
RailsTutorial4.0を高速で復習する。10.3.3章。

10.3.4マイクロポストを削除する、です。 仕様 マイクロポスト個別に削除でき …

no image
Macで.htaccessを表示する設定

MacBook Air2代目。以前は行っていた.(ドット)がついたファイルをMa …

Google Webfont使ってみたよ

地元に戻ってきてまず思ったのは「観光サイトを立ち上げたい」ということ。いや、観光 …

SublimeText2をMacにインストールしてターミナルから起動できるようにする。

Windowsには秀丸っていう超優秀なテクストエディタがあって、無料でも使えるの …

no image
RailsTutorial4.0を高速で復習する。6.2.5章。

6.2.5一意性を検証する、です。メールアドレスをIDとして使うため(でなくとも …

no image
RailsTutorial4.0を高速で復習する。4.2章。

4.2文字列(string)とメソッド、です。 ここからはrubyの文法について …