2022年7月28日付けでプライバシーポリシーを改定しました

詳細

ピクシブ百科事典

目次[非表示]

概要

オブジェクト指向(object-oriented)とは、ソフトウェア設計の考え方である。元々はプログラミングの手法のひとづだが、のちに拡張されデータベース、モデリング、ユーザーインターフェースなど各方面に適用されるパラダイムとなった。

「カプセル化」、「継承」、「ポリモーフィズム」(多様性)がオブジェクト指向三大要素と言われるが、それらに共通しているのは、データと処理手順を別々に扱っていた従来の標準的な手法に対し、双方をひとまとめにして物事の解析と組み立てを行う点である。

1970年代に開発されたプログラミング言語Smalltalkがオブジェクト指向プログラミングのはしりだが、当時この考え方は十分に理解されず、流行し定着したのは1990年代になってからである。

この考え方が広まったきっかけは、1980年代にビャーネ・ストロヴストルップが開発した言語、C++と、スティーブ・ジョブズ率いるNeXT社が開発したOSNEXTSTEPにある。

C++は大規模なソフトウェアの開発に役立つよう、オブジェクト指向に加え手続き型プログラミングの考え方を取り入れ、1990年代においてオブジェクト指向プログラミングを一気にメジャーにした。現在はよりオブジェクト指向プログラミングに適合した設計になっているJavaC#の方が主流となっているが、C++はこれらへの橋渡しの役を果たしたと言える。

NEXTSTEPはObjective-C(C言語とSmalltalk流のオブジェクト指向を融合させた言語)による開発環境を揃えていたのみならず、ユーザーインターフェース、データ管理など全てにおいてオブジェクト指向の考え方を取り入れ、各方面に影響を与えた。同OSは最初のWWWの設計に利用されたほか、世界初のWebアプリケーションサーバWebObjectsを生み出し、現在のインターネットの在り方を決定づけた。現在のmacOSiOSは同OSの直系の子孫である。

カプセル化

同じグループに属するパラメータや命令などをひとまとめにすること。
例えば車には「色」「大きさ」「速さ」などのパラメータがあり、「走る」「曲がる」「窓を開ける」などの動作がある。「車」というクラスを作ってこれらをひとめとめにすることを指す。

継承

クラスが他のクラスの要素を継承すること。
例えば「犬」「猫」「動物」という3つのクラスがあるとする。犬や猫は動物の一種であるため、動物クラスの要素を犬クラス・猫クラスに継承することで記述を簡略化したりできる。

ポリモーフィズム

同じ概念であってもクラスによって処理は異なるが、利用する側がそれを意識しなくてもいいようにするための概念。

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

オブジェクト指向三大要素を兼ね備えた言語。

上述のSmalltalk、C++、objcective-C、Java、C#のほか、SwiftPythonJavaScriptRubyKotlin...など、現在広く使われる多くの言語がオブジェクト指向の考え方を取り入れている。...が、純粋なオブジェクト指向と言えるのはSmalltalkとRubyぐらいであり、多くは手続き型、関数型などとのハイブリッド言語(マルチパラダイム言語)である。

また、C言語のようにオブジェクト指向ではない言語も、オブジェクト指向の考え方に基づいた設計に利用されることがある(もちろん、オブジェクト思考言語を使った方がやりやすいが)。

手続き型言語との比較

  • 簡潔に書けることが多い。
  • 数値がカプセル化されているため外部からの変更を制限できる。
  • 大型のプログラムを書きやすく、保守が容易である。


関数型言語との比較

  • 動的な数値、型、配列が使えるため、動的な処理ができ易い。
  • 多重継承でスパゲッティプログラムになる可能性がある。

関連記事

親記事

ソフトウェア そふとうぇあ

兄弟記事

pixivに投稿されたイラスト pixivでイラストを見る

pixivに投稿された小説 pixivで小説を見る

このタグがついたpixivの作品閲覧データ 総閲覧数: 234

コメント

問題を報告

0/3000

編集可能な部分に問題がある場合について 記事本文などに問題がある場合、ご自身での調整をお願いいたします。
問題のある行動が繰り返される場合、対象ユーザーのプロフィールページ内の「問題を報告」からご連絡ください。

報告を送信しました