「オブジェクト指向プログラミング」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
'''オブジェクト指向プログラミング'''([[英語]]:Object Oriented Programming, 略称:OOP)とは、[[オブジェクト指向]]という[[デザインパターン]]の一種を用いて[[プログラミング]]を行うことである。
+
'''オブジェクト指向プログラミング'''(Object Oriented Programming, OOP)とは、[[オブジェクト指向]]という[[デザインパターン]]の一種を用いて[[プログラミング]]を行うことである。
 
 
==概要==
 
オブジェクト指向プログラミングは[[副作用]]が大きいのが特徴であり、ある一定規模を超えると人間の把握能力を超え、右を治すと左が壊れるという状況が往々にして発生する。いわゆる[[デスマーチ]]である。そのような状況化では[[ユニットテスト]]が活躍するが、右を治したら左が壊れたのが分かるだけで[[銀の弾丸]]ではない。
 
  
 
== オブジェクト指向プログラミングとオブジェクト指向プログラミング言語 ==
 
== オブジェクト指向プログラミングとオブジェクト指向プログラミング言語 ==
 
よく誤解されていることだが、オブジェクト指向プログラミングは「[[オブジェクト指向プログラミング言語]]」を用いて[[プログラミング]]を行うことではないという点に注意すること。
 
よく誤解されていることだが、オブジェクト指向プログラミングは「[[オブジェクト指向プログラミング言語]]」を用いて[[プログラミング]]を行うことではないという点に注意すること。
  
=== オブジェクト指向プログラミング言語を用いた非オブジェクト指向プログラミング ===
 
 
[[オブジェクト指向プログラミング言語]]を用い、その原則に従えば自然とオブジェクト指向プログラミングになるが、大半の[[オブジェクト指向プログラミング言語]]では意図して[[ソースコード]]を記述することで[[手続き型プログラミング言語]]のように書くこともできる。
 
[[オブジェクト指向プログラミング言語]]を用い、その原則に従えば自然とオブジェクト指向プログラミングになるが、大半の[[オブジェクト指向プログラミング言語]]では意図して[[ソースコード]]を記述することで[[手続き型プログラミング言語]]のように書くこともできる。
  
たとえば[[C Sharp|C#]]において全ての[[クラス]]の中身が[[静的メソッド]]だけというような[[ソースコード]]は、[[クラス]]の存在はただの[[名前空間]]となった[[手続き型プログラミング]]であり、誰がどう見ても[[オブジェクト指向]]ではないのでオブジェクト指向プログラミングとは呼ばない。このような記述形式は[[プログラミング言語]]の形態を問わず、[[Hello World]]のような簡単なサンプルプログラムではよく見かける事例であるが、希に[[宗教上の理由]]により意図して全てを[[手続き型プログラミング言語]]のように書いている人もいる。
+
たとえば[[C Sharp|C#]]において全ての[[クラス]]の中身が[[静的メソッド]]だけというような[[ソースコード]]は、[[クラス]]の存在はただの[[名前空間]]となった[[手続き型プログラミング]]であり、誰がどう見ても[[オブジェクト指向]]ではないのでオブジェクト指向プログラミングとは呼ばない。このような記述形式は[[プログラミング言語]]の形態を問わず、[[Hello World]]のような簡単なサンプルプログラムではよく見かける事例であるが、希に宗教上の理由により意図して全てを[[手続き型プログラミング言語]]のように書いている人もいる。
 
<source lang="csharp">
 
<source lang="csharp">
 
class AppMain {
 
class AppMain {
23行目: 19行目:
 
</source>
 
</source>
  
=== 非オブジェクト指向プログラミング言語を用いたオブジェクト指向プログラミング ===
 
 
また、[[オブジェクト指向プログラミング言語]]を使わずとも、[[オブジェクト指向]]の考え方に沿った[[ソースコード]]の記述形式であればオブジェクト指向プログラミングである。
 
また、[[オブジェクト指向プログラミング言語]]を使わずとも、[[オブジェクト指向]]の考え方に沿った[[ソースコード]]の記述形式であればオブジェクト指向プログラミングである。
  
 
このような[[オブジェクト指向プログラミング言語]]を用いないオブジェクト指向プログラミングの実例としては、主に[[C言語]]によって書かれた[[Linux]]および[[UNIX]]界隈で未だに使われ日夜肥大化を続けている[[X Window System]]、そしてその上で動く[[GNOME]]および関連プロジェクトの根底として使われている[[GObject]]などが有名である。
 
このような[[オブジェクト指向プログラミング言語]]を用いないオブジェクト指向プログラミングの実例としては、主に[[C言語]]によって書かれた[[Linux]]および[[UNIX]]界隈で未だに使われ日夜肥大化を続けている[[X Window System]]、そしてその上で動く[[GNOME]]および関連プロジェクトの根底として使われている[[GObject]]などが有名である。
  
なお、これら例の[[ソースコード]]は[[オブジェクト指向プログラミング言語]]で育った[[プログラマー]]からしたら狂気のように感じることであろう。それは[[X Window System]]が出た当時の[[プログラマー]]たちですら狂気を感じ、正気を保つために[[Motif]]という[[フレームワーク]]が開発されたほどであることからも伺え、その行為の無慈悲さを書いた「[[Bjarne Stroustrup インタビュー]]」というジョーク文章が世界的に出回るほどである。
+
なお、これら例の[[ソースコード]]は[[オブジェクト指向プログラミング言語]]で育った[[プログラマー]]からしたら狂気のように感じることであろう。
  
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[オブジェクト指向]]
 
* [[オブジェクト指向]]
 
* [[オブジェクト指向プログラミング言語]]
 
* [[オブジェクト指向プログラミング言語]]
* [[ オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。]]
 
  
 
== 参考文献 ==
 
== 参考文献 ==
{{reflist}}
+
<references/>
 +
 
 +
== 外部リンク ==
  
 
{{stub}}
 
{{stub}}

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート:

このページは 1 個の隠しカテゴリに属しています: