2010年03月29日

OOP その1 カプセル化

本気でアクションスクリプトを勉強しようと思い立った私。
いままで何度も挫折したオブジェクト指向ですが、やはりこれを避けては通れないようで・・・orz
っつーことで、メモしていこうと思います。
三日坊主で終わりそうですが(笑)
【注意】素人が迷走しながら書いてる記事なので参考にしないで下さい(苦笑)



オブジェクト指向プログラミング(Object Oriented Programming)とカプセル化


アクションスクリプトはオブジェクト指向プログラミング言語らしい。
オブジェクト指向プログラミング言語とはなんぞや?

専門用語使いまくりのものから例え話まで、いろいろ読み漁ったけど、やっぱりわからんので、自己流解釈することにした。

ゲームを作るには、いろんな機能が必要。
たとえばテキストを表示したり、その内容を書き換えたりする機能。
画像を読み込んで表示する機能。フレームを制御する機能。効果音を制御する機能などなど。
この機能同士が、それぞれ独立していて、ひとつの機能の中で処理が完結できるようになっている構造のことをオブジェクト指向プログラミング。
では、なぜ機能がそれぞれ独立していなければならないのか?
お互いに依存していると、一つのミスで全てがエラーを起こしてしまう。
それを防ぐために、独立させる必要がある。
これをカプセル化という。
「カプセル化」の説明には「隠蔽」という言葉がよく使われているので、独立させるというより、外部からアクセスできないように隠すというのが正解。
こうすることにより、プログラムの安全性を高めるという意味があるらしい。
さらに機能を独立させることで、何度も繰り返し使うことができるという利点がある。

で、このようなプログラミングを可能にする言語をオブジェクト指向プログラミング言語という。
この言語には、3つの概念が含まれる。

・インヘリタンス(継承)
・ポリモフィズム(多態性)
・ダイナミックバインディング(動的束縛)

ハァ〜なんじゃそりゃ。
posted by K at 10:16| Comment(8) | OOP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんにちは(^-^)/

私は汎用機のころUNIXでC言語をやっていまして、しばらくするとビル・ゲイツくんがMS-DOSなんぞ開発してくれたおかげさまで Visual C++ の道へとまっしぐらでした。
どっぷりつかった10年間、このままでは命を落とす!毎日家に帰れる生活がしたい!と思い開発の道から足を洗いました(笑)
オブジェクト指向も慣れるとかわいいヤツです。かわいがってあげてください(^^)/

私はBlenderがあいかわらずチンプンカンプンでして…1週間でいいので脳みそトレードしませんか?(笑)
Posted by すえぞう at 2010年03月29日 19:32
>すえぞうさん

こんばんは〜!
Visual C++とは、バリバリ専門家じゃないですか。
ASしかやったことない私には神の領域ですわ。
是非、1週間といわずに一生、脳みそトレードお願いしたいくらいです 笑
オブジェクト指向は、かわいがってやりたい
のですが、どうも懐いてくれないんですよね・・・
色々読んでみるものの、専門用語で詰まりまくりで「何これ?」を調べにいくと新たに「何これ?」が出てきて、それを繰り返すうちに、もう分岐前に戻れませんっ!状態に陥ってしまうんです(苦笑)
間違った解釈とかあればご指摘よろしくお願いします。
Posted by 管理人@K at 2010年03月29日 20:34
こんばんは。

オブジェクト指向は、物事の捉え方の一つの流儀、と考えた方がいいと、私は思います。

例えば、「一個の石」(ドイツ語で「アインシュタイン」)を拾いあげて落とす、事を考えます。
もし、過去のNHKの番組「アインシュタインロマン」の最終回をご覧になった方なら、私の言いたい事がわかると思いますが…、
「石が万有引力の法則にしたがって地球の引力にひかれた」と見る事も、
「石は自分の意思で地球に向かって突進した」と見る事も、
できます。前者は、動作の主体(主語)は万有引力の法則(もしくは、神)で石はその客体(目的語)であり、後者は石自身が主語です。
前者の場合、石がいくつあっても、動作の主体は一つですが、後者は石の数だけある事になります。

後者のように、物(オブジェクト)を主体とした物事の捉え方は、オブジェクト指向的と言えます。

本題ですが、カプセル化は必ずしもオブジェクト指向の「要件」ではありません:あくまでも、オブジェクト指向をしやすくするための便利な道具です。実際、カプセル化のないオブジェクト指向言語も存在します。
Posted by くろょ at 2012年06月09日 23:27
>くろょさん
おはようございます。
オブジェクト指向、教えて下さってありがとうございます。
この記事は一昨年の春に書いたのですが、やっぱり理解できなくて、それ以降勉強してなかったんです。
なので、自分が書いた内容すら記憶になくて、見ても何のことだっけ?といった状態なのですが、これを機会に、もう一度挑戦してみようかと思います。
取り急ぎ、お礼まで。
本当にありがとうございました。
Posted by K at 2012年06月10日 07:35
おはようございます。
早速のお返事ありがとうございます。
ゲームの方も、いつも楽しませていただいています。ちなみに、私はMacOSユーザーですが、全てのゲームがちゃんと動いていますので、ご安心(?)下さい。
昨日の一連の書き込みは、ちょっとおせっかいだったかもと思ってましたので、お返事下さって嬉しいです。

おせっかいついでですが、プログラムの事を「スクリプト(台本)」と言ってしますが、これは、個々のオブジェクトが俳優となって、自ら台本に従って演じていると考えるといいと思います。そう考えれば、オブジェクト指向が身近に感じられると思います。
Posted by くろょ at 2012年06月10日 10:25
>くろょさん
お返事ありがとうございます。
おせっかいだなんて、とんでもないです。助かります。
ゲームもいつもプレイして下さっているとのことで、ありがとうございます。
Macでは、以前に音割れ(?)がするという不具合があったようなのですが、Adobeサイドでの変更なのか、Macサイドなのか、或いは両方なのか、わからないですが、いつしか治ったみたいです。
ただ原因不明のままなので、但し書きをそのまま載せさせて頂いてます。

オブジェクト指向は、本すら買わずに、ネットでいろんなサイトを読み漁るという方法をしてました。みなさんわかりやすく例え話で説明されてるのですが、私に読解力が無いために、その時は「なるほど」と思えても、違う例えが出てきたりすると混乱してわからなくなる。これの繰り返しをしているようなので、一冊、本を買ってみようかと考えてます。
宜しければ、なにかお勧めの本などありましたら教えていただけますでしょうか?
Posted by K at 2012年06月10日 17:35
こんばんは。
私も我流プログラマーですので、本やらサイトやらの紹介はできないです。本当にごめんなさい。
Posted by くろょ at 2012年06月10日 18:34
>くろょさん
そうでしたか〜。
独学でしっかり理解されているのが凄いです。
私も、ウロウロと遠回りしながら頑張ってみます。
お返事、ありがとうございました。
Posted by K at 2012年06月10日 18:50
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。