単語記事: クラス

編集

クラスclass)とは、「特定の分類に分けたひとかたまり」などを意味する英単。転じて以下の意味でも使われる。

クラスとは、オブジェクトが持つデータ構造と振る舞いを記述したものである。

クラス(プログラム)

クラスとは、オブジェクト指向プログラミングにおいて、生成されるオブジェクトの特徴を取り決めたものをす。

オブジェクトクラスを元に生成される。これをインスタンス化と呼ぶ。クラスの持つそれぞれのデータ構造、振る舞いには、外部からのアクセス範囲を定義することができる。クラスは要素の継承を行うことが出来る。これを汎化と呼ぶ。

継承されたクラスは継承元のクラスから見て、子クラス(または、サブクラス)と呼ばれる。また、継承元のクラスは親クラス(またはスーパークラス)と呼ばれる。子クラスは、親クラスが持っている要素をすべて受け継いでいる。これが継承である。

会社と社員に例えた場合の概要

90年代以降のPCでは、一つのコンピュータ上で、多数のプログラマによって作られた数の小プログラムが連動して動くスタイルが一般的である。WindowsMacOSもひとつの巨大なプログラムではなく、細かい機別の小プログラム集合体である。また、ワープロやお絵かきソフトなどの「アプリケーションプログラムも構造的には機別の小プログラム集合体で、エフェクトツール処理が小プログラム単位にまとめられているほか、ウィンドウの描画やマウス操作認識などの一般的な処理は、OSのもつ小プログラムを呼び出して処理を行っている。

これらの"小プログラム"のひとつひとつを、プログラミング世界では「プログラム」とは呼ばずに「モジュール」または「クラス」と呼ぶ。

このようなPCのシステム全体をひとつの"会社"に例えるならば、個々の小プログラム(「モジュール」「クラス」)は役割の異なる一人一人の"社員"といえる。(「アプリケーション」は例えるなら"部署"であろうか)
そして必要に応じて他の"社員"から呼ばれ、相手先の要に沿った仕事を行うことになる。

この際、本人が直接、要請された仕事を行うタイプの"社員"(プログラム)を「モジュール」と呼び、本人の"コピー"が生成され、"コピー"が仕事を行うタイプの"社員"(プログラム)を「クラス」と呼ぶ。

プログラム"フォークリフト運転士"をプログラミングするとしよう。"フォークリフト運転士"には会社中の他のプログラム("出荷場","冷凍倉庫","納品倉庫""加工場"etc・・・)からひっきりなしに運搬の呼び出しがかかる。

プログラム"フォークリフト運転士"が「モジュール」の場合、"フォークリフト運転士"内の処理パラメータ(「運ぶ荷物」「使うリフト」「運搬先」等)は呼び出されるたびに書き換えられていく。

この場合、呼び出す側からしても、そのつどパラメータを定してやらねばならず、逆に"フォークリフト運転士"自身に"相手先別のパラメータ設定リスト"を持たせた場合、"フォークリフト運転士"にリスト管理機の追加が必要になる。実際のプログラミング上では、プログラムが複雑になるということである。

プログラム"フォークリフト運転士"が「クラス」の場合、呼び出し元のプログラム("冷凍倉庫"や"出荷場")は
まず、クラス"フォークリフト運転士"の「コピー生成」の宣言を行う。

例)宣言 "冷凍庫リフトマンA" タイプ "フォークリフト運転士"
  宣言 "出荷場リフトマンD" タイプ "フォークリフト運転士"

  (本説明では日本語で書いているが、実際のプログラムでもこのような宣言文を記述する)

そしてプログラム "冷凍倉庫" や "出荷場" はクラス "フォークリフト運転士" ではなく、コピーの "冷凍庫リフトマンA" や "出荷場リフトマンD" に対して運搬処理の示を行う。これらのコピーのことを「オブジェクト」と呼ぶ。

