Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
![Google Sites: Sign-in](https://cdn-ak-scissors.b.st-hatena.com/image/square/2b7bb476c64356c764841459e925214721645ce0/height=288;version=1;width=512/https%3A%2F%2Fsites.google.com%2Fsite%2Fcompositiosystemae%2F_%2Frsrc%2F1441099372235%2Fhome%2Fvbaworld%2Fupper%2Finterface%2Fpolyc.jpg%3Fheight%3D313%26width%3D400)
以下はプロトタイプ的継承だけで一通りの機能を実現できる、という一つの例です。もちろん他にも書き方はありますし、newを使うのがよくないと主張しているわけではないです。 (誤解を生みそうな文体が混じっているようなので追記: 2011/5/14) 春ですし、少し初心者向けの記事を書きます。タイトル通り、JavaScriptのオブジェクト指向について。ちょっと長くなるので目次です。 クラス(に相当するオブジェクト)を作る オブジェクトからオブジェクトを作る(インスタンス化) 単一継承 多重継承 privateは諦めましょう 親のメソッドを呼ぶ コンストラクタ instanceofに対応する ダックタイピングのススメ JavaScript標準のオブジェクト指向といえばnewやらprototypeやらを書く必要がありますが、これらは書くのが面倒臭い上に気をつけないといけない点がたくさんあります。Ja
開放/閉鎖原則(かいほうへいさげんそく、open/closed principle、OCP)とは、オブジェクト指向プログラミングの設計への提言である。 ソフトウェア要素(クラス、モジュール、関数など)は、拡張に対しては開いており、修正に対しては閉じているべきである。 software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.[1] この原則に従っていれば、ソースコードの修正をせずとも、各要素の振る舞いを拡張することが可能になるとしている。 この開放/閉鎖の原則は、1988年にバートランド・メイヤーが提唱したものと、1996年頃にロバート・C・マーチン(英語版)らが提唱したものの二通りがある。どちらも継承やポリモーフィズムによる
> ダック・タイピングのメリットを教えてください。 メリットはリンク先に書かれている 「オブジェクト(変数の値)に何ができるかはオブジェクトそのものが決定する」ではないでしょうか。 リンク先の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
インスタンスの存在と無関係にクラス共通のフィールドを持たせて、 Ex1.str = "hoge"; Ex2.str = "moga"; のような書き方がしたい訳ではなく、 Ex1 ex1 = new Ex1(); ex1.str = "hoge"; のように常にインスタンスを介する使い方で、 同じクラスに属するどのインスタンスにも共通させたいが、 それぞれのクラスで宣言するのは面倒なので、 できればスーパークラスで処理を一元的に記述したいということなら、 直接フィールドにアクセスするやり方ではないが、 以下のようにスーパークラスにインスタンスメソッドのアクセッサを定義して、 Classクラスをキーにしてクラス変数のMapに格納しておく方法もある。 public abstract class AbstractStatic { private static java.util.HashMap<
.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 パターンあるいは Façade パターン(ファサード・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義された、コンピュータソフトウェアのデザインパターンの1つである。Facade(ファサード)とは「建物の正面」を意味する。異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的とする。 Facadeパターンの例として、サブシステムとしてのコンパイラーを考える。システムとしてのコンパイラーは字句解析器や構文解析器などから構成されている。これらの構成要素は、新たなコンパイラーやその他ソフトウェアを作成する上でサブシステムとして利用することが出来る。しかし、一般ユーザーにとってコンパイラーはソースコードからプログラムを生成するためのものであり、ソースコードをコンパイルできる機能があれば十分である。
はじめに Visual Basicが独自のクラスを作成して使えるように、Officeに搭載されているVBAでも独自のクラスをプロジェクトに組み込むことができます。作成したクラスは、各Officeアプリケーションで「インポート」「エクスポート」ができるため、汎用性のあるクラスを1つ作成すれば他のアプリケーションのVBAでも利用できるようになります。 そこで、本稿ではExcel 2003で利用できるクラスを作成しながら、VBAでクラスを作る方法を紹介します。 対象読者 Excel VBAを使ってマクロ(プログラム)を作ったことのある人、Visual Basicが使える人が対象です。 必要な環境 Excel 2000、2002、2003が使用できる環境。 クラスは便利 VBAでクラスを作成するメリットは、複雑な処理を1つのオブジェクトにまとめ、プロパティやメソッドを通じてその機能を呼び出したりパ
さて、いよいよ「ポリモーフィズム」のお話です。 ポリモーフィズムなんて、聞いたこともないような単語です。 難しそうですね。 ポリモーフィズム(polymorphism)の“poly”は、ポリゴンの“ポリ”です。 直訳すると、「多形、多形性」などの言葉に訳されます。 オブジェクト指向プログラミングの用語では、「多態性」と呼ばれるようです。 多態性というのも難しい単語です。 でもまぁ、はじめから専門用語がわかる人はいません。 臆することなく進めてゆきましょう。 目次 目的は? Object 型とポリモーフィズム Implements ステートメント 中間まとめ 抽象クラス Implements とインターフェイス Implements とポリモーフィズム まとめ 目的は? “多”という文字から察するに、ポリモーフィズムは、複数のクラスを利用するプロジェクトにおいて有効な技術です。比較的規模の大
Constructor for VBA class module について 目的 VBA のクラス モジュールにおいて、引数を渡すことのできる擬似コンストラクタを提供します。 使い方 対象のプロジェクトに以下の二つのモジュールを作成します(他のモジュールはテスト用なので、不要です)。 IConstructor (クラス モジュール) modConstructor (標準モジュール) 対象のクラスモジュールのヘッダーに、以下のステートメントを貼り付けます。 Implements IConstructor VBE の [オブジェクト] ボックスから「IConstructor」を選択し、挿入されるコンストラクタ用プロシージャ内に初期化用の処理を記述します。 呼び出す側は、以下のように記述します。 Set var = Constructor(New MyClass, "Doe, John", #5
null はオブジェクトでない † null は参照値 (reference value) なので == != による比較はできる。 しかし null はオブジェクトではない。そのため,いちいち if (obj == null) と条件判定をしなければならない。 これは,あたかも,ポリモルフィックなメソッドにおいて (クラスの違いによるディスパッチをせずに)instanceof による場合分けをするようなもので, コードの美しさを損なう→シンプルでなくなる→保守が困難になるという滝壺に落ちていく誘因となる。 純粋なオブジェクト指向プログラミングの観点からは, Null クラスに唯一のオブジェクト null が用意されている とすればよかっただろう。 いくつかのオブジェクト指向言語を比較すると,この方法が最も美しく感じられる。 Java でも同等なことができないことはない。たとえば stat
この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2021年12月) 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2021年12月) ほとんどまたは完全に一つの出典に頼っています。(2021年12月) 独自研究が含まれているおそれがあります。(2021年12月) 出典検索?: "リスコフの置換原則" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL リスコフの置換原則の概念は、バーバラ・リスコフにより初めて導入された。2010年に撮影された写真。 リスコフの置換原則(りすこふのちかんげんそく、英: Liskov substitution principle)は、オブジェ
はじめに ソフトウェア・パターンという言葉を聞いたことがあるだろうか。ソフトウェア・パターンの中ではデザイン・パターンが有名であり、すでに実際の開発現場で適用されている方も多いと思われる。 デザイン・パターン以外にも多くのソフトウェア・パターンが存在しているのだが、残念ながら、デザイン・パターン以外のパターンについてはあまりよく知らないという方が多いのではないだろうか。 ソフトウェア・パターンに関する知識は、我々ソフトウェア開発者にとって、今後ますます重要になってゆくであろう。 本連載では、ソフトウェア・パターンについて学びたい読者や、デザイン・パターンは知っているけれど他のパターンについてはあまり知らないという読者を対象に、さまざまなソフトウェア・パターンについて解説していく予定だ。 ソフトウェア・パターンとは そもそも、ソフトウェア・パターンとは何だろうか。ひと言でいえば、ソフトウェア
1999/09/03 更新 石井 勝 さて,このセクションではデザインパターンを統一的に理解するために,「 Open-Closed Principle (OCP) 」 という設計ルールに基づいてパターンを眺めてみることにします.まず OCP の意味と解説を行い,その後デザインパターンを OCP の観点から見てみます.実は,デザインパターンのうちの多くは OCP を満たすために用意されたものと考えることができるのです.このセクションでは, OCP を理解し,数あるデザインパターンの中からどういう場合にどのパターンを使うのが一番効果的なのかを考えます. GoF のデザインパターンは,全部で 23 個ものパターンがあります.このデザインパターンは,多くの局面で繰り返し現れる設計を抽出したものですから,オブジェクト指向のエッセンスを集めたものだと言えるでしょう.オブジェクト指向には,カプセル化,継
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く