オブジェクト指向プログラミングについて【第一弾】
オブジェクト指向の基本を学習する上でiphoneアプリ開発 虎の巻や初心者のためのiphone/ipadプログラミング入門などを参考にしていますが、オブジェクト指向について学んだ事を何回かに分けて発信したく思います。
【オブジェクトとクラス】
第一印象としてオブジェクト指向は「設計書を作っておいて、後でそれを利用して量産できる効率的な仕組み」という印象を受けました。
オブジェクト指向に於いて、
”オブジェクト”とは「プロパティ」と「メソッド」をもったものを指します。
”クラス”とは、オブジェクト(プロパティとメソッド)を書いた仕様書であり設計図です。
-プロパティ
プロパティとはオブジェクトが持っている属性のこと。
例えばTextFieldクラスにはテキストデータ、文字色、ボーダースタイルなどのプロパティがある。
プロパティには「.(ドット)」でアクセスできる
-メソッド
メソッドとはオブジェクトが実行できる処理のこと。
例えばNSmutableArrayクラスには列にデータを追加する、削除する、並べ替える、取り出すといったメソッドがある。
【クラスからインスタンスを作る】
クラスから作成したオブジェクトのことをインスタンスと呼ぶ。
「クラスからオブジェクトを作る」と「クラスからインスタンスを作る」はおおよそ同じ意味である。
たとえば、画面にボタンを何個も並べたり、時計に複数のアラームを登録したり、複数の配列を使ったりetc...
とプログラムでは同じ属性や機能をもったオブジェクトを沢山使う。
-クラスの継承
「時計クラス」を基にして、天気予報付きの「天気時計クラス」をつくりたい時、付加機能の「天気予報」だけのプログラムを書き、時計の基本機能はそのまま時計クラスから借りてしまう。そうすれば開発の手間が省ける。
実際にObjective-Cは多くのクラスを継承して作られているそう。
例えば、NSMutableArrayクラスはNSArrayクラスを継承してつくられているそう。NSMutableArrayクラスでは、NSArrayクラスを継承することで配列の基本機能を引き継ぎながらも、データの追加などの新しい付加機能を追加している
-スーパークラスとサブクラス
継承を利用して作られているクラスの事を「サブクラス」という。サブクラスの親にあたるクラスは「スーパークラス」という。NSArrayクラスはNSMutableArrayクラスのスーパークラスである。
サブクラス→スーパークラスのように継承を→で表すとNSMutableArrayクラスは以下のようにして作られている
[NSMutableArray → NSArray → NSObject]
他にもボタンを作るUIButtonクラスを→で示すと以下のようになっている
[UIButton → UIControl → UIView → UIResponder → NSObject]
自分でカスタムクラスを作る場合は、継承のシステムを使ってクラスを設計する
スーパークラスが見当たらない場合は、すべてのクラスの頂点であるNSObjectクラスをスーパークラスにしてつくるそう。。。
下記GitHubのURLです。
DaikiHosokawa/practice · GitHub