オブジェクト指向とは
はい出ました「オブジェクト指向」かなりプログラマの中でも説明が割れます。
というのは概念であるので説明がしずらいんですよね。
オブジェクトとは
一言で言うと「データ(属性)とそれに対するメソッド(手続き)を一つにまとめた概念です。
今までのプログラムというのは、手続き型が主流でした。これはどういうものかというと「処理の流れ」
や「データの流れ」と言った部分に着目して、設計を行うものです。
これをモジュール化(部品化)していくことで全体を構成するやり方がオブジェクト指向です。
はい訳わからないですよね、ちょっと図でみてみましょうか
図で表すとこんな感じです。データがあってそれに対するメソッド(手続き、処理)を一つにまとめたものです
なんとなくイメージできましたでしょうか、もう少し具体的にボタンを例に見てみましょう。
具体的に上の様な図で見るとイメージは掴めるかと思います。
オブジェクト指向
先ほど説明した通りオブジェクトの基本的な構造は理解できたかと思います。
そしてこのオブジェクトをモジュール化(部品化)していきそのモジュールで全体を構成していくやり方がオブジェクト思考です。
そしてオブジェクト思考のプログラミングの特徴としてモジュールの独立性(あんまり他のものに干渉しない)が高く保守がしやすいのです。
例えばボタンの処理がおかしい場合はボタンの処理のところのプログラムのみ修正すればいいのです。
カプセル化
オブジェクト指向の持つ大きな特徴がカプセル化です。
カプセル化とはデータやメソッドという処理の要素たちを「一つにまとめた」というイメージだからカプセル化です。
カプセル化することで中のオブジェクトの構造は、外から見れなくなります。データがどういうふうに管理をされているのかなんてことも分からなくなります。
「知るべき情報ではない以外は知らなくていい」ということで外から隠すことができます。
これが「情報隠蔽」という、カプセル化のメリットです。
データが完全にオブジェクトの管理下になるため変な値に変更される心配は無くなります。
クラスとインスタンス
オブジェクトはデータとメソッド(手続き)をまとめたものというのは上の方で説明しました。
この「オブジェクトが持つ性質」を定義したものをクラスと言います。
先程の図を少し付け加えるとわかりやすいかもしれません
そしてインスタンス(実体)とは先程のクラス(設計図)を元に実際にメモリ上の領域を確保して実体化したものです。
まとめ
オブジェクト指向について記述してきましたが、できればもう少しわかりやすくしたかったのですがやはりこれだけは難しいですね。。。
実際はもっと奥が深いので興味がある方は調べてみてください。
なんとなくプラモデルの部品を自分で作ってそれをカスタマイズしてプラモデルを完成させるんだなぁと思ってもらえればと思います。
ではでは