新入社員も入ってきたので、少しずつ書き留めていいこうかと。。
オブジェクト指向とは
現実世界に存在するモノ(オブジェクト)に対して、
- 情報(属性/プロパティ/フィールド)
- 動作(機能/処理/振る舞い/メソッド)
の要素を定義し構造化すること。
そして、オブジェクト自身が、情報と動作に責務を持って管理を行うこと。
※ 元々オブジェクト指向は、現実世界をシミュレーションするために考え出されたもの
なぜオブジェクト指向なのか
認知科学では、人が事象を認知する場合、3つの方法を行っていると考えられる。
- 外延:要素による認知(これは何なのか?)
- 内包:意味による認知(これは何ができるのか?)
- 属性:構造による認知(これは何でできているのか?)
オブジェクト指向では、これらのアプローチをすべて利用し、それぞれ、インスタンス・クラス・属性という形で事象を捉える。
その単位をオブジェクトにすることで認知性が高まり、人間が頭で考える形のままモデリングからプログラミングまで一貫して開発が勧められることが可能になる。
その結果、「関心を分離して複雑さを解消する」ことに繋がる。
オブジェクトとは
オブジェクトは「人間が認知できる対象における、具象的あるいは抽象的な事象やモノ」を指す。
厳密に言うと、「他のオブジェクトtの境界線と明確な責務を持ち、かつ、個別に識別できるモノ」。
たとえば、水や空気などは、明確な境界線が存在せず変化するので、通常オブジェクトにはせず、属性とする。
「単体で存在し、ほかのオブジェクトとの関係がないものは、オブジェクトとして意味を成さない」と言う考え方。
オブジェクトは関係するオブジェクトが存在してはじめてオブジェクトになり得る。
そのオブジェクト同士の関係がロール(役割)に該当し、役割を持つと言うことは、「情報に対する責務」と「動作に対する責務」を備えている。
オブジェクト指向におけるオブジェクトとは、動作・情報・識別性という3つの特性を持っている「モノ」と定義できる。
続きはこちら → オブジェクト指向の考え方(その2:抽象化と階層化)