タグ

オブジェクト指向に関するatm_09_tdのブックマーク (86)

  • オブジェクト指向なJavaScriptプログラミングのススメ(1) | ゆっくりと…

    どちらも物事を的確に捉えようと努力することに変わりはありません。現在ではオブジェクト指向の方に軍配が上がるわけですが、そもそも問題領域を構造化して捉えようというアプローチは、人間の論理的な思考にとって自然な事ですし、歴史的に見ても、構造化分析・設計の手法は一定の成果を上げてきたといえるでしょう。 しかし、システムの規模と量の拡大に伴い、構造化分析・設計手法には次のような問題点が出てきました。 検証が困難、バグがなくならない 典型的にはデータフローやフローチャートを用い、次々に変わり行く様をモデリングするため、 複雑になればやがて人間には追跡が困難となります。さらに仕様変更が加われば、予期せぬバグ が発生するのも仕方のないことでしょう。 再利用できる範囲が非常に狭い 上位のプロセスが下位のプロセスを手続き的に呼び出すため、構造的に上位が下位に依存します。 再利用できるのは最下位の、それ以上依

  • 多重継承まとめ - 西尾泰和のはてなダイアリー

    JavaはInterfaceという特殊な実装を持たないものだけ多重継承できる。実装を多重継承する仕組みはない。同じシグネチャのメソッドを持っている2つのInterfaceを継承した際にエラーにならないので衝突に気付けない。 Pythonはクラスを多重継承できる。同じ名前のメソッドを持っている2つのクラスを継承した際にどのメソッドが呼ばれるかはC3線形化を使って決定される。see: A Monotonic Superclass Linearization for Dylan RubyはModuleという「なにかを継承することはできなくてインスタンス化もできないもの」だけは多重継承できる。Moduleが別のものを継承できないためメソッドの解決は素朴な探索でOK(include A include BしたらBでの実装が優先) SmalltalkにはTraitという実装の多重継承ができるしくみがあ

    多重継承まとめ - 西尾泰和のはてなダイアリー
  • JavaScriptでオブジェクト指向をサポートしてくれるClass.js | Web活メモ帳

    JavaScriptでは厳密にはオブジェクト指向をサポートしていませんが、プロトタイプ・ベースのオブジェクト指向を使う事でClassを定義する事が可能です。 しかし、毎回自前で実装するには大変なのでClassをサポートしてくれるライブラリを使ってみるのはいかがでしょうか。 Class.jsを使うと、まるでオブジェクト指向のような書き方で実装可能です。 以下のようなコードで実装可能になるようです。 クラスの定義 One = { message:'', set:function(val){ this.message = val; }, get:function(){ alert(this.message); } }; 使い方 var e = new Class(One); e.set('Hello, World!'); e.get(); 普段からオブジェクト指向なプログラムを書かれている方には

    JavaScriptでオブジェクト指向をサポートしてくれるClass.js | Web活メモ帳
  • ボク、if文。わるいモンスターじゃないよ! - 都元ダイスケ IT-PRESS

    id:aroundthedistance に召還されたぜ。 http://d.hatena.ne.jp/aroundthedistance/20100727/1280227851 …その昔なー。Seasar Conferenceで「あなたのコードからnewとifが消えます、魔法のDI」みたいなセッションをした。今思い出して「釣りすぎたぜサーセン」という気分になったことをまず懺悔しておく。 この doBusinessん中のif〜else ifをなんとかしたい。 …(中略)… ちょっとすっきりした。けどまだifが残ってるよね。 ポリモーフィズムの例をもうちっと実用的に書いてみた。 - 都元ダイスケ IT-PRESS どんだけif文悪者なんだ。そこまで嫌ならば、一度もif文を書かずにコードを書けばいい。無理だがなw と自嘲。 if文に限らず、問題になるのは濫用なのだ。"ある知識"がトッ散らかって

    ボク、if文。わるいモンスターじゃないよ! - 都元ダイスケ IT-PRESS
  • DCIアーキテクチャについて語ってみるよ - uehaj's blog

    Trygve Reenskaug氏とJames O. Coplien氏らが提唱する「DCIアーキテクチャ」について、id:digitalsoulさんが論文を翻訳してくださり、またその解説とサンプル実装(groovy, scala)を示してくださっており、読んでみたところ、大変興味深いので理解した限りを書いてみます。 おじさん登場 たとえば、あるおじさんがいたとします。 このおじさんは、白いスーツ、グラデーションの入ったサングラスと金ぴかのネックレスをつけて新宿歌舞伎町に出かけ「やくざ」として振るまいます。とおりかかったお兄さんがそのおじさんに出会い、目が合ってしまい、因縁を付けられ、お金を巻き上げられてしまいます。 さて、おじさんは家に帰ります。実は、このおじさんは家では良いお父さんとして振る舞います。赤ちゃんはこのおじさんの目を見て笑いかけます。おじさんは相好を崩し、オーよしよし。 さて

  • 【Perl】オブジェクト指向 for Java使い - (・∀・)イイ!!Memo

    継承 † Java public SubClass extends SuperClass { SubClass () { } } Perl package SubClass; use base qw(SuperClass); sub new { bless {}, shift; } 1; use base qw(SuperClass?)とすると、SubClass?はSuperClass?の(コンストラクタ含む)関数をすべて継承する。 ↑ interface † Perlにはinterfaceといった文法はない。実装をうまくつかってinterfaceを実現する。 親クラスで、関数の中身をdieだけにし、子クラスでオーバーライドを強制する*1 Java public interface Person { public void whatIsYourName(); } public Clas