タグ

ooplに関するmhagのブックマーク (7)

  • 404 Blog Not Found:perl - POO と goto

    2007年04月24日00:45 カテゴリLightweight Languages perl - POO と goto というわけで、番。 404 Blog Not Found:perl - 万能なnewの書き方 ここからが面白くなるのだが次のEntryへ譲るここに着目していただきたい。 sub init { my $self = shift; $self->{$_} = $default{$_} for keys %default; $self->SUPER::init(); } 初期化に限らず、自分で何かをしたら次のメソッドに振るというのは、OOでは非常によく見られる光景だ。特にpluginなどを使っている場合、それが著しい。 しかし、このコード、次のメソッドに振っているのはいいのだけど、振ってから戻ってくるのだ。メソッド呼び出しも関数呼び出しに過ぎないのだから、当然といえば当然だ

    404 Blog Not Found:perl - POO と goto
    mhag
    mhag 2007/04/26
  • 404 Blog Not Found:perl - 万能なnewの書き方

    2007年04月23日22:45 カテゴリLightweight Languages perl - 万能なnewの書き方 Perl 5のOOは、慣れてしまうと簡単だ。 継承とか考えずに、普通にクラスを作りたければ、必要なのは以下の二行だけ。 package Klass; sub new { bless {} }; これだけでは何もできないので、とりあえずnameというアクセサーを追加してみる。これだけ。 sub name { my $self = shift; $self->{name} = shift if @_; return $self->{name}; } しかし、上の形式だと、継承をサポートしていない。だから、 package Klass; sub new { bless {} }; package Klass::Sub; our @ISA = qw/Klass/; # new

    404 Blog Not Found:perl - 万能なnewの書き方
    mhag
    mhag 2007/04/26
  • オブジェクト指向とはなにか、カプセル化とはなにか - 神様なんて信じない僕らのために

    Exceptional C++ Styleの記述に非常に感銘を受けたので引用しておきます。 オブジェクト指向におけるカプセル化の位置づけ オブジェクト指向による設計とプログラミングにおいて、それはどれくらい重要か? カプセル化は、オブジェクト指向プログラミングの最重要概念である。以上。 ・カプセル化はほとんど常にデータ隠蔽を意味する。 ・仮想関数における実行時ポリモルフィズムは、基クラスによって提供されるインターフェースを、(コードが書かれた時点では存在する必要さえない)派生クラスによって提供される実装から完全に分離する。 ・テンプレートによるコンパイル時ポリモルフィズムは、インターフェースを実装から完全に分離する。必要な操作を持つクラスは、継承やその他の関係がなくても自由に交換して利用できる。 カプセル化が常にデータ隠蔽を意味するわけではないが、データ隠蔽は常にカプセル化の一種である。

    オブジェクト指向とはなにか、カプセル化とはなにか - 神様なんて信じない僕らのために
    mhag
    mhag 2007/04/11
  • 大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2)

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2):プログラミング言語の進化を追え(1/3 ページ) 前回に引き続き、Scheme言語の処理系、Gaucheを開発している川合史朗氏が、クロージャの機能を検証し、関数型言語とオブジェクト指向言語の関係について解説していきます。今回は、クロージャとオブジェクトのより深淵を探求します。 抽象化ツールとしてのクロージャ C++的なオブジェクトの世界では、オブジェクトの実体とは「ひとかたまりの構造体としてメモリ上に置かれたインスタンス変数の値」にすぎません。オブジェクトのポインタを取れば、それは事実上、その構造体へのポインタを持っていることになります。クロージャを「関数」中心で見ていると、その実体は「オブジェクト」の実体とは異質なもののように思えるでしょう。 確かにクロージャのナイーブな「実装」は、関数ポインタと環

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2)
  • 大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係

    はじめに 2006年8月、Javaの次期仕様(JDK7)にクロージャを入れる案*が出され話題になりました。クロージャは関数型言語では30年以上の歴史を持ち、プログラミングにおける基的な道具となっています。最近はPerlRubyPythonなどの軽量言語(Lightweight Language)にも取り込まれ、それと知らずに使っているユーザーも増えているのではないでしょうか。 一方、手続き型言語の世界では、完全なクロージャはなじみが薄いようです。C言語からC++へと発展してきた手続き型言語のメインストリームでは、 ガーベジコレクションを持たず、ローカル変数をスタックに置くことを基とする言語のため、クロージャとの相性が悪かった オブジェクト指向を採り入れることでクロージャの代用とできた といったことが理由でしょう。 実際、クロージャとオブジェクト指向プログラミング言語には、メカニズム

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係
  • Smalltalk や C++ は何も発明していない。発明したのはケイやストラウストラップ。 - Smalltalkのtは小文字です

    第1回 サルでも分かるプログラミング言語の新潮流【前篇】の図中の 1969 年の Smalltalk というのはご愛敬として…(おそらく、FLEX システムあたりと取り違えられたのでしょう。自他共に認める言語オタクだけあって間違い方としては渋いですね(^_^;)) 気になったのは次ページのこちら、 しかし、オブジェクト指向という概念そのものは、Smalltalkによって発明されたものではありません。その概念は、1960年代後半スウェーデンのクリステン・ニガルド(Kristen Nygaard)らによってSimula言語に導入されたものです。当時は「オブジェクト指向」という単語はまだありませんでしたが、クラスや継承などオブジェクト指向プログラミングにとって重要なアイデアはSimulaにおいてすでに実現されていました。 ビアルネ・ストラウストラップ(Bjarne Stroustrup)によるC

    Smalltalk や C++ は何も発明していない。発明したのはケイやストラウストラップ。 - Smalltalkのtは小文字です
  • クラス変数というのはやめにして、クラス共有変数とでも呼べばいいのか? - Smalltalkのtは小文字です

    [ruby-talk:245207] class methods and instance variables in ActiveRecord::Base と一連のやりとりを見ていて思ったコト。クラスごとに管理される共有変数…といった意味合いで。 Smalltalk や Ruby で、「クラスメソッド」や「クラスインスタンス変数」といえば、それぞれ、オブジェクトとしてのとある“クラス”、つまり、何か別のクラス(メタクラスや特異クラス)のインスタンスとしてのその“クラス”が、コールできたり持つことができる、たんなる(self が“クラス”というだけの…)“インスタンスメソッド”や“インスタンス変数”を指します。あくまで便宜的な呼称です。 それに対して、「クラス変数」は、クラスやそのクラスに属するインスンタスたち(場合によってはサブクラスやそのインスタンスたち)によって共有可能な、ある種の大域

    クラス変数というのはやめにして、クラス共有変数とでも呼べばいいのか? - Smalltalkのtは小文字です
  • 1