タグ

oopに関するyouzのブックマーク (27)

  • 所謂オブジェクト指向言語はオブジェクト指向してないんじゃないかというなにか - にゃははー

    ※ネタです。マジレスしない様に ※重ねて言いますがネタです。 ※なんどもいい(ry まずは http://b0r0nji.blogspot.com/2011/12/blog-post.html を読んでください。 この説明でオブジェクト指向わかった!ってなったらそれどうなんだろうと思ってしまったわけです。で、オブジェクト指向プログラミング - Wikipedia読んでみると、 相互にメッセージ (message) を送りあうオブジェクト (object) の集まりとしてプログラムを構成する技法である。 ほう、メッセージとな。さて、先の説明にメッセージがあったか?となるわけです。 オブジェクトとはなにか 多くのOOPをサポートしていると謳っている言語はこのメッセージの送受信(Message Passing)をメンバ呼び出しという形に置き換えて、概念的にはメッセージを送り合って通信しているよう

    所謂オブジェクト指向言語はオブジェクト指向してないんじゃないかというなにか - にゃははー
  • 小人閑居して: 「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説

    2011年12月6日火曜日 「ぐへへお姉ちゃんパンツ何色」から始めるクラス解説 「ぐへへお姉ちゃんパンツ何色」はこれ以上ないほどオブジェクト指向であり、しかも理想的な実装をしていることに気づきました。これを用いてオブジェクト指向を説明してみようと思います。 ある人が「ぐへへお姉ちゃんパンツ何色」と質問するのは、お姉ちゃんオブジェクトの保持するpants_color変数を取得しようとする手続きと見ることが出来ます。つまり oneechan.pants_color を取得しようとしているわけです。 ではどうすればいいのでしょうか? 考えてみましょう。直接パンツを見ればpants_colorを取得することができますね。 クラスを使わないとすればこんな書き方が考えられます。 struct oneechan{      int pants_color; }; 構造体でひな形を宣言します。

    youz
    youz 2011/12/07
  • XE2 Developer's Guide and Reference

    CLON stands for Common Lisp Object Network. CLON is a prototype-based object system for Common Lisp. It is different from CLOS in several important ways: CLON is prototype-based, not class-based. A prototype is a template object from which other objects are "cloned". Method invocation happens via message-passing, not generic functions; messages are conceptually different from synchronous function

  • dto's clon at master - GitHub

  • Rifle-Oriented Programming with Clojure

    Any comparison of hot JVM languages is likely to note that “Clojure is not object-oriented.” This is true, but it may lead you to the wrong conclusions. It’s a little like saying that a rifle is not arrow-oriented. In this article, you will see some of the ways that Clojure addresses the key concerns of OO: encapsulation, polymorphism, and inheritance. This is a whirlwind tour, and we won't have t

    Rifle-Oriented Programming with Clojure
  • ハイブリッドOOPLの呪い - みねこあ

    手続きプログラミングとオブジェクト指向プログラミングはなんだかどうも癒着してしまって、別のプログラミングパラダイムという気がしてこないのが、実は諸悪の根源なのではないかと思ってしまいます。 C++ なんかでは、OOPLになったといっても手続きを流し込む大箱が追加されただけで、メンバ関数の中に降りていけば、そこに見慣れた手続きプログラミングが広がっています。Smalltalk なんかですと、メソッドの中の小コードであってもこれはもう手続きではなくって、メッセージ式が連なっていく様はむしろ関数言語に似ています。 「純粋OOPL」「ハイブリッドOOPL」の違いは、「全てがオブジェクトであるか」とか「最初からOOPLとしてスクラッチビルドされたか、既存言語を増築したか」ではなく、実はこの差なのでは、と思います。sumimさんが啓蒙されているような「二つのOOP」があんまりフツーには知られていなかっ

    ハイブリッドOOPLの呪い - みねこあ
  • Programming Language Soopy

    はじめに。 Soopy とは、なるべくシンプルな文法を目指して 設計された関数型オブジェクト指向言語です。 Soopyの文法は、Lens,Eiffel,StandardML等から影響を受けていますが、 それらのどの言語とも似ていません。 入門(Tutorial) SoopyG Document Soopy Wiki Download Project Manager: randy

  • はてなブログ | 無料ブログを作成しよう

    織田信長 ぼちぼち、元気にやっています。少し薬にも慣れた...んかなぁ。相変わらずべられないけど。朝、指がこわばって文字なんて入力できなかったけど、それはほぼなくなった。関節もどこも痛くない。薬効いてきたんやろな。 で、ブログを書こうと言う気がまた起きてきた。 …

    はてなブログ | 無料ブログを作成しよう
  • Perl5 のオブジェクト指向を理解する - モダンなPerl入門

    Inside Perl5 OO 対象読者: 他の言語で OO したことあるっぽいひと/Perl4 でとまってるひと Class をつくる まずは点クラスをつくってみましょう package Point; sub new { my ($class, %args) = @_; # 第1引数はクラス名 bless({%args}, $class); # データを bless すると、オブジェクトになる } sub x { my $self = shift; # 第1引数は、インスタンス $self->{x} = shift if @_; # 引数があればセッター扱いになる $self->{x}; } sub y { my $self = shift; $self->{y} = shift if @_; $self->{y}; } このようにして作ったクラスは、下記のようにして呼び出すことができま

  • MagicPoint presentation foils

    Generated by MagicPoint

  • オブジェクトとクラス、とりあえずご質問に答えます - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ」には、いろいろとフィードバックがありまして、僕もそれらに触発されたところもあるので、お応えしたい気もするのですが、なかなかにねー、、、エネルギーが足りないや。 とりあえず、明白に質問(疑問文)の形をしたものに答えます。 higeponさんの: 今日お話に出ていたCommonLisp(?)のすごいコードのお話ってどの辺に書かれていますでしょうか? aufhebenさんの: レイフィケーションとパワータイプって同じような概念ととらえてよいのかな? 檜山さんのエントリで、is-created-by とレイフィケーションは、他の関係と矢印の向きが逆な気がするんですけど、何か意図があるのでしょうか? id:higeponさんの質問は、当該エントリーとは別な文脈でのものですが、一連の流れとしては関連するので。 もし、「いまさらながらだ

    オブジェクトとクラス、とりあえずご質問に答えます - 檜山正幸のキマイラ飼育記 (はてなBlog)
    youz
    youz 2008/10/01
  • JavaScriptの再利用とapply

    私がこういうの大嫌いなのは一部では有名な話ですが、職場では寛容に、ネット上では偏屈に、がポリシーなので素直に流しました。

    JavaScriptの再利用とapply
  • クロージャの動作と展望(?) - 象徴ヶ淵

    クロージャについての言及があったので、ちょっと見解を述べてみる。 On lispに書いてある通りに説明しようとしたら、上手く動かなかった*1ので、xyzzy上で確認できたことを書く。 私がクロージャといっているのは、主にレキシカルクロージャを指している。 lexcalというのは、語彙とか辞書という意味だが、これは、定義された関数が、引数にない変数(フリー変数)を参照しているときに、実際に何を参照するべきかを関数が持っている辞書に記録していることを示している。 関数は、その関数が定義されたクロージャ内の変数を覚えている。 xyzzyでクロージャが意識されるのは、主にlet周りである。 トップレベルで定義された関数は、letで同じ名前の変数が束縛されていても、トップレベルの変数を参照する。 また、let内で定義された変数は、トップレベルや別のlet内で束縛された変数とは無関係でいられる。この場

    クロージャの動作と展望(?) - 象徴ヶ淵
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • なんで多重継承はそんなに嫌われるのか? ちょっくら分析してみるか - 檜山正幸のキマイラ飼育記 (はてなBlog)

    多重継承を嫌う人は多いですよね。「複雑だからダメだ」ってことらしい。でも、「複雑=ダメ」はちょっと乱暴。必然性/必要性がある複雑さなら、それは受け入れざるをえないのですから。それに、どの程度の複雑さなのか、その複雑さはどこから来るのかを知らないと「ダメ」かどうかの判断はできないと思います。 という次第で、多重継承の複雑さを調べてみます。ダメかどうかの判断は僕はしません。圏論の道具を使うのだけど、事前の知識は一切不要です(最後の節を除いて)。最後にまとめて圏論的な解釈をしますが、ここは省略可能。 内容: クラスとその例 多重継承は集約と単純継承の組み合わせ 嫌われる理由 1:名前のバッティング 嫌われる理由 2:ダイアモンド継承 ダイアモンド継承の対処 とりあえずのまとめ 圏論からのアプローチと整理 クラスとその例 多重継承の話をするので、もちろんクラス概念は仮定します。でも、複雑さの話を複

    なんで多重継承はそんなに嫌われるのか? ちょっくら分析してみるか - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Collection & Copy - JavaScriptにおけるプライベートメンバ

    JavaScriptにおけるプライベートメンバ 翻訳 原文:Private Members in JavaScript Copyright 2001 Douglas Crockford. All Rights Reserved Wrrrldwide. JavaScriptJavaScript: 世界で最も誤解されたプログラミング言語です。JavaScriptのオブジェクトが、プライベートなインスタンス変数およびインスタンスメソッドを持てないため情報を隠蔽する能力が欠けていると思われることがあります。しかし、これは誤解です。JavaScriptのオブジェクトは、プライベートメンバを持つことができます。その方法は以下です。 オブジェクト JavaScriptはオブジェクトを基礎としています。配列はオブジェクトです。関数もオブジェクトです。オブジェクトもオブジェクトです。それならば、オブジェク

  • http://swik.net/User:luchkovsky/JavaScript+Lazy+Inheritance+Pattern

  • Moose::Cookbook::Recipe1 - has, before, after, extends - - 日向夏特殊応援部隊

    もの凄い乗り遅れた感ですが僕も Moooooooooooooooooose してみる。 とりあえず Cookbook をやってみる事にしてみました。 Moose::Cookbook::Recipe1 - The (always classic) Point example. - metacpan.org ソース まぁ適当にテストとか追加してある。 package Point; use Moose; has 'x' => ( isa => 'Int', is => 'ro' ); has 'y' => ( isa => 'Int', is => 'rw' ); sub clear { my $self = shift; $self->{x} = 0; $self->y(0); } package Point3D; use Moose; extends 'Point'; has 'z' =>

    Moose::Cookbook::Recipe1 - has, before, after, extends - - 日向夏特殊応援部隊
  • いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な

    いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    youz
    youz 2008/10/01
  • MagicPoint presentation foils

    Generated by MagicPoint