オブジェクトとは、操作の対象となっているデータ、または、オブジェクト指向の考え方においてプログラムが扱う対象のことである。
オブジェクトは、いわゆる「物体」や「対象」といった意味であるが、現実の世界に存在する事象や概念を指す場合もあるし、そうした事象や概念をモデルとして再現したものや、さらには現実世界には存在せずにモデル上のみに存在する何物かを指すこともある。
Microsoft Officeのアプリケーションでは、文書に挿入できる図表やワードアートなどがオブジェクトと呼ばれている。しかしIT用語としてオブジェクトと言った場合には、オブジェクト指向、とりわけオブジェクト指向プログラミングについて言及されていることがほとんどである。
オブジェクト指向プログラミングにおけるオブジェクトとは、データ(属性)と機能(手続き)をひとかたまりにした実体のことである。オブジェクトは、集合としての実体である「クラス」と、個としての実体である「インスタンス」という形で捉えることができる。
オブジェクト指向プログラミングでは、既存のオブジェクトを再利用したり、新たに作成したオブジェクトを組み合わせて、オブジェクト間でメッセージ(情報)をやり取りすることで処理を実行させる。オブジェクトを利用して形でプログラムを作成していくことで、プログラマは個々のオブジェクトの内部構造や動作原理の詳細を知らなくても、その機能を利用できる。同時に、プログラムの再利用が容易になるため、ソフトウェア開発の生産性も飛躍的に向上するといわれている。
なお、オブジェクトやクラス、インスタンスの概念や定義は、オブジェクト指向言語の種類によってニュアンスが異なっていることがあり、必ずしも定説になっているとは限らないため、注意を要する。
パソコン向けのオペレーティングシステム(OS)の世界では、IBMのOS/2でオブジェクトの概念がいち早く導入され、アイコン、フォルダ、データファイル、デバイス、ウィンドウ、プログラムなど、ユーザの操作対象となるものがすべてオブジェクトとして扱われた。OS/2のGUIは、当時の競合であったWindows 95やMac OSと見かけ上の大きな違いはなかったが、内部的には、オブジェクト指向によってユーザーが容易にカスタマイズできるという特徴を備えていた。
| 属性の機能と値 | DTD ※ | |
| data | URI : オブジェクトとして配置するデータの URI を指定する | ○ |
| classid | URI : Java VM や各種プラグインの実行プログラムの URI を指定する | ○ |
| archive | URI : オブジェクトに関連するファイルの URI を指定する | ○ |
| codebase | URI : archive属性で使用されている相対パスの基準となる URI を指定 |
○ |
| type | MIMEタイプ: data属性で指定されるデータの MIMEタイプを指定 |
○ |
| codetype | MIMEタイプ: classid属性で指定される実行プログラムの MIMEタイプを指定 |
○ |
| declare | 属性値なし: オブジェクトの宣言のみでプログラムを実行しないように設定 | ○ |
| standby | オブジェクトのダウンロード中に表示させる文字を指定 | ○ |
| tabindex | 数字: Tabキーによる移動の順序を指定 | ○ |
| usemap | URI : map要素で定義されるイマージマップの URI を指定 |
○ |
| name | 名前: オブジェクトの名前を指定する | ○ |
| width | ピクセル: オブジェクトの横幅を指定する | ○ |
| height | ピクセル: オブジェクトの高さを指定する | ○ |
| align | 位置: オブジェクトと文字との位置関係を指定する | ▽ |
top オブジェクトと上と文字の上を揃える |
||
middle オブジェクトの中心に文字のベースラインを揃える |
||
bottom オブジェクトの下に文字のベースラインを揃える |
||
left オブジェクトを左に配置し、右側に文字が回りこむ |
||
right オブジェクトを右に配置し、左側に文字が回りこむ |
||
| border | ピクセル: オブジェクトの枠線の太さを指定する | ▽ |
| hspace | ピクセル: オブジェクトの左右の余白を指定する | ○ |
| vspace | ピクセル: ;オブジェクトの上下の余白を指定する | ▽ |
| 汎用属性 | id、class、lang、title、style属性など |
○ |
object要素は、画像、アプレット、動画、他のHTML文書などさまざまなデータや外部アプリケーションをHTML文書に埋め込むという汎用的な性質を持っています。つまり、img、applet 等これまでの別々の要素で扱われていたデータを、一括して同じタグで処理しようとするものです。
そのため、データ形式に応じて様々な属性が定義されていますが、実際のところブラウザ側では、あまり対応がなされていないのが現状で、こうした現実には驚くばかりです。
また、head要素 内での使用も可能ですが、Webブラウザ上に表示しないものに限られます。classid属性と data属性で実行パラメータを引き渡すことの動作保証はされないため、param要素 で指定することが推奨されています。
下記のHTMLコードはFLASHのオブジェクトを示したものです。(参考までに記述) <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/ flash/swflash.cab#version=3,0,0,0" width=598 height=330> <param name=movie value="sample.swf"> <param name=quality value=high> <param name=bgcolor value=#ffffff> </object>
構文<SerializableAttribute> _ <ComVisibleAttribute(True)> _ <ClassInterfaceAttribute(ClassInterfaceType.AutoDual)> _ Public Class Object
[SerializableAttribute] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType.AutoDual)] public class Object
[SerializableAttribute] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType::AutoDual)] public ref class Object
解説通常、各言語では、クラスの Object の継承を宣言する必要はありません。継承が暗黙的であるためです。
.NET Framework では、すべてのクラスが Object から派生するため、システム内のオブジェクトは、Object クラスで定義されているすべてのメソッドを使用できます。派生クラスでは、これらのメソッドのうち、次のメソッドをオーバーライドできます。
オブジェクトの任意の型を処理する必要のあるクラス (コレクションなど) をデザインする場合、Object クラスのインスタンスを受け入れるクラス メンバを作成できます。ただし、型のボックス化およびボックス化解除のプロセスによって、パフォーマンス コストが発生します。新しいクラスで特定の値型を頻繁に処理することがわかっている場合は、次の 2 つの方法のいずれかを使用することで、ボックス化のコストを最小限に抑えることができます。
1 つ目の方法は、Object 型を受け入れる一般的なメソッドと、クラスで頻繁に処理することが予想される各値型を受け入れる、型固有の一連のメソッド オーバーロードを作成することです。呼び出し元のパラメータ型を受け入れる型固有のメソッドが存在する場合、ボックス化は発生せず、その型固有のメソッドが呼び出されます。呼び出し元のパラメータ型に一致するメソッドの引数がない場合には、パラメータはボックス化され、一般的なメソッドが呼び出されます。この方法では、CLS 準拠のメソッドが生成されます。
もう 1 つの方法は、ジェネリックを使用するようにクラスとそのメソッドをデザインすることです。クラスのインスタンスを作成し、ジェネリック型の引数を指定すると、共通言語ランタイムによってクローズ ジェネリック型が作成されます。ジェネリック メソッドは型固有のメソッドであるため、呼び出しパラメータをボックス化せずに呼び出すことができます。この方法では、.NET Framework Version 2.0 の CLS に準拠しないメソッドが生成されます。
使用例Object クラスから派生した Point 型を定義し、Object クラスの仮想メソッドの多くをオーバーライドする例を次に示します。また、この例は、Object クラスの多数の静的メソッドとインスタンス メソッドを呼び出す方法も示しています。
using System; // The Point class is derived from System.Object. class Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } public override bool Equals(object obj) { // If this and obj do not refer to the same type, then they are not equal. if (obj.GetType() != this.GetType()) return false; // Return true if x and y fields match. Point other = (Point) obj; return (this.x == other.x) && (this.y == other.y); } // Return the XOR of the x and y fields. public override int GetHashCode() { return x ^ y; } // Return the point's value as a string. public override String ToString() { return String.Format("({0}, {1})", x, y); } // Return a copy of this point object by making a simple field copy. public Point Copy() { return (Point) this.MemberwiseClone(); } } public sealed class App { static void Main() { // Construct a Point object. Point p1 = new Point(1,2); // Make another Point object that is a copy of the first. Point p2 = p1.Copy(); // Make another variable that references the first Point object. Point p3 = p1; // The line below displays false because p1 and p2 refer to two different objects. Console.WriteLine(Object.ReferenceEquals(p1, p2)); // The line below displays true because p1 and p2 refer to two different objects that have the same value. Console.WriteLine(Object.Equals(p1, p2)); // The line below displays true because p1 and p3 refer to one object. Console.WriteLine(Object.ReferenceEquals(p1, p3)); // The line below displays: p1's value is: (1, 2) Console.WriteLine("p1's value is: {0}", p1.ToString()); } } // This code produces the following output. // // False // True // True // p1's value is: (1, 2)
using namespace System; // The Point class is derived from System.Object. ref class Point { public: int x; public: int y; public: Point(int x, int y) { this->x = x; this->y = y; } public: virtual bool Equals(Object^ obj) override { // If this and obj do not refer to the same type, // then they are not equal. if (obj->GetType() != this->GetType()) { return false; } // Return true if x and y fields match. Point^ other = (Point^) obj; return (this->x == other->x) && (this->y == other->y); } // Return the XOR of the x and y fields. public: virtual int GetHashCode() override { return x ^ y; } // Return the point's value as a string. public: virtual String^ ToString() override { return String::Format("({0}, {1})", x, y); } // Return a copy of this point object by making a simple // field copy. public: Point^ Copy() { return (Point^) this->MemberwiseClone(); } }; int main() { // Construct a Point object. Point^ p1 = gcnew Point(1, 2); // Make another Point object that is a copy of the first. Point^ p2 = p1->Copy(); // Make another variable that references the first // Point object. Point^ p3 = p1; // The line below displays false because p1 and // p2 refer to two different objects. Console::WriteLine( Object::ReferenceEquals(p1, p2)); // The line below displays true because p1 and p2 refer // to two different objects that have the same value. Console::WriteLine(Object::Equals(p1, p2)); // The line below displays true because p1 and // p3 refer to one object. Console::WriteLine(Object::ReferenceEquals(p1, p3)); // The line below displays: p1's value is: (1, 2) Console::WriteLine("p1's value is: {0}", p1->ToString()); } // This code produces the following output. // // False // True // True // p1's value is: (1, 2)
継承階層
スレッド セーフこの型の public static (Visual Basic では Shared) メンバは、マルチスレッド操作に対して安全です。インスタンス メンバがスレッド セーフになるかどうかは保証されていません。
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
構文
解説
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 |
| GetType | 現在のインスタンスの Type を取得します。 |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 |
| ToString | 現在の Object を表す String を返します。 |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 |
参照.NET Framework クラス階層のすべてのクラスをサポートし、派生クラスに下位レベルのサービスを提供します。これは、.NET Framework の全クラスの基本クラスであり、型階層のルートです。
Object データ型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 |
| GetType | 現在のインスタンスの Type を取得します。 |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 |
| ToString | 現在の Object を表す String を返します。 |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 |
参照3次元モデルの作成に必要なすべての形状要素をいう。線、面、それを構成する自由曲線など。カーデザインモデリングではコンピユーター内のモデルデータ量も大きくなるため、通常モデリング作業をしやすくするレイヤー機能を使う。
(object から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/06/13 09:23 UTC 版)
オブジェクト (Object)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/18 17:03 UTC 版)
埋め込みオブジェクト (generic embedded object) であることを示す。大抵の場合はインライン要素として使用する。data属性にURI、type属性にMIMEタイプ(image/gif等)を指定することでFLASHや音楽など様々な種類のオブジェクトを出力する事ができる。
※この「object」の解説は、「HTML要素」の解説の一部です。
「object」を含む「HTML要素」の記事については、「HTML要素」の概要を参照ください。