タグ

関連タグで絞り込む (277)

タグの絞り込みを解除

OOPに関するkiyo_hikoのブックマーク (216)

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    Google Sites: Sign-in
    kiyo_hiko
    kiyo_hiko 2013/07/04
    めんどくさそう
  • 存在しない記事 - 標高+1m

    ここにあった記事は消しました。 詳しくは以下: ympbyc.hatenablog.com

    存在しない記事 - 標高+1m
  • Best way to share logging object among multiple objects?

    kiyo_hiko
    kiyo_hiko 2013/06/04
    シングルトンにしようとかLog4Perl使おうとか。自前Logクラス既にシングルトンだしそのままでよさそ
  • newを封印して、JavaScriptでオブジェクト指向する(1)

    以下はプロトタイプ的継承だけで一通りの機能を実現できる、という一つの例です。もちろん他にも書き方はありますし、newを使うのがよくないと主張しているわけではないです。 (誤解を生みそうな文体が混じっているようなので追記: 2011/5/14) 春ですし、少し初心者向けの記事を書きます。タイトル通り、JavaScriptのオブジェクト指向について。ちょっと長くなるので目次です。 クラス(に相当するオブジェクト)を作る オブジェクトからオブジェクトを作る(インスタンス化) 単一継承 多重継承 privateは諦めましょう 親のメソッドを呼ぶ コンストラクタ instanceofに対応する ダックタイピングのススメ JavaScript標準のオブジェクト指向といえばnewやらprototypeやらを書く必要がありますが、これらは書くのが面倒臭い上に気をつけないといけない点がたくさんあります。Ja

    newを封印して、JavaScriptでオブジェクト指向する(1)
    kiyo_hiko
    kiyo_hiko 2013/06/03
    「JavaScriptにクラスはありません。~もしJavaScriptの本で補足も何もなく「クラスを作ろう!」みたいなことが書いてあったら、それはJavaScriptを理解していない人が書いた本です。とっととゴミ箱へダンクしましょう。」
  • 開放/閉鎖原則 - Wikipedia

    開放/閉鎖原則(かいほうへいさげんそく、open/closed principle、OCP)とは、オブジェクト指向プログラミングの設計への提言である。 ソフトウェア要素(クラス、モジュール、関数など)は、拡張に対しては開いており、修正に対しては閉じているべきである。 software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.[1] この原則に従っていれば、ソースコードの修正をせずとも、各要素の振る舞いを拡張することが可能になるとしている。 この開放/閉鎖の原則は、1988年にバートランド・メイヤーが提唱したものと、1996年頃にロバート・C・マーチン(英語版)らが提唱したものの二通りがある。どちらも継承やポリモーフィズムによる

    kiyo_hiko
    kiyo_hiko 2013/05/03
    最近?はバートランド・メイヤーからはいくぶん意味が変わっていて、インターフェースを重視しているらしい // b:id:entry:140386206がそういう話だった。
  • ダック・タイピングのメリット - OKWAVE

    > ダック・タイピングのメリットを教えてください。 メリットはリンク先に書かれている 「オブジェクト(変数の値)に何ができるかはオブジェクトそのものが決定する」ではないでしょうか。 リンク先のRubyスクリプト例で言えば、testの引数に与えられるオブジェクトにsoundというメソッドが在りさえすれば、それに応じた戻り値を返すということです。 > 「オブジェクトがあるインタフェースのすべてのメソッドを持っているならば、(以下略)」 については以下のようなスクリプトでは如何ですか def test(foo) puts foo.sound end class Duck def sound 'quack' end end class Cat def sound 'myaa' end end dog = String.new("pochi") def dog.sound 'bow' end tes

    ダック・タイピングのメリット - OKWAVE
    kiyo_hiko
    kiyo_hiko 2013/04/16
    State数十個持った辺りで既にあひる型は各クラスのチェックが死ぬほどめんどくさく、メリット感じない // 基底クラスに派生クラスでのオーバーライドを強制する的な注釈を書いとくとチェックするスクリプト作ってみるか
  • Javaクラスの継承で独立したstatic変数を使いたい - OKWAVE

    インスタンスの存在と無関係にクラス共通のフィールドを持たせて、 Ex1.str = "hoge"; Ex2.str = "moga"; のような書き方がしたい訳ではなく、 Ex1 ex1 = new Ex1(); ex1.str = "hoge"; のように常にインスタンスを介する使い方で、 同じクラスに属するどのインスタンスにも共通させたいが、 それぞれのクラスで宣言するのは面倒なので、 できればスーパークラスで処理を一元的に記述したいということなら、 直接フィールドにアクセスするやり方ではないが、 以下のようにスーパークラスにインスタンスメソッドのアクセッサを定義して、 Classクラスをキーにしてクラス変数のMapに格納しておく方法もある。 public abstract class AbstractStatic { private static java.util.HashMap<

    Javaクラスの継承で独立したstatic変数を使いたい - OKWAVE
    kiyo_hiko
    kiyo_hiko 2013/04/12
    static変数を持ったクラスを継承するためstaticなHashMapにClassをキーにして値を格納 これいい
  • perlの最新版の機能の読み方-blog-Motivation Driven Development

    perlの最新版の機能の読み方-blog-Motivation Driven Development

    kiyo_hiko
    kiyo_hiko 2013/04/05
    ここと同じ問題にぶつかった Perlのオブジェクト指向はいちいちやりにくい
  • デザインパターンの自動化

    .NETで簡単な例を見てみましょう。 public Person : INotifyPropertyChanged { string firstName, lastName; public event NotifyPropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { if ( this.PropertyChanged != null ) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public string FirstName { get { return this.firstName; } set { this.firstName

    デザインパターンの自動化
  • Facade パターン - Wikipedia

    Facade パターンあるいは Façade パターン(ファサード・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義された、コンピュータソフトウェアのデザインパターンの1つである。Facade(ファサード)とは「建物の正面」を意味する。異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的とする。 Facadeパターンの例として、サブシステムとしてのコンパイラーを考える。システムとしてのコンパイラーは字句解析器や構文解析器などから構成されている。これらの構成要素は、新たなコンパイラーやその他ソフトウェアを作成する上でサブシステムとして利用することが出来る。しかし、一般ユーザーにとってコンパイラーはソースコードからプログラムを生成するためのものであり、ソースコードをコンパイルできる機能があれば十分である。

    Facade パターン - Wikipedia
    kiyo_hiko
    kiyo_hiko 2013/02/18
    要点を復習 1.Facadeは窓口に徹し、詳細な実装を持たない。2.Facadeが被さっている (3.もあって隠蔽してるわけじゃない) サブシステムからFacadeを使うことはない。3.Facadeはサブシステムへのアクセスを妨げるものじゃない。
  • Excel VBAではじめるクラス入門

    はじめに Visual Basicが独自のクラスを作成して使えるように、Officeに搭載されているVBAでも独自のクラスをプロジェクトに組み込むことができます。作成したクラスは、各Officeアプリケーションで「インポート」「エクスポート」ができるため、汎用性のあるクラスを1つ作成すれば他のアプリケーションのVBAでも利用できるようになります。 そこで、稿ではExcel 2003で利用できるクラスを作成しながら、VBAでクラスを作る方法を紹介します。 対象読者 Excel VBAを使ってマクロ(プログラム)を作ったことのある人、Visual Basicが使える人が対象です。 必要な環境 Excel 2000、2002、2003が使用できる環境。 クラスは便利 VBAでクラスを作成するメリットは、複雑な処理を1つのオブジェクトにまとめ、プロパティやメソッドを通じてその機能を呼び出したりパ

    Excel VBAではじめるクラス入門
  • ポリモーフィズム

    さて、いよいよ「ポリモーフィズム」のお話です。 ポリモーフィズムなんて、聞いたこともないような単語です。 難しそうですね。 ポリモーフィズム(polymorphism)の“poly”は、ポリゴンの“ポリ”です。 直訳すると、「多形、多形性」などの言葉に訳されます。 オブジェクト指向プログラミングの用語では、「多態性」と呼ばれるようです。 多態性というのも難しい単語です。 でもまぁ、はじめから専門用語がわかる人はいません。 臆することなく進めてゆきましょう。 目次 目的は? Object 型とポリモーフィズム Implements ステートメント 中間まとめ 抽象クラス Implements とインターフェイス Implements とポリモーフィズム まとめ 目的は? “多”という文字から察するに、ポリモーフィズムは、複数のクラスを利用するプロジェクトにおいて有効な技術です。比較的規模の大

    kiyo_hiko
    kiyo_hiko 2013/02/06
    VBAでのインターフェースらしいもの。Implementsで実装を宣言するみたい
  • Constructor for VBA class module.

    Constructor for VBA class module について 目的 VBA のクラス モジュールにおいて、引数を渡すことのできる擬似コンストラクタを提供します。 使い方 対象のプロジェクトに以下の二つのモジュールを作成します(他のモジュールはテスト用なので、不要です)。 IConstructor (クラス モジュール) modConstructor (標準モジュール) 対象のクラスモジュールのヘッダーに、以下のステートメントを貼り付けます。 Implements IConstructor VBE の [オブジェクト] ボックスから「IConstructor」を選択し、挿入されるコンストラクタ用プロシージャ内に初期化用の処理を記述します。 呼び出す側は、以下のように記述します。 Set var = Constructor(New MyClass, "Doe, John", #5

    Constructor for VBA class module.
  • ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation

    ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation

    ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
  • [jfriends:00492] Re: Java プログラマーのための Perl 入門 ?

  • Java/欠点 - PukiWiki

    null はオブジェクトでない † null は参照値 (reference value) なので == != による比較はできる。 しかし null はオブジェクトではない。そのため,いちいち if (obj == null) と条件判定をしなければならない。 これは,あたかも,ポリモルフィックなメソッドにおいて (クラスの違いによるディスパッチをせずに)instanceof による場合分けをするようなもので, コードの美しさを損なう→シンプルでなくなる→保守が困難になるという滝壺に落ちていく誘因となる。 純粋なオブジェクト指向プログラミングの観点からは, Null クラスに唯一のオブジェクト null が用意されている とすればよかっただろう。 いくつかのオブジェクト指向言語を比較すると,この方法が最も美しく感じられる。 Java でも同等なことができないことはない。たとえば stat

    kiyo_hiko
    kiyo_hiko 2013/02/04
    メソッドが総称関数ではなくクラスに属してしまうから多重ディスパッチができない。ダブルディスパッチ、Visitorパターンを使う必要がある。
  • リスコフの置換原則 - Wikipedia

    この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2021年12月) 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2021年12月) ほとんどまたは完全に一つの出典に頼っています。(2021年12月) 独自研究が含まれているおそれがあります。(2021年12月) 出典検索?: "リスコフの置換原則" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL リスコフの置換原則の概念は、バーバラ・リスコフにより初めて導入された。2010年に撮影された写真。 リスコフの置換原則(りすこふのちかんげんそく、英: Liskov substitution principle)は、オブジェ

    リスコフの置換原則 - Wikipedia
    kiyo_hiko
    kiyo_hiko 2012/12/19
    なるほど。例外も当然同じ型か、派生型を投げなければLSPが危うくなる 派生型であれば派生した例外もLSPを満たせば透過的に処理できる。
  • Java開発者必修! ソフトウェア・パターン専科 ソフトウェア・パターンへのいざない | ウルシステムズ株式会社

    はじめに ソフトウェア・パターンという言葉を聞いたことがあるだろうか。ソフトウェア・パターンの中ではデザイン・パターンが有名であり、すでに実際の開発現場で適用されている方も多いと思われる。 デザイン・パターン以外にも多くのソフトウェア・パターンが存在しているのだが、残念ながら、デザイン・パターン以外のパターンについてはあまりよく知らないという方が多いのではないだろうか。 ソフトウェア・パターンに関する知識は、我々ソフトウェア開発者にとって、今後ますます重要になってゆくであろう。 連載では、ソフトウェア・パターンについて学びたい読者や、デザイン・パターンは知っているけれど他のパターンについてはあまり知らないという読者を対象に、さまざまなソフトウェア・パターンについて解説していく予定だ。 ソフトウェア・パターンとは そもそも、ソフトウェア・パターンとは何だろうか。ひと言でいえば、ソフトウェア

    Java開発者必修! ソフトウェア・パターン専科 ソフトウェア・パターンへのいざない | ウルシステムズ株式会社
    kiyo_hiko
    kiyo_hiko 2012/12/19
    Yes OCPちょう大事
  • - Open-Closed Principle とデザインパターン

    1999/09/03 更新 石井 勝 さて,このセクションではデザインパターンを統一的に理解するために,「 Open-Closed Principle (OCP) 」 という設計ルールに基づいてパターンを眺めてみることにします.まず OCP の意味と解説を行い,その後デザインパターンを OCP の観点から見てみます.実は,デザインパターンのうちの多くは OCP を満たすために用意されたものと考えることができるのです.このセクションでは, OCP を理解し,数あるデザインパターンの中からどういう場合にどのパターンを使うのが一番効果的なのかを考えます. GoF のデザインパターンは,全部で 23 個ものパターンがあります.このデザインパターンは,多くの局面で繰り返し現れる設計を抽出したものですから,オブジェクト指向のエッセンスを集めたものだと言えるでしょう.オブジェクト指向には,カプセル化,継

    kiyo_hiko
    kiyo_hiko 2012/12/11
    なるほ OCPを維持しつつ何らかの柔軟性を得るために、いくつかのGoFパターンがあるという見方
  • syboos.jp

    kiyo_hiko
    kiyo_hiko 2012/11/16
    パターンや原則まとめ