/*
* 練習問題2.13 p.58
* Vehicleクラスのフィールドをprivateにして、フィールドに対するアクセッサーメソッドを追加しなさい。
* どのフィールドが変更を許すメソッドを持ち、どのフィールドがそのようなメソッドを持つべきではないですか。
*/
package ch02.ex02_13;
// id, nextID以外は変更できて良いと思う。
public class Vehicle
{
private double currentSpeed;
private double currentDirection;
private String owner;
private static int nextID = 1;
private final int id;
public String getOwner()
{
return owner;
}
public void setOwner(String newOwner)
{
owner = newOwner;
}
public double getCurrentSpeed()
{
return currentSpeed;
}
public void setCurrentSpeed(double speed)
{
currentSpeed = speed;
}
public double getCurrentDirection()
{
return currentDirection;
}
public void setCurrentDirection(double direction)
{
currentDirection = direction;
}
public Vehicle()
{
id = nextID++;
;
}
public Vehicle(String ownerName)
{
id = nextID++;
owner = ownerName;
}
public String toString()
{
String desc = "owner: " + owner;
return desc;
}
public static int showCurrentID()
{
// まだ識別番号が一度も使われていない場合は0を返す
return nextID - 1;
}
/**
* @param args
*/
public static void main(String[] args)
{
Vehicle testVehicle1 = new Vehicle("Bob");
testVehicle1.setCurrentSpeed(3.5);
testVehicle1.setCurrentDirection(1.2);
System.out.println("Id: " + testVehicle1.id);
System.out.println("Current speed: " + testVehicle1.getCurrentSpeed());
System.out.println("Current direction: "
+ testVehicle1.getCurrentDirection());
System.out.println("Owner: " + testVehicle1.getOwner());
System.out.println("");
System.out.println("MAX used ID: " + Vehicle.showCurrentID());
System.out.println("");
System.out.println(testVehicle1);
}
}