「オブジェクト指向プログラミング」の版間の差分
imported>Administrator |
imported>Administrator |
||
6行目: | 6行目: | ||
[[オブジェクト指向プログラミング言語]]を用い、その原則に従えば自然とオブジェクト指向プログラミングになるが、大半の[[オブジェクト指向プログラミング言語]]では意図して[[ソースコード]]を記述することで[[手続き型プログラミング言語]]のように書くこともできる。 | [[オブジェクト指向プログラミング言語]]を用い、その原則に従えば自然とオブジェクト指向プログラミングになるが、大半の[[オブジェクト指向プログラミング言語]]では意図して[[ソースコード]]を記述することで[[手続き型プログラミング言語]]のように書くこともできる。 | ||
− | たとえば[[C Sharp|C#]]において全ての[[クラス]]の中身が[[静的メソッド]]だけというような[[ソースコード]] | + | たとえば[[C Sharp|C#]]において全ての[[クラス]]の中身が[[静的メソッド]]だけというような[[ソースコード]]は、[[クラス]]の存在はただの[[名前空間]]となった[[手続き型プログラミング]]であり、誰がどう見ても[[オブジェクト指向]]ではないのでオブジェクト指向プログラミングとは呼ばない。このような記述形式は[[プログラミング言語]]の形態を問わず、[[Hello World]]のような簡単なサンプルプログラムではよく見かける事例であるが、希に宗教上の理由により意図して全てを[[手続き型プログラミング言語]]のように書いている人もいる。 |
<source lang="csharp"> | <source lang="csharp"> | ||
class AppMain { | class AppMain { |
2012年7月3日 (火) 14:02時点における版
オブジェクト指向プログラミング(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などが有名である。
なお、これら例のソースコードはオブジェクト指向プログラミング言語で育ったプログラマーからしたら狂気のように感じることであろう。
関連項目
参考文献