This domain name has been registered with Gandi.net. It is currently parked by the owner.
はじめに JavaScriptはオブジェクト指向言語です。しかし、そのオブジェクトの性質は、他に良く知られているオブジェクト指向言語のJavaやC++と大きく異なっています。 そこでこの記事では、なぜそのような違いがあるのか、JavaScriptにおけるオブジェクト指向の言語思想を見ていくと共に、その違いの根幹であるプロトタイプについて解説していきたいと思います。 なお、この記事はJavaScriptの解説ですが、その内容は、標準仕様のECMAScriptで扱われる範囲に基づいています。従って、同じくECMAScriptを元にしている言語(JScript、ActionScript)でも通じる内容になっています。 対象読者 プログラミングの基本的な知識、ならびにオブジェクトやメソッドと言った基礎的な概念については、ここでは解説しません。最低限、オブジェクト指向プログラミングについて
クラスを定義する方法です。考え付くだけでも、これだけたくさんの方法があります。やっぱり、 JavaScript って柔軟であり複雑な言語ですね。 ちなみに、以下のすべての例はこのクラスを定義しています。 ちなみに、僕は一番下の書き方ですね。 皆さんはどのようにプログラミングしていますか? プロトタイプを使わない。クロージャを使う。 // プロトタイプを使わない。 // クロージャを使う。 function Item(price) { this.showPrice = function() { alert(price); }; } プロトタイプを使わない。クロージャを使わない。 // プロトタイプを使わない。 // クロージャを使わない。 function Item(price) { this.price = price; this.showPrice = function() { aler
忙しい人のためのまとめ 一般に「オブジェクト指向プログラミング」と呼ばれる考え方には発案者が異なる二系統がある。(ただし簡単のため、次のうち前者から批判的に派生して生じたプロトタイプベースのオブジェクト指向はここには含めていない) アラン・ケイによる、変化に強い長期運用可能な遅延結合システムを SIMULA67 にあった「オブジェクト」をメッセージの受け手とすることで実現(オブジェクトにメッセージ送信)するアイデアに基づく「メッセージングのオブジェクト指向」と、 ビアルネ・ストラウストラップ(前後して抽象データ型を発案したリスコフ本人、オブジェクトクラスを考えたニガードらSIMULA陣営、Eiffelのメイヤーらも同様の着想を得ている)による、ユーザー定義型(抽象データ型)を SIMULA67 にあった「クラス」という言語機能を使って実現(カプセル化、継承、多態性)するアイデアに基づく「抽
(thanks to id:koyachi、del.icio.us/rtk2106) OOPとFPと。関数、オブジェクト、クロージャの使い分けについて考えます。 関数型が良いのか、オブジェクト指向が良いのか、知りたいと思っていました。色々なページを読み、現時点で一応の答えを得ました。 カウンタを例にして、関数、スコープ、オブジェクト、クロージャの順に見て行きます。関数関数は処理です。入力と出力があります。関数型プログラミングでは、関数同士の入力と出力を連結しプログラムが構成されます。 var current = 0; function next(v){ return v + 1 } function previous(v){ return v - 1 } ok( 1 == ( current = next(current) ) ); ok( 2 == ( current = next(cu
-> 趣旨と注意書き -> 身近なpackage -> なんのためのpackage ? -> What's `new' ? -> bless ( reference => package ) -> Hello, Module World! -> オブジェクト? -> main パッケージと関連付けてみる -> クラスとメソッド -> オブジェクト指向 -> オブジェクトがリファレンスなら… -> -> を連続する -> 継承 -> 多重継承 -> 多重継承をやめる -> 多重継承をやめる(もう少し簡単に) -> 情報源(書籍等) <- モドル 趣旨と注意書き これを読んでも、あんまりきちっとした知識は、身に付きません(^^; オブジェクト指向の概念はほんの少ししか説明しません。ここで述べるのは、Perlでどうやるかってのが主です(それも不十分&嘘まじりかも)。 とりあえず、モジュールを作り
いま Perl で一番イケてるオブジェクト指向プログラミングを学ぶ 最近、現実逃避で「CPAN author にでもなるか」と思い、Perl でちゃんとしたモジュールを書くにはどうしたらいいかをチマチマ勉強しています。 で、そうなるとやっぱりオブジェクト指向なわけです。が、Perl は Java などに比べるとオブジェクト指向的な記述を前提としていないユルユルなプログラム言語 (あくまで主観ですが) なので、書き方も使い方も実現方法も色々あってどういう風にやるのが一般的なのかよくわかりません。普段から CPAN のモジュールを使っていればそれでもなんとなくわかるのですが、モジュール探すより先に手が動いてしまうタチなので深く経験・学習する機会もなく。 実は過去にオブジェクト指向っぽい書き方にチャレンジしてみたものの、書いてるうちに「一人で使っている分にはベタで書いたほうが早い」とか思い出して
ときどき「オブジェクト指向でプログラミングをするというのはどういうことなの?」と聞かれるときがあります。そんなときにうーん、オブジェクト指向ってどう説明したらいいものか...犬がワンって吼えるでしょ...ああ、これじゃわからん、などと頭を悩ませるのですが、ふと 憂鬱なプログラマのためのオブジェクト指向開発講座 (DDJ Selection) から学んだ、Windows の UI の話が分かりやすいと思いました。 Macintosh や Windows の GUI はオブジェクト指向だ、というのが書籍の中にある説明です。(P.300 ぐらいから解説されています。) ファイルの削除、という動作を思い浮かべてみましょう。このとき行う操作は、 まずファイルをマウスで選択する 右クリックして操作一覧を出す 削除する という動作になります。(ドラッグ&ドロップでごみ箱に入れる、というのもありますね。)
タイトルは釣りです。 実際のタイトルは「Perlのオブジェクト指向がムズカシイだって?んなバカな。だったらPHPで再現してやんよ!」でございます。 ヘイヘイヘイ。そこの君。Perlのオブジェクト指向が難しいだなんていったい誰が言ったんだい? Perlのオブジェクト指向ほど、シンプル且つ柔軟なものはないよ! 単なるパッケージ(名前空間)とリファレンス(データ)をblessという関数で紐付けただけのもなんだから。 第一引数に必ず$selfが来るっていうのも結局の話たんなる関数呼び出しとなんら変わらないのだから。 package Foo; sub new { my $class = shift; return bless { @_ } , ref $class || $class; } sub plus { my $self = shift; my $int = shift; return $s
<< 2006/01/ 1 1. [教会] 元旦 2 1. 出産 2. 帰省 3. 到着 3 1. デジタル体重計のユーザインタフェース 4 1. [OOP] Classbox 2. [OOP] Classboxの実装 5 1. 帰宅 2. PCレスライフ 6 1. PC修理 7 1. 雪かき 2. [言語] プログラミング言語SRU 8 1. [教会] 断食安息日 2. あーめん 3. 筋肉痛・体調不良 9 1. 米子 10 1. [原稿] オープンソースマガジン3月号 11 1. [原稿] 日経Linux 3月号 12 1. [Ruby] Charming Ruby Compiler 2. [Ruby] The Open Nature Of Ruby 13 1. ニート娘に悩む親 2. Python Status Update 3. 泥縄 14 1. 宣教師のお手伝い 2. Simpl
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などを使っている場合、それが著しい。 しかし、このコード、次のメソッドに振っているのはいいのだけど、振ってから戻ってくるのだ。メソッド呼び出しも関数呼び出しに過ぎないのだから、当然といえば当然だ
prototype-based object oriented 。 オブジェクトがスロット(クラスのインスタンスならインスタンス変数やメソッドに相当)の追加をクラスに依存せずに自由にできることを前提としたオブジェクト指向。あるいはそうしたオブジェクトを用いたプログラミングや、それをサポートする機構。 「インスタンスベース」、「オブジェクトベース」とも。 これらへの言い換えは「プロトタイプベース」という言葉が持つ限定的なニュアンスを払拭するのにおおいに役立つ。しかし同時に、前者の「インスタンスベース」において特に、“プロトタイプベースにはクラスがない”あるいは“プロトタイプベースはクラスベースの対極にある(あるいはアンチテーゼである)”といったような教科書的記述に惑わされている人をひどく混乱させるらしく、極端な拒絶反応を示す人もいるので注意。また、後者においては、オブジェクトオリエンテッド=
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く