オブジェクト指向プログラミング(OOP)は、プログラムをより効果的に設計し、保守するためのパワフルな方法を提供します。その中でも、カプセル化は基本的な概念の一つで、データとメソッドをオブジェクト内にまとめ、外部からのアクセスを制限することが重要です。
カプセル化の基本
Javaでは、カプセル化を実現するために以下の要素を使用します:
プライベートフィールド
データを隠蔽し、外部からの直接アクセスを制限するために、プライベートなフィールドを使用します。例えば:
private double balance;
パブリックメソッド
フィールドへのアクセスや操作を提供するために、パブリックなメソッドを使用します。例えば:
public void deposit(double amount) {
// データ操作のコード
}
実践例
public class BankAccount {
private double balance; // 口座残高を表すプライベートなフィールド
public BankAccount(double initialBalance) {
balance = initialBalance; // 初期残高を設定
}
/**
* 指定された金額を口座に預けるメソッド
* @param amount 預ける金額
*/
public void deposit(double amount) {
if (amount > 0) {
balance += amount; // 有効な金額を預金として口座残高に追加
}
}
/**
* 指定された金額を口座から引き出すメソッド
* @param amount 引き出す金額
*/
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount; // 有効な金額で、残高以上の引き出しを許可しない
}
}
/**
* 口座の現在の残高を取得するメソッド
* @return 口座の現在の残高
*/
public double getBalance() {
return balance; // 口座残高を取得
}
}
public class Main {
public static void main(String[] args) {
BankAccount account = new BankAccount(1000); // 新しい口座を開設し、初期残高を設定
account.deposit(500); // 500ドルを預金
account.withdraw(200); // 200ドルを引き出し
double balance = account.getBalance(); // 現在の口座残高を取得
System.out.println("口座残高: " + balance);
}
}
このJavaの例では、BankAccount
クラス内の balance
フィールドは private
修飾子で宣言され、外部から直接アクセスできません。代わりに、deposit
、withdraw
、および getBalance
メソッドを使用してデータにアクセスし、操作します。これにより、データの隠蔽とメソッドによるアクセス制御が実現されています。
カプセル化は、Javaのクラスやオブジェクト指向プログラミングにおいて重要な概念であり、データのカプセル化によってデータの安全性と保守性が向上し、プログラムの品質が向上します。