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
クラス内でx
とy
という二つのプライベートなフィールドを定義しました。これらのフィールドはdouble
型で、クラス内からのみアクセス可能です。データのカプセル化が行われています。
2. コンストラクタの作成:
public Point(double x, double y) {
this.x = x;
this.y = y;
}
Point
クラスには、引数を受け取りそれをx
とy
フィールドに設定するコンストラクタがあります。このコンストラクタは、オブジェクトが生成されるときに呼び出され、初期の座標を設定します。
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の利点:
- データの隠蔽とカプセル化: フィールドがプライベートであるため、外部のクラスは直接アクセスできず、クラス内でデータを隠蔽することができます。
- データの検証と制御: Setterを使用して新しい値を設定する際に、値の検証や特定の条件を適用することができます。これにより、不正な値の設定を防ぐことができます。
- 柔軟性と保守性の向上: 内部の実装が変更されたとしても、外部のクラスは同じメソッドを使用し続けることができます。これにより、変更が発生しても他のコードへの影響が最小限に抑えられます。
- コードの可読性向上: メソッド名が直感的で、意味が明確になります。コードが読みやすくなり、他の開発者が理解しやすくなります。
これらの利点により、getterとsetterは効果的なオブジェクト指向プログラミングの実践として広く使用されています。