「オブジェクト指向プログラミング」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
4行目: 4行目:
 
よく誤解されていることだが、オブジェクト指向プログラミングは「[[オブジェクト指向プログラミング言語]]」を用いて[[プログラミング]]を行うことではないという点に注意すること。
 
よく誤解されていることだが、オブジェクト指向プログラミングは「[[オブジェクト指向プログラミング言語]]」を用いて[[プログラミング]]を行うことではないという点に注意すること。
  
 +
=== オブジェクト指向プログラミング言語を用いた非オブジェクト指向プログラミング ==
 
[[オブジェクト指向プログラミング言語]]を用い、その原則に従えば自然とオブジェクト指向プログラミングになるが、大半の[[オブジェクト指向プログラミング言語]]では意図して[[ソースコード]]を記述することで[[手続き型プログラミング言語]]のように書くこともできる。
 
[[オブジェクト指向プログラミング言語]]を用い、その原則に従えば自然とオブジェクト指向プログラミングになるが、大半の[[オブジェクト指向プログラミング言語]]では意図して[[ソースコード]]を記述することで[[手続き型プログラミング言語]]のように書くこともできる。
  
19行目: 20行目:
 
</source>
 
</source>
  
 +
=== 非オブジェクト指向プログラミング言語を用いたオブジェクト指向プログラミング ===
 
また、[[オブジェクト指向プログラミング言語]]を使わずとも、[[オブジェクト指向]]の考え方に沿った[[ソースコード]]の記述形式であればオブジェクト指向プログラミングである。
 
また、[[オブジェクト指向プログラミング言語]]を使わずとも、[[オブジェクト指向]]の考え方に沿った[[ソースコード]]の記述形式であればオブジェクト指向プログラミングである。
  
 
このような[[オブジェクト指向プログラミング言語]]を用いないオブジェクト指向プログラミングの実例としては、主に[[C言語]]によって書かれた[[Linux]]および[[UNIX]]界隈で未だに使われ日夜肥大化を続けている[[X Window System]]、そしてその上で動く[[GNOME]]および関連プロジェクトの根底として使われている[[GObject]]などが有名である。
 
このような[[オブジェクト指向プログラミング言語]]を用いないオブジェクト指向プログラミングの実例としては、主に[[C言語]]によって書かれた[[Linux]]および[[UNIX]]界隈で未だに使われ日夜肥大化を続けている[[X Window System]]、そしてその上で動く[[GNOME]]および関連プロジェクトの根底として使われている[[GObject]]などが有名である。
  
なお、これら例の[[ソースコード]]は[[オブジェクト指向プログラミング言語]]で育った[[プログラマー]]からしたら狂気のように感じることであろう。
+
なお、これら例の[[ソースコード]]は[[オブジェクト指向プログラミング言語]]で育った[[プログラマー]]からしたら狂気のように感じることであろう。それは[[X Window System]]が出た当時の[[プログラマー]]たちですら狂気を感じ、正気を保つために[[Motif]]という[[フレームワーク]]が開発されたほどであることからも伺え、その行為の無慈悲さを書いた「[[Bjarne Stroustrup インタビュー]]」というジョーク文章が世界的に出回るほどである。
  
 
== 関連項目 ==
 
== 関連項目 ==

2012年7月3日 (火) 14:10時点における版

オブジェクト指向プログラミング(Object Oriented Programming, OOP)とは、オブジェクト指向というデザインパターンの一種を用いてプログラミングを行うことである。

オブジェクト指向プログラミングとオブジェクト指向プログラミング言語

よく誤解されていることだが、オブジェクト指向プログラミングは「オブジェクト指向プログラミング言語」を用いてプログラミングを行うことではないという点に注意すること。

= オブジェクト指向プログラミング言語を用いた非オブジェクト指向プログラミング

オブジェクト指向プログラミング言語を用い、その原則に従えば自然とオブジェクト指向プログラミングになるが、大半のオブジェクト指向プログラミング言語では意図してソースコードを記述することで手続き型プログラミング言語のように書くこともできる。

たとえばC#において全てのクラスの中身が静的メソッドだけというようなソースコードは、クラスの存在はただの名前空間となった手続き型プログラミングであり、誰がどう見てもオブジェクト指向ではないのでオブジェクト指向プログラミングとは呼ばない。このような記述形式はプログラミング言語の形態を問わず、Hello Worldのような簡単なサンプルプログラムではよく見かける事例であるが、希に宗教上の理由により意図して全てを手続き型プログラミング言語のように書いている人もいる。

class AppMain {
    public static void Main(string[] args) {
        Hello("hoge");
    }
  
    public static void Hello(string name) {
      Console.WriteLine("hello," + name);
    }
}

非オブジェクト指向プログラミング言語を用いたオブジェクト指向プログラミング

また、オブジェクト指向プログラミング言語を使わずとも、オブジェクト指向の考え方に沿ったソースコードの記述形式であればオブジェクト指向プログラミングである。

このようなオブジェクト指向プログラミング言語を用いないオブジェクト指向プログラミングの実例としては、主にC言語によって書かれたLinuxおよびUNIX界隈で未だに使われ日夜肥大化を続けているX Window System、そしてその上で動くGNOMEおよび関連プロジェクトの根底として使われているGObjectなどが有名である。

なお、これら例のソースコードオブジェクト指向プログラミング言語で育ったプログラマーからしたら狂気のように感じることであろう。それはX Window Systemが出た当時のプログラマーたちですら狂気を感じ、正気を保つためにMotifというフレームワークが開発されたほどであることからも伺え、その行為の無慈悲さを書いた「Bjarne Stroustrup インタビュー」というジョーク文章が世界的に出回るほどである。

関連項目

参考文献


外部リンク