皆さんはカプセル化という言葉を聞いたことはありますか?
オブジェクト指向プログラミングであるJavaを勉強して、仕事で使っていくうえでなくてはならない機能がこのカプセル化です。
初めて言葉を聞くと、なんか難しそうな内容になってきたと思う方もいるかもしれません。
しかしこのカプセル化一度理解してしまえば、なんてことはありません。
最初だけ頑張って覚えてしまえば、以降苦労することはありませんので、ぜひこの機会に覚えていってください。
カプセル化とは?
ではまずそもそもカプセル化とは何なのかについて解説していきます。
と言っても本当にそこまで難しいものでなく、読んで字のごとく関係するデータ類などを一つにまとめることです。
イメージとしては下記のようなデータや処理があったとします。
「リンゴを食べる、みかんを切る、バナナジュースにする」といったデータと処理は何の問題もありませんが、「リンゴを勉強する、みかんのノートをとる、バナナテストを受ける」とは意味が分かりませんよね。
このようにデータと処理などがぐちゃぐちゃになっているモノを下記のようにカプセル化で関係があるものを一つにまとめます。
食べ物というグループと学問というグループに分けることができました。
こうすることで関係のあるものは一つにまとめ、それ以外は排除することでこのオブジェクトがどういったものなのかというのが一目でわかるようになります。
以上がカプセル化の基本的な考え方です。
カプセル化の利点
では次にカプセル化を使用することの利点について解説していきます。
カプセル化の利点として下記2点です。
- オブジェクトが明確になる
- オブジェクトの独立性が上がる
オブジェクトが明確になる
一点目のオブジェクトが明確になるというものは、先ほども解説しましたがグループに分けることで、このオブジェクトは何を表すものなのか?どういった時に使用することが可能なのか?といったこと明確になります。
オブジェクト指向プログラミングであるJavaにとってなくてはならない機能と言えるのではないでしょうか。
オブジェクトの独立性が上がる
二点目はオブジェクトの独立性が上がるというものです。
どういうことかというと例えば下記のように食べ物オブジェクト内のバナナを削除したとします。
そしてなぜかバナナを削除したことで、学問オブジェクトの国語も削除する必要が出てきました。
通常ですと何の関連性もないバナナと国語ですが、カプセル化を実施しなかったことで食べ物オブジェクトと学問オブジェクトに関連性が生まれたとします。
そうすると食べ物オブジェクト内のデータを消すと学問オブジェクト内のデータも消す必要が出てきてしまいます。
しかしカプセル化を実施することで、互いのオブジェクトの独立性が上がり、バナナを消したとしても国語も同時に消す必要がなくなります。
カプセル化の具体的なやり方
ではカプセル化の具体的な使用方法を解説いたします。
使用例は下記の通りとなります。
public class Fruit {
private String fruit;
public String getFruit(){
return fruit;
}
public String setFruit(String fruit){
this.fruit=fruit;
}
}
fruit変数はprivateで修飾しているため、他のクラスから直接アクセスすることはできません。
一度getFruitメソッドやsetFruitメソッドを経由する必要があります。
こうすることでFruitクラスに必要なデータや処理をまとめることができ、他のクラスから直接変数を変換することができないようになりました。
カプセル化はフィールドをprivate(非公開)とし、メソッド類はpublic(公開)にすることで実現できます。
まとめ
今回の記事ではカプセル化について下記項目で解説してきました。
- カプセル化とは?
- カプセル化の利点
- カプセル化の使用例
オブジェクト指向プログラミングであるJavaを勉強して業務で使用していくうえで、カプセル化は必ず必要となる技術です。
言葉だけ聞くと困惑してしまいますが、一度説明を聞いて覚えてしまえば、ほぼ忘れることはありません。
以上で今回の記事は終了となります。
コメント