Objective-Cの継承を棒グラフアプリで理解しよう Part1.~継承を使おうと思うまでの考えと構造~

継承

これをサンプルコードで解説したいと思います。


おそらくこの記事に行き着いた方は、継承についての概念はなんとなく理解したけど、
実際にどうやって使ったらわからない!
という方が多いのではないでしょうか?

ぼくも完璧に理解できているとは言いませんが、
こんな風に使ったらいいんじゃないの?という例を示したいと思います。

実行環境

Mac OS X 10.7.4
Xcode4.3.2
ARCあり
Storyboardなし(ストーリーするほどの画面遷移もなにもないので)


スタートするテンプレート


SingleViewApplicationからスタートします。


今から解説するアプリを実行しているときの様子

実行!

棒グラフみたいなのが2つありますね。

赤と青の棒グラフはdrawRectで描いていて、黒い線のやつは画像を使って背景にしています。
背景画像はこれ。

なんということもないただの黒い線です。


棒グラフサンプルアプリをつくっていくにあたっての考え方

  1. 棒グラフのアプリをつくろう
  2. 棒グラフって何個もあるよなー(今回は2個だけど)
  3. 棒グラフが何個になっても簡単に対応できる構造にしたいなー
  4. 構造ができれば、あとはそれぞれに必要な値や色を変えるだけで簡単にできればいいなー
  5. グラフの共通部分ってあるよね?(始点、終点、太さなど)
  6. グラフの共通部分をそれぞれで書くのは非効率だし面倒
  7. グラフの共通部分を集めた抽象的なクラスをつくればいいんだ!
  8. 抽象クラスをつくれば、あとは具体的に、棒グラフが何色かとか値とかだけ入力できるクラスをつくればいい!

Objective-Cの継承を棒グラフアプリで理解しよう Part1の方針

本当は具体から抽象への考え方にいくのが自然かもしれませんが、
今回はいきなり抽象クラスをつくるところから解説します。

最初はなにをしているかわかりにくい部分がもしかしたらあるかもしれませんが、
最後にはすっきりしていることでしょう。

ちょっとわからないなと思っても、最後までついて来てくださいね☆

<8月7日追記>
やはり思考の過程を重視するために具体から抽象への解説を行います。
実際の思考回路はこうだからです。



サンプルアプリの構造図解、構造解説

まずは背景画像の設置はUIImageViewを使って貼付けます。
赤いグラフを描画するクラスをAgraphRed青いグラフを描画するクラスをBgraphBlueとします。
これらはAbstractGraphを継承しています。