007 クラス (クラスの作成) 001 解答例

public class Point {
    // フィールド
    private double x;
    private double y;

    // コンストラクタ
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    // x座標の取得
    public double getX() {
        return x;
    }

    // x座標の設定
    public void setX(double x) {
        this.x = x;
    }

    // y座標の取得
    public double getY() {
        return y;
    }

    // y座標の設定
    public void setY(double y) {
        this.y = y;
    }
}

この例では、Point クラスが x 座標と y 座標を保持し、それらを取得・設定するためのメソッドを提供しています。main メソッド内では、新しい Point オブジェクトを作成し、座標を表示しています。これを基に、他のメソッドや機能を追加してみてください。

クラスの作成

この「2D座標を表すPointクラス」の例を通して、クラスの基本的な作成手順や要素について解説します。

1. フィールドの定義:

private double x;
private double y;
  • Point クラス内で xy という二つのプライベートなフィールドを定義しました。これらのフィールドは double 型で、クラス内からのみアクセス可能です。データのカプセル化が行われています。

2. コンストラクタの作成:

public Point(double x, double y) {
    this.x = x;
    this.y = y;
}
  • Point クラスには、引数を受け取りそれを xy フィールドに設定するコンストラクタがあります。このコンストラクタは、オブジェクトが生成されるときに呼び出され、初期の座標を設定します。

3. メソッドの作成:

public double getX() {
    return x;
}

public void setX(double x) {
    this.x = x;
}

public double getY() {
    return y;
}

public void setY(double y) {
    this.y = y;
}
  • getX() および getY() メソッドは、それぞれ x 座標と y 座標を取得します。
  • setX(double x) および setY(double y) メソッドは、新しい座標を設定します。これらのメソッドは void を返すため、値を返さずに座標を更新します。

この例を通して、クラスの構成要素(フィールド、コンストラクタ、メソッド)がどのように機能するかを理解できるでしょう。実際にコーディングして、自分の手で動かしてみることが重要です。

getterとsetter

「getter」と「setter」は、オブジェクト指向プログラミング(OOP)において、クラスのフィールド(データメンバ)にアクセスするためのメソッドです。これらのメソッドは、データのカプセル化(Encapsulation)の一環として、直接的なフィールドのアクセスを制限し、クラスの内部でデータを安全に取得および変更するために使用されます。

Getter(ゲッター)

「getter」は、クラスのフィールドの値を取得するためのメソッドです。通常、以下のようにメソッド名が get で始まり、その後に取得したいフィールド名が続きます。

public class Example {
    private int number;

    // Getterメソッド
    public int getNumber() {
        return number;
    }
}

この例では、getNumber() メソッドが number フィールドの値を返します。外部のクラスからは、getNumber() メソッドを通じて number の値にアクセスできます。

Setter(セッター)

「setter」は、クラスのフィールドに新しい値を設定するためのメソッドです。通常、以下のようにメソッド名が set で始まり、その後に設定したいフィールド名が続きます。

public class Example {
    private int number;

    // Setterメソッド
    public void setNumber(int newNumber) {
        this.number = newNumber;
    }
}

この例では、setNumber(int newNumber) メソッドが number フィールドに新しい値を設定します。外部のクラスからは、setNumber() メソッドを通じて number の値を変更できます。

GetterとSetterの利点:

  1. データの隠蔽とカプセル化: フィールドがプライベートであるため、外部のクラスは直接アクセスできず、クラス内でデータを隠蔽することができます。
  2. データの検証と制御: Setterを使用して新しい値を設定する際に、値の検証や特定の条件を適用することができます。これにより、不正な値の設定を防ぐことができます。
  3. 柔軟性と保守性の向上: 内部の実装が変更されたとしても、外部のクラスは同じメソッドを使用し続けることができます。これにより、変更が発生しても他のコードへの影響が最小限に抑えられます。
  4. コードの可読性向上: メソッド名が直感的で、意味が明確になります。コードが読みやすくなり、他の開発者が理解しやすくなります。

これらの利点により、getterとsetterは効果的なオブジェクト指向プログラミングの実践として広く使用されています。

「007 クラス」問題集リスト