【おぶじぇくと】

オブジェクト とは?

💡 クラスから作られた「実体」、データと動作を持つプログラムの部品
📌 このページのポイント
オブジェクト: プロパティとメソッド 犬オブジェクト (Dog) プロパティ(属性) 名前: "ポチ" 犬種: "柴犬" 年齢: 3 メソッド(動作) 吠える() → "ワンワン!" 走る() → "走り出した!" 現実世界との対応 プロパティ = 特徴 名前・色・大きさなど メソッド = 行動 吠える・走る・食べるなど オブジェクト = もの データと操作をまとめた単位 オブジェクト = データ(プロパティ)+ 処理(メソッド)をひとまとめにしたもの
オブジェクトの構造イメージ
ひよこ ひよこ

オブジェクトってクラスと何が違うの?

ペンギン先生 ペンギン先生

クラスは「設計図」、オブジェクトはその設計図から作られた「実体」。「犬」クラスという設計図から「ポチ(3歳、柴犬)」「太郎(5歳、ゴールデン)」という具体的な犬のオブジェクトを作る感じ。

ひよこ ひよこ

インスタンスとオブジェクトは同じ?

ペンギン先生 ペンギン先生

ほぼ同じ意味で使われる。「クラスのインスタンスを生成する」と「クラスからオブジェクトを作る」は同じこと。プログラミング言語やコンテキストによって使い分けることもある。

ひよこ ひよこ

JavaScriptのオブジェクトは違うの?

ペンギン先生 ペンギン先生

JavaScriptでは「{name: 'Ken', age: 25}」のようなキーと値のペアの集まりもオブジェクトと呼ぶ。クラスから作るオブジェクトとは少し違う使われ方だけど、根本的にはデータをまとめるという目的は同じ。

ひよこ ひよこ

「すべてがオブジェクト」って聞くけど、本当にそうなの?

ペンギン先生 ペンギン先生

Rubyでは数値もオブジェクトで、「1.to_s」(数値を文字列に変換)みたいにメソッドが呼べる。Pythonも同様。JavaScriptのプリミティブ(string、number)は厳密にはオブジェクトじゃないけど、メソッドを呼ぶときに自動でオブジェクトに変換(ラッピング)される。

ひよこ ひよこ

オブジェクト指向って最近はあまり使わないって聞いたけど?

ペンギン先生 ペンギン先生

そんなことはないよ。ただ「何でもかんでもクラスで表現する」過度なオブジェクト指向は反省されていて、関数型プログラミングのアイデアを取り入れるのが現代のトレンドだね。ReactTypeScriptでは関数ベースのコンポーネントが主流だし、GoやRustはクラスの代わりに構造体とインターフェースを使う。「適材適所で使う」のが現代的な考え方だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
オブジェクトって出てきたら「クラスの設計図から作られた実体、データと動作をまとめたプログラムの部品」と思えばOK!
📖 おまけ:英語の意味
「Object」 = モノ・対象
💬 現実世界の「モノ」をプログラムで表現するためのユニット。1960年代のSimulaで生まれた概念
← 用語集にもどる