連載:[完全版]究極のC#プログラミング

Chapter1 C# 3.0らしいプログラミングとは?

川俣 晶
2009/07/31

1.6 クラスベースとプロトタイプベース

 ここで注目すべきキーワードは、OOPを分類する「クラスベース」と「プロトタイプベース」という2つの言葉である。

 大ざっぱにいえば、クラスベースとはクラスをもとにオブジェクトを作成するもので、プロトタイプベースとはプロトタイプをもとにオブジェクトを作成するものである。つまり、クラスベースではクラス定義に従ってオブジェクトが作られるのに対して、プロトタイプベースではプロトタイプとなる別のオブジェクトの複製として新しいオブジェクトが作られる。クラスベースではオブジェクトに属するメソッドなどはクラスによって規定されるが、プロトタイプベースではいつでもいくつでも、オブジェクトにメソッドなどを付け加えることができる。

 このようなプロトタイプベースの特徴は、システムに組み込まれたオブジェクトすら、後から動的に拡張できることを意味する。なぜ、Webブラウザ上のJavaScriptが最前線のプログラミング言語として活躍し続けられるのかといえば、後付けでいくらでもシステムを拡張できる柔軟性があればこそだろう(実現メカニズムはまったく違うが、このようなメソッドの後付けは、C# 3.0でも第14章で解説する拡張メソッドとして追加される)。

 さて、PCのデスクトッププログラミングのOOPは、C++ → Java → C# 1.xと移り変わってきた感があるが、これらはすべてクラスベースである。C# 3.0も本質的な意味ではクラスベースであることに変わりはない。しかし、C# 3.0はクラスに対する依存性を大幅に引き下げている、クラスベースでありながら、プロトタイプベースのような書き方ができてしまうこともある。なぜ、C# 3.0はクラスから離れなければならないのだろうか?


 INDEX
  [完全版]究極のC#プログラミング
  Chapter1 C# 3.0らしいプログラミングとは?
    1.はじめに/本書の位置づけ
    2.1.1 意外性あり? 本書で解説すること/C# 3.0の適用範囲/筆者の来歴
    3.1.2 C# 3.0らしいソースコードとは?
    4.1.3 コードの遅延実行という例
    5.1.4 インターフェースとの比較
    6.1.5 後退するクラスの立場
  7.1.6 クラスベースとプロトタイプベース
    8.1.7 クラスベースの問題点/【C#olumn】クラスの問題とは何か?
    9.1.8 JavaScriptとの相違点
    10.まとめ/【C#olumn】金のハンマーと銀の弾丸―クラス至上主義
 
インデックス・ページヘ  「[完全版]究極のC#プログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間