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

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

  関連記事

初めてのRuby8章 8.2変数と定数

8.2 変数と定数 8.2.1 インスタンス変数 @で始まるのがインスタンス変数 …

no image
RailsTutorial4.0を高速で復習する。4章と4.1章。

さて、4章です。4章ではRubyに関する内容が多かったような記憶が。 動的なWe …

no image
電子雑誌を買いました

GWの計画を立てているとき、行きたい場所を検索をすると、HANAKO WESTの …

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

6.3.3ユーザー認証、です。 新規ユーザー登録のときは入力で、:passwor …

no image
iPhoneのKindleアプリでChip Conley氏の本を読んでみました。その1

GWで電子本も文庫本も読み終え、「新しい本に入れ替えないと~」と思いながらすっか …

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

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

no image
Ruby on Railsのインストール

Rubyのアップデートが終わったので、いよいよRailsをインストールします。 …

no image
コンビニで買った携帯充電器がUSB充電ケーブルとして使えて意外に便利だった件

ITの最大苦手項目、 充電。。。特にiPhone多様するようになって以来、ガラケ …

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

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

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

11.2フォローしているユーザー用のWebインターフェイス、です。 モデルができ …