クラス(class)とは、「特定の分類に分けたひとかたまり」などを意味する英単語。転じて以下の意味でも使われる。
クラスとは、オブジェクトが持つデータ構造と振る舞いを記述したものである。
クラス(プログラム)
クラスとは、オブジェクト指向プログラミングにおいて、生成されるオブジェクトの特徴を取り決めたものを指す。
オブジェクトはクラスを元に生成される。これをインスタンス化と呼ぶ。クラスの持つそれぞれのデータ構造、振る舞いには、外部からのアクセス範囲を定義することができる。クラスは要素の継承を行うことが出来る。これを汎化と呼ぶ。
継承されたクラスは継承元のクラスから見て、子クラス(または、サブクラス)と呼ばれる。また、継承元のクラスは親クラス(またはスーパークラス)と呼ばれる。子クラスは、親クラスが持っている要素をすべて受け継いでいる。これが継承である。
会社と社員に例えた場合の概要
90年代以降のPCでは、一つのコンピュータ上で、多数のプログラマによって作られた数百の小プログラムが連動して動くスタイルが一般的である。WindowsやMacOSもひとつの巨大なプログラムではなく、細かい機能別の小プログラムの集合体である。また、ワープロやお絵かきソフトなどの「アプリケーション」プログラムも構造的には機能別の小プログラムの集合体で、エフェクトやツール処理が小プログラム単位にまとめられているほか、ウィンドウ枠の描画やマウス操作認識などの一般的な処理は、OSのもつ小プログラムを呼び出して処理を行っている。
これらの"小プログラム"のひとつひとつを、プログラミングの世界では「プログラム」とは呼ばずに「モジュール」または「クラス」と呼ぶ。
このようなPCのシステム全体をひとつの"会社"に例えるならば、個々の小プログラム(「モジュール」「クラス」)は役割の異なる一人一人の"社員"といえる。(「アプリケーション」は例えるなら"部署"であろうか)
そして必要に応じて他の"社員"から呼ばれ、相手先の要求に沿った仕事を行うことになる。
この際、本人が直接、要請された仕事を行うタイプの"社員"(プログラム)を「モジュール」と呼び、本人の"コピー"が生成され、"コピー"が仕事を行うタイプの"社員"(プログラム)を「クラス」と呼ぶ。
小プログラム"フォークリフト運転士"をプログラミングするとしよう。"フォークリフト運転士"には会社中の他のプログラム("出荷場","冷凍倉庫","納品倉庫""加工場"etc・・・)からひっきりなしに運搬の呼び出しがかかる。
プログラム"フォークリフト運転士"が「モジュール」の場合、"フォークリフト運転士"内の処理パラメータ(「運ぶ荷物」「使うリフト」「運搬先」等)は呼び出されるたびに書き換えられていく。
この場合、呼び出す側からしても、そのつどパラメータを指定してやらねばならず、逆に"フォークリフト運転士"自身に"相手先別のパラメータ設定リスト"を持たせた場合、"フォークリフト運転士"にリスト管理機能の追加が必要になる。実際のプログラミング上では、プログラムが複雑になるということである。
プログラム"フォークリフト運転士"が「クラス」の場合、呼び出し元のプログラム("冷凍倉庫"や"出荷場")は
まず、クラス"フォークリフト運転士"の「コピー生成」の宣言を行う。
例)宣言 "冷凍庫リフトマンA" タイプ "フォークリフト運転士"
宣言 "出荷場リフトマンD" タイプ "フォークリフト運転士"
(本説明では日本語で書いているが、実際のプログラムでもこのような宣言文を記述する)
そしてプログラム "冷凍倉庫" や "出荷場" はクラス "フォークリフト運転士" ではなく、コピーの "冷凍庫リフトマンA" や "出荷場リフトマンD" に対して運搬処理の指示を行う。これらのコピーのことを「オブジェクト」と呼ぶ。
オブジェクト"冷凍庫リフトマンA" "出荷場リフトマンD" はメモリ上にコピーされた別々のプログラムのため、「運ぶ荷物」「使うリフト」「運搬先」等の処理パラメータは個別に持つことができる。モジュールの場合のように"相手先別のパラメータ設定リスト"を持たせる必要も少ないため、プログラムをシンプルにしやすくなる。
また、「オブジェクト」は「クラス」の"コピー"であるという特性を生かし、
などの宣言方法がある。
実際のプログラミングでは、「モジュール」「クラス」それぞれに向いた処理があり、どちらを利用するかは経験的に理解していく面も大きい。
なお、このようにソフトウェアを"小プログラムの集まり"として作るためには。、プログラミング言語に「小プログラム(オブジェクト)同士お互いに呼び出しあう」「処理パラメータを引き渡す」といった機能が必要になる。そのような命令文を備えているプログラミング言語を、オブジェクト指向プログラミング言語と呼ぶ。
関連項目
- 10
- 0pt
https://dic.nicovideo.jp/t/a/%E3%82%AF%E3%83%A9%E3%82%B9



