2019/10/30(水)本記事ではオブジェクト指向のカプセル化についてなるべくわかりやすく解説しています。カプセル化とは?カプセル化の目的とメリットアクセス制御の種類と定石getterとsetterについて本記事を読むことでカプセル化にまつわる上記の内容が理解できることでしょう。ハニ太郎それでは早速オブジェクト指向のカプセル化について解説していくよ♪オブジェクト指向のクラスとインスタンスについてわかりやすく解説オブジェクト指向のクラスとインスタンスについて初心者向けにわかりやすく解説。設計図であるクラスから生み出せれた実体がインスタンス。...目次カプセル化とは?カプセル化の目的カプセル化による制御の種類と定石カプセル化による4つの制御レベルカプセル化による制御の定石getterとsetterの役割と存在価値getterの役割setterの役割getterとsetterの存在価値カプセル化【まとめ】カプセル化とは?”カプセル化”とは、データの読み書きやメソッドの呼び出しを制御する機能です。大切なデータを外から簡単に書き換えられるプログラムだと恐ろしいですよね?そんな恐ろしい事態を防ぐための機能がカプセル化になります。カプセル化とはデータの読み書きやメソッドの呼び出しを制御する機能。カプセル化の目的そんなカプセル化ですが、先ほどのイラストで記した悪意のある不正利用以外にも人間による操作ミスを防止することができます。カプセル化の目的は想定しないクラスの利用を防止できることと言えるでしょう。カプセル化により想定しない利用が発生した場合の原因特定がしやすくなります。カプセル化の目的は想定しないクラスの利用を防止できることと問題が発生した際に原因の特定を容易にすること。カプセル化による制御の種類と定石カプセル化の目的については理解できたとして、では一体どのようにカプセル化によるアクセス制御を行なっていけばいいのか?カプセル化による4つの制御レベルJavaを例に出すと(他の言語でも大抵同じ)データ・メソッドそれぞれに対して以下4種類からアクセス制御レベルを選択する仕組みです。private自身と同じパッケージに属するクラスからのみアクセスを許可protected自身と同じパッケージに属するか自身を継承した子クラスからのみアクセスを許可public全てのクラスからのアクセスを許可これらprivateやpublicなどをアクセス修飾子と呼び、データやメソッドを宣言する際、先頭に記述することでアクセス制御が可能となります。カプセル化による制御の定石ただ、上の図だけ見ても「どのアクセス修飾子をどういった場面で使えばいいの?」と思われるかと思います。心配はご無用♪お決まりのパターンがあるから安心!カプセル化を行う際は基本的に以下のような設定にしておくのがベターでしょう。操作(メソッド)は全てpublicで公開あとは必要に応じてアクセス修飾子を微調整していけば問題ないかと思います。アクセス修飾子にはprivate,publicなどの種類がある。基本的に属性(データ)にprivate、操作(メソッド)にpublicを付与。あとは必要に応じて微調整!getterとsetterの役割と存在価値ただ、前章の定石を取り入れるだけだとデータ部分がprivateで保護されているため外部のクラスからアクセスできなくなってしまいます。自分の作っている他のクラスからもデータを参照できなくなると困りますよね?そこで”getter”と”setter”の出番です。getterの役割getterとは、属性(データ)の中身を呼び出し元に返すだけの単純なメソッドです。上の図に示したようにgetterの存在により外部のクラスからgetterを経由してデータの読み込みを行うことができるようになります。setterの役割setterとは特定の属性(データ)に指定された値を単に代入するだけのメソッドです。上の図に示したようにsetterの存在により外部のクラスからsetterを経由してデータの書き換えを行うことができるようになります。getterとsetterの存在価値getterやsetterという面倒な処理を行っている理由として以下の2点が挙げられます。Onlyを実現したければgetterのみ。Onlyを実現したければsetterのみ記述することでアクセス制御を柔軟に行うことができるのです。「クラスの内部設計が自由に行える」というのは上の図に示したように自分の作っているクラスのデータ変数を変更した際に他のクラスに影響を及ぼさないということを意味します。Onlyを実現できる。クラスの内部設計も自由に行える。カプセル化【まとめ】カプセル化まとめカプセル化とはデータの読み書きやメソッドの呼び出しを制御する機能。カプセル化の目的は想定しないクラスの利用を防止できることと問題が発生した際に原因の特定を容易にすること。アクセス修飾子にはprivate,publicなどの種類がある。基本的に属性(データ)にprivate、操作(メソッド)にpublicを付与。Onlyを実現できる。クラスの内部設計も自由に行える。本記事がカプセル化の理解促進に少しでもお役に立てたのなら幸いです。【初心者向け】オブジェクト指向を学ぶのにおすすめの本5選オブジェクト指向を学ぶのにおすすめの本を初心者向けに紹介。どの本も良書なので一冊を繰り返し読み返すことでオブジェクト指向をマスターすることができるでしょう。LIFEこれからJavaを学習しようと考えている方にとって上記は気になることかと思います。LIFEJava界における”フレームワーク”百花繚乱時代は次第に淘汰され落ち着きつつあります。LIFE本記事ではオブジェクト指向の多態性/ポリモーフィズムについて解説しています。LIFE本記事では”Web制作”について学べる良質なスクールを厳選して5社紹介しております。LIFE本記事はPythonのフレームワーク、Djangoを学ぼうと考えていらっしゃる方向けです。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目です次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。某外資系IT企業に勤める傍ら副業中のエンジニア。当サイトではエンジニア向けにお役立ち情報を発信しています。