技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

さくっと基本を振り返る2

よく C++/Java/C# で使うカプセル化を考えてみる。

カプセル化の概念ちゃーなんぞやと説明面倒なので wiki 先生に聞いてみると、

データを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりする

  • データ隠蔽:ローカル変数とか内部実装を利用者に意識させない、セキュリティ的にローカル変数参照させない。
  • オブジェクトの振る舞い隠蔽:内部実装知らせない。使う側に意識させない。
  • 型の隠蔽:抽象データ型?

型の隠蔽って何だ?わからんとは俺もまだまだだな、、、、
自分自身を新しい型として宣言する(抽象データ型)って事かね?
型を定義する言語だからこの辺が正解だろうか?
後で出典確認しないとな。

で、Objective-C に話を戻すとそんなものぁない。
メソッドはすべて public*1で変数は protect である。以上。

private メソッドは結局手続きを隠して使える手段を制限することで煩雑化を抑える。が、、、、
メッセージレセプタはあくまで「振る舞い」だから隠蔽するものでもなく、、、、
メッセージ送信は前回触れたように型とか既に意味がない。

結局オブジェクトというものを作って、メッセージが送付できる。
メッセージをどう解釈してどう動くかはオブジェクト次第(しかもそのオブジェクトは実行時に決まる)。

*1:アンドキュメントメソッドも実質 public に呼べる