読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

【プログラミング 64.5時間目】オブジェクト指向の概要について。

<スポンサーリンク>

オブジェクト指向では、「すべてのモノをオブジェクトとして扱う」という考え方に基づいて、システムがどのようなオブジェクトで構成され、それらオブジェクトがどのようなやり取りを行なっているかを分析していく。

1980年後半から、「プロセスとデータを併合してひとつのオブジェクトとして考える」オブジェクト指向が注目を浴び始めた。

その前までは、「プロセスとデータを分離して分析・設計する」という考え方が主流だった。

しかし、データの変更があった場合は、それを扱うプロセスすべてを変更しなければならない。
その不便さへのアンチテーゼとして、オブジェクト指向が生まれた。

目に見える物体の他に事象や概念もすべて含めてオブジェクト(モノ)として捉える。

オブジェクトは自分自身の性質や状態を表す「属性」と自分自身の外部に対しての「操作」を持っている。

オブジェクトはオペレーションを通して、他のオブジェクトに要求を出すことができて、この「要求」のことを「メッセージ」という。
要求を出すことをメッセージパッシングという。

オブジェクトはメッセージのやり取りをすることで協調動作し、目的を達成する。

オブジェクト指向では、オブジェクトごとに属性や操作を持ち、責任が分割されている。

オブジェクトを抽象化した雛形を「クラス」と呼ぶ。事象を抽象化する場合には、現在必要とされている問題領域や機能に対して、適切な大きさでクラスを作成する必要がある。
なんでもかんでも「モノ」をクラスにすればいいわけではない。

クラスからオブジェクトを生成することをインスタンス化という。


大きな概念のクラスから概念を引き継ぐことを継承と呼ぶ。
例えば、「学生」という概念のクラスがあるとする。
「学生」の振る舞いは「大学に通う」「就職活動をする」などである。
そのクラスの概念を引き継いて、「大学生」や「専門学生」というクラスを作ることができる。
この2つのクラスは両方、「大学に通う」「就職活動をする」振る舞いをもつ。
さらに、上記の振る舞いに加えて、「大学生」クラスは「ゼミに入る」などの振る舞いを持ってたりする。
これが「継承」の概念。
「大学生」クラスは「学生」クラスを継承している。Javaでいうとextends


外部に対しては詳細を明らかにせず「私(オブジェクト)は●●しますよ」と明示するものをインターフェースという。

ポリモーフィズムとは、同一のメッセージに対して、受け取った側が状況に応じて振る舞いを変える機構のこと。
利用する側の再利用性を促進する。

オブジェクト指向の世界では、Open-Closed Principleという言葉がある。
「拡張に対しては開放され、変更に対しては閉じられていなければならない」
という意味である。
システムは拡張性を持たせなければならないけれど、変更に関する影響を極力小さくするように設計する必要があるということです。

(参考)

UMLトレーニングブック

UMLトレーニングブック