オブジェクト"冷凍庫リフトマンA" "出荷場リフトマンD" はメモリ上にコピーされた別々のプログラムのため、「運ぶ荷物」「使うリフト」「運搬先」等の処理パラメータは個別に持つことができる。モジュールの場合のように"相手先別のパラメータ設定リスト"を持たせる必要も少ないため、プログラムシンプルにしやすくなる。

また、「オブジェクト」は「クラス」の"コピー"であるという特性を生かし、

などの宣言方法がある。

実際のプログラミングでは、「モジュール」「クラス」それぞれに向いた処理があり、どちらを利用するかは経験的に理解していく面も大きい。

なお、このようにソフトウェアを"小プログラムの集まり"として作るためには。、プログラミング言語に「小プログラム(オブジェクト)同士お互いに呼び出しあう」「処理パラメータを引き渡す」といった機が必要になる。そのような命令文を備えているプログラミング言語を、オブジェクト指向プログラミング言語と呼ぶ。

関連項目


【スポンサーリンク】

携帯版URL:
http://dic.nicomoba.jp/k/a/%E3%82%AF%E3%83%A9%E3%82%B9
ページ番号: 451439 リビジョン番号: 1136419
読み:クラス
初版作成日: 08/08/11 05:00 ◆ 最終更新日: 11/04/09 12:54
編集内容についての説明/コメント: 冒頭に一般的な意味を追加。
記事編集 / 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

クラスについて語るスレ

1 : ななしのよっしん :2009/02/16(月) 19:10:12 ID: ZCBTEz2SnD
ニコ動オブジェクト指向なんて言葉を見るとは思わなんだw
概要ももはや嫌がらせだなw
2 : Y2 ◆Qxyaj2xnKE :2009/06/13(土) 09:07:18 ID: 3Pi7rRR5At
記事に使えるクラスの詳細きぼんぬ
3 : ななしのよっしん :2010/08/20(金) 15:12:48 ID: yPbJTH2XMy
概要でもわかるように翻訳してくれ
4 : ななしのよっしん :2010/11/02(火) 18:54:59 ID: Q4ZMoD6o6P
>>3
つたない(&独学)で理解してもらえるかはわからないが、
ネトゲキャラなんかはいい例だと思う。

たとえば「戦士」という職業があったとする。
もちろん戦士にはりかかるとかで防御するとか、そういった動作ができなきゃいけない。
他にも、HPMPといったパラメータや装備品といった情報
持ってなきゃいけない。

これらをひっくるめてパッケージにしたのが「クラス

で、こいつを雛形にして作られる実体が「インスタンス
(省略しています。全て読むにはこのリンクをクリック!)
5 : ななしのよっしん :2011/01/22(土) 21:15:21 ID: dBPvtZqmiX
>>4
厳密に言えば、「ソースコードの共有」は手段であって的ではないと思う。
いわゆるダックタイピングが示すように「概念を共有する」(ことによって思考を簡素化する)のが重要で、
なるべくなら実装の詳細はそれとは独立に考えられるのが理想。

せっかくだからキャラクターメイキングで言えば、
「こうげき」というコマンドがあった時に、
を振るのか、格闘技で戦うのかはキャラクタークラスによって決まるわけだが、
通常攻撃という大きな括りでは同じものなので、「インターフェースは同じで良いだろJK」としておき、
中身の計算式はクラス別に特化した物を使う、と
(武道は武器もつと攻撃が下がるとか)

(省略しています。全て読むにはこのリンクをクリック!)
6 : ななしのよっしん :2011/07/30(土) 09:05:25 ID: DlCzzatqs8
クラスの皆には、内緒だよっ
7 : ななしのよっしん :2011/07/30(土) 10:05:38 ID: zp4a/Z6548
クラスチェンジとかもうクラクラっす
8 : ななしのよっしん :2011/08/01(月) 11:26:19 ID: zkxi1Lw5pE
歌手classにも触れてあげてください。
9 : ゲマ♂ :2012/12/07(金) 09:38:09 ID: srzeVHJmaP
学級のクラスと階級のクラスについても説明した方がいいのでは?
  JASRAC許諾番号: 9011622001Y31015