/* * ap/application/Main.java * 下村:Javaによるインターネットプログラミングより. * 近代科学社. */ package application; import resource.*; /** * ガソリンスタンドで給油を行います. */ public class Main { public static void main (String[] args) { GasStation gs = new GasStation(1000); Car car1 = new Car(100); Car car2 = new Car(200); Tank tank1 = new Tank(400, 350); gs.fillUp(car1); gs.fillUp(car2); gs.fillUp(tank1); gs.fillUp(gs); } }
/* * ap/application/GasStation.java */ package application; import resource.*; /** * ガソリンスタンドの役割を果します。 */ public class GasStation extends Tank { /** * ガソリンスタンドを生成します。 * @param capacity タンクの容量と残油量 */ public GasStation(int capacity) { super(capacity, capacity); } /** * タンクを満タンにします。 * @param tank タンク */ public void fillUp(Tank tank) { int amount = tank.fillUp(); int remain = getFuel() - amount; setFuel(remain); System.out.println(tank + ": 給油量 = " + amount); System.out.println(this + ": 残油量 = " + remain); } }
/* * ap/application/Car.java */ package application; import resource.*; /** * 自動車の役割を果します。 */ public class Car extends Tank { /** * 指定された容量のタンクをもつ、自動車を生成します。 * @param capacity タンクの容量 */ public Car(int capacity) { super(capacity, 0); } }
/* * ap/ressource/Tank.java */ package resource; /** * タンクの役割を果します。 */ public class Tank { private int capacity = 0; private int fuel = 0; /** * タンクを生成します。 * @param capacity タンクの容量 * @param fuel 残油量 */ public Tank(int capacity, int fuel) { this.capacity = capacity; this.fuel = fuel; } /** * 残油量を取得します。 * @return 残油量 */ public int getFuel() { return fuel; } /** * 残油量を設定します。 * @param amount 残油量 */ public void setFuel(int amount) { fuel = amount; } /** * タンクを満タンにします。 * @return 給油量 */ public int fillUp() { int amount = capacity - fuel; fuel = capacity; return amount; } }
% cd ap % javac application/Main.java % java application.Main application.Car@7b7072: 給油量 = 100 application.GasStation@136228: 残油量 = 900 application.Car@113750: 給油量 = 200 application.GasStation@136228: 残油量 = 700 resource.Tank@4672d0: 給油量 = 50 application.GasStation@136228: 残油量 = 650 application.GasStation@136228: 給油量 = 350 application.GasStation@136228: 残油量 = 650