オブジェクト指向について

オブジェクト指向とは・・・

オブジェクト指向とは「全ての現象や概念をオブジェクトと捉え、オブジェクトとオブジェクトとの間のメッセージのやり取りで全ての現象は進んで行く」と言う考え方です。
オブジェクト指向には、次の3つの特徴があります。

カプセル化 構造と振る舞いをグループ化して1つの抽象物を定義し、異なる抽象物を互いに別物として分離する処理
実行すると、外部から内部のデータ構造をデータ隠蔽が出来、此により、オブジェクトの独立性を高められ、保守・変更が容易に
継承 既存のクラスを基に新しいクラスを作成する仕組み
サブクラスではスーパークラスが持っている機能を受け継いで、更に独自の機能を追加が可能
ポリフォリズム オブジェクトの独立性を高める為、データであるメンバ変数を隠蔽し、処理であるメソッドを公開
同じメッセージでも受け取ったオブジェクトによって異なった処理が実行されるが、呼び出し側では同じ手続きの利用が可能

オブジェクト指向言語では、先ずクラスを考えます。
オブジェクト指向言語におけるクラスとは、現実に存在する物を抽象化して表現したデータ構造です。
クラスの役割は同様な状態・振る舞いを持つオブジェクトの共通部分を抽出して1つの型を構成する事であり、此の為、クラスはオブジェクトを生成する為のテンプレートだと言われます。
クラスを基にメモリ上に生成されたオブジェクトをインスタンスと言い、インスタンスを生成する事をインスタンス化と言います。
クラス定義にはクラスを構成するメンバ変数・メソッドを記述します。
其の定義したクラスをテンプレートとしてインスタンスを生成し、生成されたインスタンスの間でメッセージのやり取り(メソッドの呼び出し)を行う事により、1つのプログラムを構成していきます。
Javaでクラスの主な構成要素はメンバ変数・メソッド・コンストラクタです。
クラスにメンバ変数とメソッドを定義する事で、オブジェクトのカプセル化が実現出来ます。
また、クラス定義の際にデータ隠蔽を行い、オブジェクト内部に対して外部から直接アクセスする事を防げ、オブジェクトの独立性を高められます。
クラスに定義されるメンバ変数には、static変数・インスタンス変数が有ります。

static変数 クラス内に1つだけ存在し、其のクラスに属する全てのインスタンスが共通に使う変数
インスタンス変数 クラスを基に生成されたインスタンス毎に1つずつ存在する変数

新しいインスタンスの生成は、コンストラクタを呼び出す事で実現され、コンストラクタはインスタンスの初期化手続きを定義したメソッドです。
クラスを定義する際にコンストラクタを定義しなかった場合には、特別なコンストラクタがコンパイラによって用意され、此をデフォルト・コンストラクタと呼びます。
オブジェクト指向プログラミングは、手続き指向の言語によるプログラミングとは異なり、処理を記述すると言うより、操作対象となるふくすうの物同士がメッセージを送り合って全体の処理を進めると言うイメージです。

オブジェクト指向においてのオブジェクト

オブジェクト指向においてのオブジェクトは、其のソフトウェアにとって意味が有り、明確な境界を伴う物理上・概念上の対象物の事を言い、属性(固有の姿・形・性質)・操作(固有の振る舞い)・関係(他のオブジェクトとの関係)・アイデンティティ(識別性)が有ります。

戻る