心はいつも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

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

  関連記事

no image
ブログデザイン変更しました

予告通り、本日中にブログのデザインを変更できました。WordPressのテーマT …

no image
Macでアプリを強制終了

Macでアプリを強制終了したことは今までなかったのですが、どうにもftpソフトの …

no image
MavericksアップデートしRuby2.0+Rails4.0.2にversion upする

何を今さら感ですが、MacはAirとMiniの2台持ちです。Airのほうを人柱と …

no image
iPhoneの月請求は8円のみです。

昨年11月に、e-mobileからiPhoneにMNPしました。 ちょうど、乗り …

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

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

詳解 Objective-C 2.0 第3版

Rubyの言語仕様を勉強する傍ら、Objective-Cも言語仕様ベースで勉強し …

Ruby on Railsを4.1.0にバージョンアップする

真央ロス真央廃を超えた腐まお状態な1ヶ月1週間、まるで娘が嫁に行った父親のごとし …

パーフェクトRuby 3章制御構造/メソッド/組み込み関数 3-1演算子

パーフェクトRuby2章の後は6章をやろうと思っていましたが、やっぱり順番にやっ …

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

3.3.3埋め込みRubyです。viewにrubyコードを埋め込んでtitleを …

詳解 Objective-C 2.0 第3版 CHAPTER3 継承とクラス

[]多用といいメッセージキーワードといい、やっぱObjective-Cってキモチ …