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

imported>ProgrammingCH
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
'''オブジェクト指向プログラミング'''([[英語]]:Object Oriented Programming, 略称:OOP)とは、[[オブジェクト指向]]という[[デザインパターン]]の一種を用いて[[プログラミング]]を行うことである。
'''オブジェクト指向プログラミング'''([[英語]]:Object Oriented Programming, 略称:OOP)とは、[[オブジェクト指向]]という[[デザインパターン]]の一種を用いて[[プログラミング]]を行うことである。
==概要==
オブジェクト指向プログラミングは[[副作用]]が大きいのが特徴であり、ある一定規模を超えると人間の把握能力を超え、右を治すと左が壊れるという状況が往々にして発生する。いわゆる[[デスマーチ]]である。そのような状況化では[[ユニットテスト]]が活躍するが、右を治したら左が壊れたのが分かるだけで[[銀の弾丸]]ではない。


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


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