[kj-code] category by choi.hj (jp ver.)

13
Category 2014.3.22 make kjcode choiheejin

Upload: -

Post on 14-Jul-2015

87 views

Category:

Technology


0 download

TRANSCRIPT

Category

2014.3.22 make kjcode choiheejin

What is Category?

java/C++にはない機能

既存クラスの一部のメソッドを実装したモデュール

メソッドの追加のみある場合、Category使用

Class Sample

DrinkPriceClass

●getPrice

●getPriceFireKilimanjaro

●getPriceBossRainbow

Category Image1

DrinkPriceClass DrinkPriceClass+Fire

DrinkPriceClass+BossDrinkMachineClass

●getPrice ●getPriceKilimanjaro

●getPriceRainbowuse DrinkPriceClass!

●isDiscountKilimanjaro

Difference Inherit and Category

Inherit Image1DrinkPriceClass DrinkPriceSubClass

price1 price1price2

●getPrice ●getPricePlus200

can use getPrice!can override getPrice!

can add member!

can add method!

Category Image2DrinkPriceClass

DrinkPriceClass+Fire

DrinkPriceClass+Boss

DrinkMachineClassuse

can add method!

can not overide!

Category Strong Point

下位クラスを作成する必要がない。

元になるクラスが変更された場合、継承したクラスより影響が少な

い。

作業を分担しやすくなる。

命名規則を下記のよう作成することで可読性が高くなる。

クラス名+カテゴリ名.h クラス名+カテゴリ名.m

!

Category Weak Point

基本的にメンバー変数の追加ができない

Asscosiative Referencesという方法で追加ができ

る。(またの機会にikeさんからお願いしたいと思いま

す。。(^_^)/)

カテゴリ化するクラスの同じメソッドを作成できるが、プログラムは予測できない方式で動作する可能性がある。

additional info Why can not Overide?

DrinkPriceClass

DrinkPriceClass+Boss

●getPriceBoss

●getPriceBoss

DrinkPriceClass+Fire●getPriceBoss

do you know price of Boss?

終了

質問

Thank you.