Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

OOPに関するk_37toのブックマーク (39)

  • JavaScript継承パターンまとめ - Thousand Years

    プロトタイプ function Animal(){}; Animal.prototype = { sleep : function(){}, walk : function(){ alert('noshi, noshi') } }; function Human(){}; Human.prototype = new Animal(); new Human().walk(); // noshi, noshi もっともポピュラだと思われる。 変型プロトタイプ Human.prototype.__proto__ = Animal.prototype; new Human().walk(); // noshi, noshi ほとんどのIEを除くJavaScript処理系で実行可能。裏ワザちっく。 エクステンド /** * extend function * @param {Object} s su

    JavaScript継承パターンまとめ - Thousand Years
  • それでも僕は設定を書くね (arclamp.jp アークランプ)

  • それでも設定が大事な理由 (arclamp.jp アークランプ)

    ひがさんのエントリ「規約ベースのフレームワークのほうが覚えることが増える? 」を読んでいて、ふとした気づき。 暗黙的な規約は直感的ではない 結論から言えば、僕は"暗黙的な規約(Tacit Convention)"ではなく"形式的な設定(Articulable Configuration)"が重要だと思っています。ちなみに、Tacit Knowledgeは暗黙知でArticulable Knowledgeは形式知のこと。 なぜなら"暗黙的な規約"は、ある意味で直感的ではないからです。 人間が情報に反応するためには、情報が何らかの形で形式化されていなくてはいけません。 たとえば何かの操作を方法を学ぶ場合を考えてみます。説明書というのは操作方法を形式化したものです。しかし、直感的ではない。それは操作対象そのものに触るわけではなく、絵などで遠まわしに説明されているからです。 一方、説明書なん

    k_37to
    k_37to 2007/01/13
    規約と設定のバランスって難しいなー
  • hawklab.jp

    このドメインを購入する。 hawklab.jp 2019 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor the domain owner maintain any relationship with the advertisers. In case of trademark issues please contact the domain owner directly (contact information can be found in whois). Privacy Policy

    k_37to
    k_37to 2007/01/10
    いまいちメリットが分からなかったDIについて、少し理解が進んだ。
  • Extend for Prototype - JavaScriptでオブジェクト指向を簡単にするライブラリ: ある SE のつぶやき

    Extend for Prototype このExtend for Prototypeは、prototype.jsの継承周りが使いにくいということで、クラスをporotype.jsよりも使いやすくしたライブラリです。 ライセンスは、修正BSDライセンスとのこと。 実際に動作させたサンプルは、以下のようになります。 <html> <head> <script type="text/javascript" src="extend.js"> </script> <script type="text/javascript"> <!-- var Animal = Class.create({ CLASSDEF : { name : 'Animal' }, sex : 0, //0:Male, 1:Female initialize : function (_sex) { this.sex = _se

    k_37to
    k_37to 2007/01/09
    う~ん、どっちもどっちのような
  • http://ash1no0to.dyndns.org/htdocs/archives/2006/12/django_1.html

  • 根本から理解するオブジェクト指向分析/設計

    具体論に入る前に,まずオブジェクト指向分析/設計とは何を意味するのかを定義しておきましょう*1。 そもそも「分析」とはどういったことを指すのでしょうか。辞書を引いてみると,“ある事柄の内容・性質などを明らかにするため,細かな要素に分けていくこと”とあります。オブジェクト指向分析を適用する場面で明らかにしたい事柄とは,どのようなシステムを作らなければならないのかということです。つまり,オブジェクト指向分析とは,“どのようなシステムを作らなければならないのかを,オブジェクトという要素を使って解明すること”ということになります。これに対しオブジェクト指向設計とは,“分析によって明らかにしたシステムの実現手段を,オブジェクトという単位を使って明確にすること”となります。 両者の違いがイメージできたでしょうか。では以降は,具体的なサンプルに基づいてオブジェクト指向分析/設計の仕方を見ていきましょう。

    根本から理解するオブジェクト指向分析/設計
  • クラス設計に関するメモ

    経験的にこのようにした方がよいと思った点についての記録です。 仕事で大規模(2000クラス超)かつ製品寿命がながいパッケージソフトを作っていた関係で、 ちょっとした設計の間違いが、 あとあとで大変な苦労する羽目になったりすることを経験してきました。 このような規模が大きいアプリケーションを作ることはなかなかないかもしれませんが、 なにかの参考になれば、と思います。 継承する前に委譲を検討する Singleton パターンを使うときの注意 Template Method パターンを使うときの注意 クラス間の依存に関する注意 クラスの粒度 Singleton の問題を回避できるか? 継承する前に委譲を検討する 継承はスーパークラスの仕様をよく理解しておかないと、 バグを作りこみやすいので十分注意する必要があります。 メソッドのオーバーライドをするときも、 public void foo(){

  • ハタさんのブログ : デザパタ本には載らないデザパタ

    突然ですが、きっとあなたも使っているデザインパターンシリーズ 何気なく書いていたあのクラスが無意識的にNullObjectパターンやHook Operationパターンを適用していることがここ最近多い気がしませんか? 僕の場合はS2Daoを通して見付けた(身に着けた)ものが多いんですが、今回はそのS2Daoより、簡単に書けるHook OperationパターンとNullObjectパターンをPHP5で書いてみます。 Hook Operationパターン 「Hook Operationパターン」にも書かれていますが、あるクラスの処理の前と後ろに、別の処理を実行したいことがあります。 AOPとか特別なことはせずに、あるクラスの前処理と後処理を呼び出します。 あるクラスの処理を「Process」クラスの「execute」処理とし、別の処理(前・後)は「Hook」インタフェースを実装するクラス

  • Part2 JavaScript流オブジェクト指向プログラミング

    JavaScriptは,きちんとしたオブジェクト指向言語であって,オブジェクトを利用した高度な開発が可能です。JavaC++,.NET系のオブジェクト指向言語がオブジェクトの定義にクラスという概念を用いる「クラス・ベース」の考え方を採用しているのに対し,JavaScriptではひな型となるオブジェクトを元に独自の機能を付加するという「プロトタイプ・ベース」の考え方を採用している点が特徴です。 まず最初に,皆さんの誤解を解いておきましょう。それはJavaScriptは,きちんとしたオブジェクト指向言語だということです。オブジェクト指向言語と言えば,JavaC++などが有名ですし,C#やVisual Basic 2005といった米Microsoftが開発した.NET系の言語もあります。しかしこれらの言語に比べてJavaScriptは,一段低い「Webブラウザで利用する簡易言語」といったイメ

    Part2 JavaScript流オブジェクト指向プログラミング
    k_37to
    k_37to 2006/11/26
    ちゃんと読んでないけど入門者には良さげな感じ
  • オブジェクト指向開発にRubyを使うメリット - 特集 オブジェクト指向は難しくない!:selfup

    皆さんは,業務や研究などでソフト開発を行う際に,どんなプログラミング言語をお使いでしょうか。試しに筆者が勤務する会社の知人に聞いてみると,COBOL,FORTRAN,C,C++,C#,VisualBasic(VB),Java,ABAP*1といった答えが返ってきました。皆さんの中には,これらの言語のほかにPerlPHPといったスクリプト言語をお使いの方もいるかもしれません。 ここで紹介するRubyについて名前だけは聞いたことがあるという方も多いと思います(カコミ記事「Rubyの特徴」参照)。PerlPHPと同じスクリプト言語です。ただし,Rubyはオブジェクト指向を意識して設計されているので,オブジェクト指向スクリプト言語と呼ばれることが多いようです。そのため,オブジェクト指向設計(Object Oriented Design)に基づいたプログラミングをする際にRubyは大きな効果を発揮

    オブジェクト指向開発にRubyを使うメリット - 特集 オブジェクト指向は難しくない!:selfup
  • 技術日記@kiwanami - JavaScriptでの継承について調べてみた

    JavaScriptはプロトタイプOO言語ということで、インスタンスコピーによる継承とカスタマイズを用いるのが素直な方法なのだと思う。JavaScriptでは、単純にインスタンスを丸々コピーする方法では効率が悪いということで、 prototype による非対称スコープチェーンを用いる方法と、prototypeへのプロパティのコピーを用いる方法がよく用いられている。 しかしながら、サイトによって良い悪いがばらばらで、結局これらの方法のどれを使うのが良いのかよく分からなかったので、どういう違いがあるのか調べてみた。 prototypeスコープチェーンを操作 参考文書: http://faces.bascule.co.jp/inheritance.html プログラマのためのJavaScript (11):継承についてもう少し - 檜山正幸のキマイラ飼育記 (はてなBlog) [鏡] C/C++

    技術日記@kiwanami - JavaScriptでの継承について調べてみた
  • プリミティブ値でもプロトタイプ的継承: Days on the Moon

    書き上げた後に元記事の続きが出ているのに気づいたが、方向性が違うようなのでそのまま掲載。 404 Blog Not Found:javascript - プロトタイプ的継承 (元記事: Prototypal Inheritance) より。継承という言葉は意味が広いので、この操作に対してはチャイルドの作成といったほうが個人的にはわかりやすい。 さて、元記事で紹介されているコードではプリミティブ値からのチャイルドの作成 (継承) ができなかった。これはなぜかといえば、オブジェクト作成の際、プリミティブ値をプロトタイプ ([[Prototype]] 内部プロパティ、__proto__ プロパティ) に設定することはできないからである。 そこで、プリミティブ値が渡された場合は、それをラッパオブジェクトに変換することにする。といっても場合分けの必要はない。Object 関数を使えば、プリミティブ値

  • 関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。 - IT戦記

    最近、プロトタイプ的継承の話しが盛り上がっています。 http://blog.livedoor.jp/dankogai/archives/50662064.html http://labs.cybozu.co.jp/blog/kazuho/archives/2006/10/javascript_string.php http://blog.livedoor.jp/dankogai/archives/50662606.html 最終形がやたら複雑になっています でも、実際はあそこまで複雑に書かなくても、できると思います ^^; そう思う理由 P 関数は object 関数の中でローカルのものである。コンストラクタとして使える必要はない。なので、 Atomic な場合でも P は function(){} でいい。 method 関数では P.prototype のプロパティに関数が代入されて

    関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。 - IT戦記
  • javascript - プロトタイプ的継承完全版 : 404 Blog Not Found

    2006年10月18日21:00 カテゴリLightweight Languages javascript - プロトタイプ的継承完全版 Kazuho@Cybozuさま、いつもありがとうございます。 Kazuho@Cybozu Labs: JavaScript の String 型を継承する 結論から言うと、String 型も継承っぽいことができます。こんな感じ。 おかげでプロトタイプ的継承モデルの完全版が出来ました。 AtomicなObjectを継承 これは、以下のように包括的に出来ます。 var Atomic = function(C){ var P = function(v){ this._v = v; }; P.prototype = new C; P.prototype.valueOf = function(){ return this._v.valueOf(); } P.pro

    javascript - プロトタイプ的継承完全版 : 404 Blog Not Found
  • Iterator,Closure v.s. OOP - koyachiの日記

    イテレータはオブジェクトインターフェースの一つで、nextメソッド等でオブジェクトが保持する次の要素を必要な時に取得することができるものです。リスト自体が巨大であったり、リストの生成に時間がかかる場合や、必要となるリストや要素についての情報がわからない場合に、必要量だけ取得できるのがイテレータの利点です。 最小値と最大値を指定されたリストを生成し、イテレータで順にその値を取得するオブジェクトの実装について考えてみます。 my $it = upto(7, 11); $n = NEXTVAL( $it ); # $n == 7 push @a, NEXTVAL( $it ) for 1..3; # @a == (8,9,10) $x = NEXTVAL( $it ); # $x == 11 # この時点で$it == undefined unless (defined NEXTVAL( $it

    Iterator,Closure v.s. OOP - koyachiの日記
  • DI(依存性注入)を白紙から説明してみる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「DI(依存性注入)からどこへ行こうか その1」において: DI(依存性注入)については、雑誌や書籍で随分紹介されているので、そういうのを見てください。 こんなこと[注:DI化]して何がうれしいかって? それは、ファウラー先生とかその他エライ人とかエラクない人とかに聞いてください。 と書きましたが、DI(Dependency Injection; 依存性注入)そのものについても説明を試みてみましょう。具体的なサンプルを使うことにします。そのため、サンプルの説明が長くなってしまうのが困ったことですが、まー、単なる能書きよりはサンプルがあったほうがいいでしょ。 内容: サンプルはテンプレート処理系 レクサー(字句処理系) レクサーをインターフェース経由で使う サービス・ロケーター 依存性が消えてない! DI(依存性注入)登場 DIが、かつてIoC(制御の逆転)と呼ばれていた理由 ●サンプルはテ

    DI(依存性注入)を白紙から説明してみる - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)

    ジジイの手習いで、JavaScriptを勉強中でございます。その動機は「結局、ブラウザベースRIAかよ」のようなこと。非ブラウザベースのリッチクライアントへの期待を失ってしまったんですね。短期的・現実的な策としては、Ajax的な手法によるRIAなのかなぁ、という気分。ただし、「短期的」が“1年”と“5年”ではえらい違いです。今のところ僕には、「短期的」の実際の期間はわかりません。 僕のJavaScript調査の結果は、「初心者でも使えてプログラマでも困惑するJavaScript 」などに書きました。これらの続きとして、「プログラマのためのJavaScript (*)」というタイトルで書こうかと予定してます。あくまで予定、気まぐれでモノグサな僕のことだから、…… “プログラマのための”というのは、C, C++, Java, C#など“普通の”プログラミング言語にある程度慣れていることを前提に

    檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)
  • Patterns For PHP- Blog chia sẻ kiến thức liên quan đến lập trình PHP

    Đăng kí ngay để nhận thông báo về các bài viết và tin tức mới nhất về lập trình PHP P4P có rất nhiều kiến thức và thông tin từ nhiều nguồn khác nhau giúp sinh viên có thể dễ dàng tiếp cận và làm quen với những kiến thức mới nhất

    Patterns For PHP- Blog chia sẻ kiến thức liên quan đến lập trình PHP
    k_37to
    k_37to 2006/11/03
    PHP4とPHP5のデザインパターンサンプル
  • < TrueCode > - The stuff school didn't teach you: Object Oriented Super Class Method Calling with JavaScript

    Tuesday, August 15, 2006 Object Oriented Super Class Method Calling with JavaScript The Problem: Every programmer who's tried to apply classical Object Oriented techniques when developing with JavaScript, has at one time or another asked themselves the question: How do you call or invoke a super class method? Before the Ajax craze got into full swing, this question rarely arose because most develo

    k_37to
    k_37to 2006/11/03
    Child.prototype = new Parent();みたいな書き方を初めて知った。