Java (5) 1 Lesson 3: 2008-05-20 2 x 2 +4x +5 f(x) =x 2 +4x +5 x f(10) x Java 1.1 10 10 0 1.0 2.0, 3.0,..., 10.0, 1.0, 2.0,... flow rate (m**3/s) "flowrate.dat" 10 8 6 4 2 0 0 5 10 15 20 25 time (s) 1 1
flow[0] = 1.0,..., flow[9] = 10.0 10 time time 10 0, 1, 2,..., 9, 0, 1, flow[(int)time 10 ] flow[20] = flow[0] = 1.0 int index = (int) time % flow.length; // flow[index] % f(x) x TankCalculator3.java 7-14 24-25 getflow report 2
1.2 TankCalculator3.java 1: public class TankCalculator3 { 2: final double TANK_AREA = 20.0; //20.0 m**2 3: final double INITIAL_TANK_LEVEL = 10.0; //10.0 m 4: double flow[] 5: = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; //m**3/s 6: 7: public double getflow(double t) { 8: int index = (int)t % flow.length; 9: return flow[index]; 10: } 11: 12: public void report(double time, double flow, double tanklevel) { 13: System.out.println(time + ", " + flow + ", " + tanklevel); 14: } 15: 16: public static void main(string args[]) { 17: TankCalculator3 calculator = new TankCalculator3(); 18: final int MAX_TIME = 50; 19: double tanklevel[] = new double[max_time+1]; //m 20: tanklevel[0] = calculator.initial_tank_level; 3
21: System.out.println("Time(s), Flow(m**3/s), Tank Level(m)"); 22: for (int i = 0; i< MAX_TIME; i++) { 23: double time = i; 24: tanklevel[i+1] = tanklevel[i] + calculator.getflow(time)/calculator.tank_area; 25: calculator.report(time, calculator.getflow(time), tanklevel[i]); 26: } 27: double finaltime = MAX_TIME; 28: calculator.report(finaltime, 0.0, tanklevel[max_time]); 29: } 30: } 2 5 7 10 getflow() 12 14 (time) (flow) (tanklevel) report() 16 29 main() 4
17 TankCalculator3 new calculator calculator TankCalculator3 20,24,25,28 calculator. calculator. 5
1.3 Java C++ (object) 1 (class) new 1 C C 2 6
7
1.4 () 2 = new (); 17: TankCalculator3 calculator = new TankCalculator3(); 1. calculator 2. TankCalculator3 3. calculator 3 TankCalculator3.java TANK_AREA, INITIAL_TANK_LEVEL, flow[] 3 2 3 calculator.tank AREA, calculator.report(...) 8
1.5 java TankCalculator3 getflow() report() 1.5.1 class (,... ) { } 7: public double getflow(double t) { 8: int index = (int)t % flow.length; 9: return flow[index]; 10: } public private public private 9
static Lesson dynamic static void 4 java return return 4 main() 10
1.5.2 int double 5 5 11
1.6 java 3 1. /* */ 2. // 3. /** */ 3. 1. javadoc tanklevel = INITIAL_TANK_LEVEL + FLOW_RATE * time / TANK_AREA; tl = ITL + FR * t / TA; // 12
6 java 6 // set settime, get getflow, is isalive, has haschild 13
1.7 Javadoc Java javadoc 7 javadoc 7 Java web html /**, */ @param @return @ javadoc TankCalculator4.java javadoc -d docs TankCalculator4.java -d docs html docs TankCalculator4.html web 14
Javadoc TankCalculator4.java 1: /** 2: * 3: * @author 4: * @version 3.0 5: */ 6: public class TankCalculator4 { 7: /** 8: * m**2 9: */ 10: final double TANK_AREA = 20.0; 11: /** 12: * m 13: */ 14: final double INITIAL_TANK_LEVEL = 10.0; //10.0 m 15: /** 16: * m**3/s 17: */ 18: double flow[] 19: = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; //m**3/s 20: 15
21: /** 22: (m**3/s) 23: @param t 24: @return mm*3/s 25: */ 26: public double getflow(double t) { 27: int index = (int)t % flow.length; 28: return flow[index]; 29: } 30: 31: /** 32: 33: @param time 34: @param flow 35: @param tanklevel 36: */ 37: public void report(double time, double flow, double tanklevel) { 38: System.out.println(time + ", " + flow + ", " + tanklevel); 39: } 40: 41: public static void main(string args[]) { 16
42: TankCalculator4 tankcalculator = new TankCalculator(); 43: final int TIME_HORIZON = 100; 44: double tanklevel[] = new double[time_horizon+1]; //m 45: tanklevel[0] = tankcalculator.initial_tank_level; 46: System.out.println("Time(s), Flow(m**3/s), Tank Level(m)"); 47: for (int i = 0; i< TIME_HORIZON; i++) { 48: double time = i; 49: tanklevel[i+1] = tanklevel[i] + tankcalculator.getflow(time)/tankcalculator.tank_area; 50: tankcalculator.report(time, tankcalculator.getflow(time), tanklevel[i]); 51: } 52: double finaltime = TIME_HORIZON; 53: tankcalculator.report(finaltime, 0.0, tanklevel[time_horizon]); 54: } // End of main() method. 55: } // End of class TankCalculator4 javadoc M: java docs TankCalculator4.html 17
4 javadoc 18
while, for, if { }. javadoc HTML 19