クラスとは
クラスとは、オブジェクト指向プログラミングにおいて、オブジェクト(モノ)を作り出すための「設計図」や「型」にあたるものです。この設計図に基づいて実際にメモリ上に作成された具体的なモノを「インスタンス」または「オブジェクト」と呼びます。クラスには、そのモノが持つべき情報である「属性(データ・変数)」と、そのモノができる操作である「メソッド(処理・関数)」を定義しておきます。設計図であるクラスを一度作っておけば、同じ性質を持つインスタンスをプログラムの中でいくつでも簡単かつ大量に生成することができます。
具体例
「車の設計図」をクラスと呼び、その設計図から作られた実際の「赤い車」「青い車」などをインスタンスと呼びます。プログラミングの例は以下のようになります。
// クラス(設計図)の定義
class Car {
constructor(color) {
this.color = color; // 属性(色)
}
drive() {
console.log(this.color + "の車が走ります。"); // メソッド(走る)
}
}
// クラスからインスタンスを生成
let redCar = new Car("赤");
redCar.drive(); // 「赤の車が走ります。」と表示
もう少し詳しく
クラスは、単なる設計図以上の役割を果たします。クラスを定義するということは、プログラムの中に新しい独自の「データ型」を作り出すことを意味します。例えば、整数を扱うint型や文字を扱うString型と同じように、開発者が「Car」という新しい型を定義し、その型を持つ変数を宣言できるようになります。クラスの中には、オブジェクトごとに異なる値を持つデータ(インスタンス変数)だけでなく、そのクラスから作られたすべてのオブジェクトで共有される共通のデータ(クラス変数や静的変数)を持たせることも可能です。また、インスタンスを生成する際に自動的に呼び出され、初期設定を行う特別なメソッドを「コンストラクタ」と呼びます。オブジェクト指向においては、システム全体をどのようなクラスの集まりとして設計し、それらのクラスがどのように連携していくかを考えること(オブジェクト指向設計)が最も重要な作業となります。
試験でのポイント
基本情報技術者試験などのIT試験では、「クラス」と「インスタンス(オブジェクト)」の関係性が非常によく問われます。試験問題では、「クラスは概念や設計図であり、インスタンスはそれを実体化したものである」という前提知識を持っているかを確かめる内容が頻出します。また、関連技術としてUML(統一モデリング言語)の「クラス図」を読み取る問題が重要です。クラス図では、四角形を3つの区画に分け、一番上に「クラス名」、真ん中に「属性(プロパティ)」、一番下に「操作(メソッド)」を記述します。各属性や操作の前に付いている「+(公開)」や「-(非公開・隠蔽)」の記号の意味(アクセス修飾子)も問われることがあるため、カプセル化の概念と合わせて確実に覚えておく必要があります。
関連する用語
インスタンス、メソッド、オブジェクト指向、コンストラクタ