【オブジェクト指向】クラスにおけるメンバ関数の役割

こんな人向け

・C++初心者

・オブジェクト指向初心者

・オブジェクト指向もクラスもメリットが分からない人

こんなことが分かる

・オブジェクト指向のクラスのメリット

・情報の隠蔽(private, public)

・メンバ関数の役割

クラスの単位

クラスによるモジュール分割は名詞的な単位が基準です。

オブジェクト指向では、動詞であるプロセスは名詞であるデータに内包されクラスを形成しています。

*従来では、機能を基準にしてモジュールの切り分けが行われていました。

データ隠蔽とメンバ関数の関係

クラスを設計するときは「情報の公開/隠蔽」を意識します。

つまり、データメンバを外部から変更(アクセス)することを許さないようにします。

データメンバに対する処理は、基本的にメンバ関数を使って行います。

情報の公開/隠蔽

クラス内のデータを外部からアクセスすることに対して制限を設けます。

public:公開することを宣言

private:隠蔽することを宣言

メンバ関数が必要な理由

アクセスをメンバ関数経由で行うことで、データメンバの領域破壊が起こらなくできます。

クラスのデータメンバは外部から勝手に書き換えられない「保護する必要があるデータ」です。

つまりデータメンバに直接アクセスできては困るのです。

*「データが存在している」≠「それを外部から直接アクセスできるかどうか」

クラスにとってのメンバ関数の位置づけ

オブジェクト指向では、クラスの外部からクラスのデータメンバに直接アクセスすることを避ける傾向にあります。

その、保護されたデータメンバへアクセスするためのインターフェースの役割をメンバ関数が担っています。

こうすることで、クラス内のデータメンバを意識することはなくなり、データメンバはクラス内に完全に隠蔽されてしまい、意識することがなくなります。

メンバ関数を実際に使うときの感覚は「データメンバへのアクセス手段」→「クラスに対する命令」となります。

*内部のデータメンバを意識させるような作りの場合、設計を見直したほうがいいです。

クラスを作ることの意味

慎重にクラスを作成(オブジェクト指向)することで、領域破壊は完全に起こらなくなります。

C言語:領域破壊との闘いです。

C++言語:オブジェクト指向で領域破壊が限りなく0の状態にすることが可能です。

まとめ

オブジェクト指向のクラスのメリット領域破壊を限りなく0の状態にすることが可能
情報の隠蔽(private, public)クラス内のデータを外部からアクセスすることに対して制限
メンバ関数の役割データメンバの領域破壊せずにアクセス

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA