πμ½μ μ± μ 리/μλ° μ½λ©μ κΈ°μ (8) μΈλ€μΌν 리μ€νΈν [μλ° μ½λ©μ κΈ°μ ] 8μ₯ : λ°μ΄ν° νλ¦ 8μ₯μμλ μλ° ν¨μν νλ‘κ·Έλ¨μ ν΅μ¬ κ°λ μ μ€λͺ νκ² λ€. - ν¨μν λ°©μμ΄ λͺ λ Ήν λ°©μμ μλ±ν λ₯κ°νλ κ²½μ°. - μ΅λͺ ν΄λμ€λ₯Ό λͺ μΎνκ² λ체νλ λ°©λ² - μλ£ κ΅¬μ‘°λ₯Ό λ ν¨μ¨μ μΌλ‘ μννλ λ°©λ² - μ΅μ λλ‘ νλ‘κ·Έλ¨μ λ μ·¨μ½νκ² λ§λλ λ°©λ² 8.1 μ΅λͺ ν΄λμ€ λμ λλ€ μ¬μ©νκΈ° λ¬Έμ μ½λ class Calculator { Map values = new HashMap(); Double square(Double x) { Function squareFunction = new Function() { @Override public Double apply(Double value) { return value * value; } }; return values.computeIfAbsent(x, squareFun.. [μλ° μ½λ©μ κΈ°μ ] 7μ₯ : κ°μ²΄ λμμΈ μλ°μ ν΄λμ€μ κ°μ²΄λ₯Ό μ¬λ°λ₯΄κ² κΈ°λ₯λ§ λμνκ² νλ κ²μ λΆμ‘±νλ€! 보기 μ’μμΌ νκ³ μ¬μ©νκΈ°λ νΈν΄μΌλ§ νλ€!! 7μ₯μμλ λ κ°μ²΄ μ§ν₯μ μ΄κ³ κ°λ ₯ν μ½λλ₯Ό λ§λλλ° μ μ©νκ² μ°μΌ μλ°μ 보νΈμ μΈ λμμΈ μ리λ₯Ό κ°μ‘°νκ² λ€. 7.1 λΆ λ§€κ°λ³μλ‘ λ©μλ λΆν λ¬Έμ μ½λ void log(String message, boolean classified) throws IOException { if (classified) { writeMessage(message, CAPTAIN_LOG); } else { writeMessage(message, CREW_LOG); } } μ μ½λλ booleanμ μνμ λ°λΌ μλ‘ λ€λ₯Έ μμ μ μννλ€. μ΄λ λμμ λ¬Έμ κ° μμ§λ§ μ½κΈ° λΆνΈνκ³ λ©μλλ₯Ό μ¬μ©νλ μ¬λμ΄ Trueμ.. [μλ° μ½λ©μ κΈ°μ ] 6μ₯ : μ¬λ°λ₯΄κ² λλ¬λ΄κΈ° 6.1 Given-When-ThenμΌλ‘ ν μ€νΈ ꡬ쑰ν JUnitμ μλ° ν΄λμ€ λΌμ΄λΈλ¬λ¦¬μλ μνμ§ μμ§λ§ μλ°μμ λ¨μ ν μ€νΈ μμ±νλ μ¬μ€μμ νμ€μ΄λ€. λ©μλμ @Testλ§ μΆκ°νλ©΄ JUnitμ΄ μμμ ν μ€νΈλ‘ μ€ννλ€. λ¬Έμ μ½λ @Test void setPlanetarySpeedIs7667() { CruiseControl cruiseControl = new CruiseControl(); cruiseControl.setPreset(SpeedPreset.PLANETARY_SPEED); Assertions.assertTrue(7667 == cruiseControl.getTargetSpeedKmh()); } μ ν μ€νΈλ μ¬λ°λ₯΄κ² μλνλ€. νμ§λ§ μ°λ¦¬λ μ’ λ μ½λλ₯Ό ꡬ쑰ννμ¬ μ½κΈ° μ½κ² λ°κΏ μλ μ.. [μλ° μ½λ©μ κΈ°μ ] 5μ₯ : λ¬Έμ λ°μμ λλΉνκΈ° 5.1 λΉ λ₯Έ μ€ν¨ λ¬Έμ μ½λ class CruiseControl { static final double SPEED_OF_LIGHT_KMH = 1079252850; static final double SPEED_LIMIT = SPEED_OF_LIGHT_KMH; private double targetSpeedKmh; void setTargetSpeedKmh(double speedKmh) { if (speedKmh < 0) { throw new IllegalArgumentException(); } else if (speedKmh κ°μ₯ ꡬ체μ μΈ μμΈλ₯Ό μ‘μ!! λ§μ½ μ¬λ¬ κ°μ μμΈλ₯Ό λκ°μ λ°©λ²μΌλ‘ μ²λ¦¬νλ€λ©΄ λ€μ€ μΊμΉ λ°©μμ μ¬μ©νμ. ex) catch(NumberFormatException | IOExcep.. [μλ° μ½λ©μ κΈ°μ ] 4μ₯ : μ¬λ°λ₯΄κ² λͺ λͺ νκΈ° νλ‘κ·Έλλ°μμ μ΄λ¦μ μ¬λ°λ₯΄κ² μ§λ κ²μ μ€μνλ€. νμ§λ§ ν¨ν€μ§, ν΄λμ€, λ©μλ, νλ, 맀κ°λ³μ, μ§μ λ³μ λ± λͺ λͺ ν μμκ° λ무 λ§κΈ° λλ¬Έμ λͺ¨λ μμμ μ’μ μ΄λ¦μ μ§λ κ²μ μ΄λ ΅λ€. 4μ₯μμλ μ½λ μμμ κ±Έλ§λ μ΄λ¦μ ν λΉνλ λ°©λ²μ λν΄μ λ°°μ΄λ€. λͺ λͺ ν λ μλ° κ·μΉμ΄ μ€μνλ©°, λ©μλ λͺ λͺ μ κ°κ²°ν΄μΌλ§ νλ©° μλ―Έμκ±°λ ν κΈμμ§λ¦¬ μ΄λ¦μ νΌν΄μΌλ§ νλ€. 4.1 μλ° λͺ λͺ κ·μΉ μ¬μ©νκΈ° μλ μ½λλ μ΄λ€ λ¬Έμ κ° μμκΉ..? class Rover { static final double WalkingSpeed = 3; final String SerialNumber; double MilesPerHour; Rover(String NewSerialNumber) { SerialNumber = Ne.. [μλ° μ½λ©μ κΈ°μ ] 3μ₯ : μ¬κΈ°λ‘κ² μ£Όμ μ¬μ©νκΈ° 3.1 μ§λμΉκ² λ§μ μ£Όμ μμ κΈ° μλ¬΄λ° μλ―Έμλ μ£Όμμ μμ€λ€. λμ μ½λλ§ λ³΄μμλ λλ¬λμ§ μλ μ 보λ₯Ό "μ£Όμ"μΌλ‘ νμνμ. 3.2 μ£Όμ μ²λ¦¬λ μ½λ μ κ±° μ£Όμ μ²λ¦¬λ μ½λλ μΌλ°μ μΈ μ£Όμκ³Ό λ¬λ¦¬ λͺ νν μ€λͺ ν μλ€. μ΄λ μ½λμ νΌλλ§ κ°μ€μν€λ μ°λ κΈ°λ₯Ό λΌμΉλ κ²κ³Ό κ°λ€. μ΄μ°¨νΌ μ£Όμ μ²λ¦¬λ μ½λλ₯Ό λ€μ μ°Ύμ μΌμ μλ€. μ κ±°νμ. 3.3 μ£Όμμ μμλ‘ λ체 2μ₯μμ 보μλ "맀μ§λλ²" μ¬μ© μ κ° λλ²μ μλ―Έμ λν μ£Όμμ λ¬μλλ κ²μ λμμ§ μμ λ°©λ²μ΄λ€. νμ§λ§ μ°λ¦¬λ "μμ"λ₯Ό μ¬μ©ν¨μΌλ‘μ¨ μ£Όμμμ΄ μ½λλ§μΌλ‘ μ£Όμμ λ체ν μ μλ€. μ£Όμμ "μμ, λ³μ, νλ, λ©μλ μ΄λ¦"μΌλ‘ λ체ν μ μλ€λ©΄ λ°λ‘ μλνμ! 3.4 μ£Όμμ μ νΈλ¦¬ν° λ©μλλ‘ λ체 // round to intege.. [μλ° μ½λ©μ κΈ°μ ] 2μ₯ : μ½λ μ€νμΌ λ 벨μ 2.1 λ§€μ§ λλ²λ₯Ό μμλ‘ λ체 void setPreset(int speedPreset) { if (speedPreset == 2) { setTargetSpeedKmh(16944); } else if (speedPreset == 1) { setTargetSpeedKmh(7667); } else if (speedPreset == 0) { setTargetSpeedKmh(0); } } void setTargetSpeedKmh(double speed) { targetSpeedKmh = speed; } μ μ½λ μ‘°κ°μ²λΌ μλ¬΄λ° μλ―Έμλ μ«μκ° νλ‘κ·Έλ¨μ λμμ μ μ΄νλ€λ©΄ "λ§€μ§ λλ²"λΌκ³ λΆλ₯Έλ€. μ΄λ¬ν 맀μ§λλ²μ μ¬μ©μ μ νν λ»μ΄ μ ν΄μ Έμμ§ μκΈ° λλ¬Έμ μ€λ₯κ° λ°μνκΈ° μ¬μ°λ©° μ¬μ©μκ° λ©μλ λ΄λΆμ λν μ§.. [μλ° μ½λ©μ κΈ°μ ] 1μ₯ : μ°μ μ 리λΆν° 1.1 λΆνμν λΉκ΅ νΌνκΈ° microscope.isInorganic(sample) μ΄ Boolμ λ°ννλ€λ©΄ λΆνμνκ² True, Falseλ‘ λΉκ΅ν΄μ 쑰건문μ 체ν¬νμ§ λ§κ³ κ°λ¨νκ² μμ μ. if(microscope.isInorganic(sample) == true) if(microscope.isInorganic(sample) == false) λ³΄λ¨ if(microscope.isInorganic(sample)) if(!microscope.isInorganic(sample)) λ₯Ό μ¬μ©νμ. 1.2 λΆμ νΌνκΈ° 1. λ©μλκ° λ°ν κ°μΌλ‘ False(λΆμ )μ λ°ννκ² λλ©΄ νλ² λ μκ°νλ©° μ΄ν΄ν΄μΌ νλ€. 2. λ°ν κ°μ΄ κΈμ μΈ κ²μ κ΅³μ΄ `!`μ μ΄μ©ν΄μ λΆμ μΌλ‘ λ°κΎΈλ©΄ νλ² λ μκ°νλ©° μ΄ν΄ν΄μΌ νλ€. .. μ΄μ 1 λ€μ