μ€λ ν κ²
- μκ³ λ¦¬μ¦ λ¬Έμ (SQL, μλ°) 1λ¬Έμ νμ΄ & λΈλ‘κ·Έ μ 리
- Java λ¬Έλ² μ’ ν©λ° 3μ£Ό μ°¨ λ¨μ κ°μ λ£κΈ°
- κ°μΈ κ³Όμ Lv1 λμ
- 3μ£Ό μ°¨ κ°μ μμ λμ
μ€λμ λ°°μ΄ λ΄μ©μ΄ μλ...... 3μ£Ό μ°¨ κ°μμ μλ μμ νλ€κ° λ§ν λΆλΆμ μΉ λ€ μ 리ν΄μΌκ² λ€ π₯²π₯²π₯²π₯²
3μ£Ό μ°¨μ λ¨μ κ°μλ₯Ό λ€ λ£κ³ λλμ΄ μμ λ‘ λμ΄μλ€!! νμ§λ§ λλ₯Ό λ°κΈ°λ κ²μ μ΄λ§λ¬΄μν μμ μλ€....
ν λ² μ°μ½ μ½μ΄λ΄€μ λλ 'μν μ΄λ° λ΄μ©μΌλ‘ μ΄λ κ² νλ©΄ λλꡬλ!'λΌκ³ κ°λ³κ² μκ°νλ€.. νμ§λ§ λμκ² μ ν κ°λ³μ§ μμ μμ μλ€.. κ°μλ₯Ό μ΄λ μ λ μ΄ν΄νκ³ λμ΄κ°λ€κ³ μκ°νλ λμ μ°©κ°μ΄μλ€ ππ
κ·Έλλ μ½κ² ν μ μμλ κ²μ STEP 1κ³Ό STEP 2....
κΈμ μ μΌλ‘ μκ°νμλ©΄ μ΄κ±°λΌλ μ½κ² ν΄κ²°ν μ μμλ κ² μ΄λκ° μΆλ€!!
STEP 1
STEP 1μ λνκΈ°, λΉΌκΈ°, λλκΈ° κ³±νκΈ° μ°μ°μ μνν μ μλ Calculator ν΄λμ€λ₯Ό λ§λλ κ²μ΄μλ€.
λ€μκ³Ό κ°μ μ€λͺ
μ΄ μμλλ°
- Calculator ν΄λμ€λ μ°μ°μ μννλ λ°ν νμ μ΄ doubleμΈ calculate λ©μλλ₯Ό κ°μ§κ³ μλ€.
- calculate λ©μλλ String νμ μ operate λ§€κ°λ³μλ₯Ό ν΅ν΄ μ°μ°μ λ§€κ°κ°μ λ°λλ€.
- int νμ μ firstNumber, secondNumber λ§€κ°λ³μλ₯Ό ν΅ν΄ νΌμ°μ°μ κ°μ λ°λλ€.
- calculate λ©μλλ μ λ¬λ°μ νΌμ°μ°μ, μ°μ°μλ₯Ό μ¬μ©νμ¬ μ°μ°μ μννλ€.
- ννΈ) if or switch μ¦, μ μ΄λ¬Έμ ν΅ν΄ μ°μ°μμ νμ μ νμΈνκ³ ν΄λΉνλ νμ μ μ°μ°μ μννκ³ κ²°κ³Όκ°μ λ°ννλ€.
μ€λͺ
μ λ΄€μ λ λ°λ‘ ifλ¬Έμ μ¬μ©ν΄μ ν΄κ²°νλ©΄ λκ² κ΅¬λ μκ°νλ€.
κ·Έλμ Calculator ν΄λμ€λ₯Ό μμ±νκ³ μΈμ
μμ λ°°μ΄ λλ‘ μμ±(νλ), μμ±μ, νμ(λ©μλ)λ‘ ννΈλ₯Ό λλκ³ νμ(λ©μλ) ννΈμ STEP 1μ ν΄κ²°νλ€.
public class Calculator{
// μμ± (λ³μ)
AbstractOperation operation;
// μμ±μ (쑰립μ€λͺ
μ)
Calculator(AbstractOperation operation) {
this.operation = operation;
}
// κΈ°λ₯ (λ©μλ)
double calculate (String operator, int firstNumber, int secondNumber) {
double result = 0;
if (operator.equals("+")) {
result = firstNumber + secondNumber;
} else if (operator.equals("-") {
result = firstNumber - secondNumber;
} else if (operator.equals("*") {
result = firstNumber * secondNumber;
} else if (operator.equals("/") {
result = firstNumber / secondNumber;
}
return result;
}
}
μ΄λ κ² STEP 1μ 무μ¬ν ν΄κ²°νκ³ STEP 2λ‘ λμ΄κ°λ€.
STEP 2
STEP 2λ λλ¨Έμ§ μ°μ°μ(%)λ₯Ό μνν μ μκ² Calculator ν΄λμ€ λ΄λΆ μ½λλ₯Ό λ³κ²½νλ κ²μ΄λ€.
λ€μκ³Ό κ°μ΄ ννΈκ° νλ μμκ³ STEP 2 μμ μ½κ² ν΄κ²°ν μ μμλ€.
- ννΈ) μ μ΄λ¬Έ else ifμ λλ¨Έμ§ μ°μ°μ(%)λ₯Ό μΆκ°νλ€.
STEP 1μ μμ±νλ μ½λμ μ΄μ΄μ λλ¨Έμ§ μ°μ°μ(%)λ₯Ό μΆκ°ν΄ 쀬λ€.
public class Calculator{
// μμ± (λ³μ)
AbstractOperation operation;
// μμ±μ (쑰립μ€λͺ
μ)
Calculator(AbstractOperation operation) {
this.operation = operation;
}
// κΈ°λ₯ (λ©μλ)
double calculate (String operator, int firstNumber, int secondNumber) {
double result = 0;
if (operator.equals("+")) {
result = firstNumber + secondNumber;
} else if (operator.equals("-") {
result = firstNumber - secondNumber;
} else if (operator.equals("*") {
result = firstNumber * secondNumber;
} else if (operator.equals("/") {
result = firstNumber / secondNumber;
} else if (operator.equals("%") {
result = firstNumber % secondNumber;
}
return result;
}
}
STEP 2κΉμ§λ μ½κ² ν΄κ²°νλ€. νμ§λ§ νλ³΅μ΄ λλκ³ μμ²λ κ³ ν΅μ΄ μ°Ύμμλ€......
STEP 3
STEP 3λ μ€λͺ
λ κΈΈκ³ λκ° μ΄ν΄νκΈ°λ μ΄λ €μ λ€...

- AddOperation(λνκΈ°), SubstractOperation(λΉΌκΈ°), MultiplyOperation(κ³±νκΈ°), DivideOperation(λλκΈ°) μ°μ° ν΄λμ€λ₯Ό λ§λ ν ν΄λμ€ κ°μ κ΄κ³λ₯Ό κ³ λ €νμ¬ Calculator ν΄λμ€μ κ΄κ³λ₯Ό λ§Ίλλ€.
- κ΄κ³λ₯Ό λ§Ίμ ν νμνλ€λ©΄ Calculator ν΄λμ€μ λ΄λΆ μ½λλ₯Ό λ³κ²½νλ€.. λλ¨Έμ§ μ°μ°μ(%) κΈ°λ₯μ μ μΈνλ€.
ννΈ
- AddOperation, SubstractOperation, MultiplyOperation, DivideOperation μ°μ° ν΄λμ€λ€μ λ§λ λ€.
- κ°κ°μ μ°μ° νμ μ λ§κ² operate λ©μλλ₯Ό ꡬννλ€.
- Calculator ν΄λμ€μ ν¬ν¨κ΄κ³λ₯Ό λ§Ίκ³ μμ±μλ₯Ό ν΅ν΄ κ°κ°μ μ°μ° ν΄λμ€ νμ μ νλμ κ°μ²΄λ₯Ό μ£Όμ νλ€.
- calculate λ©μλμμ μ§μ μ°μ°μ νμ§ μκ³ μ£Όμ λ°μ μ°μ° ν΄λμ€λ€μ operate λ©μλλ₯Ό μ¬μ©νμ¬ μ°μ°μ μ§ννλ€.
ν΄λμ€ λ€μ΄μ΄κ·Έλ¨μ 보λ μκ° λμ μ§κ° μλ€.. λκ° λμ§ μ ν κ°μ΄ μ μ‘νλ€..........
κ·Έλμ μ€λͺ
μ 보면μ νλνλ λ°λΌκ°κΈ° μμνλ€.
μ°μ° ν΄λμ€λ₯Ό λ§λ€λΌκ³ ν΄μ μ°μ AddOperation, SubstractOperation, MultiplyOperation, DivideOperation ν΄λμ€λ₯Ό λ§λ€μλ€. κ·Έλ¦¬κ³ λ©μλλ₯Ό λ§λ€λΌκ³ ν΄μ κ°μμμ λ°°μ΄ λλ‘ λ©μλλ₯Ό νλμ© μΆκ°νλ€.
public class AddOperation{
// μμ±
// μμ±μ
// λ©μλ
double operate (int firstNumber, int secondNumber) {
return firstNumber + secondNumber;
}
}
μμ AddOperation ν΄λμ€μ κ°μ΄ λλ¨Έμ§ ν΄λμ€λ€λ λ°κΏμ£Όμλ€.
κ·Έλ€μ λ¬Έμ₯μ λ΄€λλ°..
Calculator ν΄λμ€μ ν¬ν¨κ΄κ³λ₯Ό λ§Ίκ³ μμ±μλ₯Ό ν΅ν΄ κ°κ°μ μ°μ° ν΄λμ€ νμ
μ νλμ κ°μ²΄λ₯Ό μ£Όμ
νλ€.
μ...? μ΄κ² λ¬΄μ¨ λ§μ΄μ§...................... κ·Έλλ‘ λμ μ§κ° μλ€ πππππ
λ μ΄λ»κ² ν΄μΌ ν μ§ κ³ λ―Όμ νλ€κ° νλλΌλ λ¨μ΄λ₯Ό λ³΄κ³ μ κ·ΈλΌ μμ± λΆλΆμ λκ°λ₯Ό μ μΌλ©΄ λλ 건κ°...?λΌλ μκ°μ μ§νΌν°μκ² λ¬λ €κ°μ λ΄κ° μκ°νλ μμ± λΆλΆμ μΆκ°ν΄ λκ°λ κ²μΈκ°λΌκ³ λ¬Όμ΄λ΄€λλ κ·Έλ λ€κ³ ν΄μ μ§νΌν°μκ² ννΈλ₯Ό μ»κ³ λ€μ μ½λλ₯Ό μμ±ν΄ λκ°λ€.
public class Calculator{
// μμ± (λ³μ)
AddOperation addOperation;
SubstractOperation substractOperation;
MultiflyOperation multiflyOperation;
DivideOperation divideOperation;
// μμ±μ (쑰립μ€λͺ
μ)
Calculator(AddOperation addOperation, SubstractOperation substractOperation, MultiflyOperation multiflyOperation, DivideOperation divideOperation) {
this.addOperation = addOperation;
this.substractOperation = substractOperation;
this.multiflyOperation = multiflyOperation;
this.divideOperation = divideOperation;
}
// κΈ°λ₯ (λ©μλ)
double calculate (String operator, int firstNumber, int secondNumber) {
double result = 0;
if (operator.equals("+")) {
result = addOperation.operate(firstNumber, secondNumber);
} else if (operator.equals("-") {
result = substractOperation.operate(firstNumber, secondNumber);
} else if (operator.equals("*") {
result = multiflyOperation.operate(firstNumber, secondNumber);
} else if (operator.equals("/") {
result = divideOperation.operate(firstNumber, secondNumber);
}
return result;
}
}
ννΈμ μ€λͺ
, μ§νΌν°μ λμμΌλ‘ STEP 3κΉμ§ 겨μ°κ²¨μ° λ§λ¬΄λ¦¬νλ€........
λΆλͺ
μμ λ₯Ό μμν κ² 4μμ―€μ΄μλ κ±° κ°μλ° STEP 3μ λλ΄κ³ λλκΉ 8μ λ°μ΄μλ€... μ λ
μκ° λΉΌκ³ 3μκ° λμ STEP 3κΉμ§ μ¨ κ²μ΄λ€..!!!!
STEP 4
μ΄μ λ§μ§λ§ STEP 4λ‘ λμ΄κ°λλ°... μμ μ λ§μ μ΄μλ€..
λ체 μ΄λ»κ² νλ κ±΄μ§ μ ν μ΄ν΄κ° λμ§ μμλ€.............
λ΄κ° νΌκ³€ν΄μ Έμ κ·Έλ°κ° μΆμ΄μ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨κ³Ό μ€λͺ
μ λ€μ μ²μ²ν μ½μ΄λ΄€λ€.

- AddOperation(λνκΈ°), SubstractOperation(λΉΌκΈ°), MultiplyOperation(κ³±νκΈ°), DivideOperation(λλκΈ°) μ°μ° ν΄λμ€λ€μ AbstractOperation(μΆμ ν΄λμ€)λ₯Ό μ¬μ©νμ¬ μΆμννκ³ Calculator ν΄λμ€μ λ΄λΆ μ½λλ₯Ό λ³κ²½ν©λλ€.
- μ£Όμ) Calculatorμ calculate λ©μλμ λ§€κ°λ³μκ° λ³κ²½λμμ΅λλ€.
ννΈ
- AbstractOperation μΆμ ν΄λμ€λ₯Ό λ§λ€κ³ operate μΆμ λ©μλλ₯Ό λ§λλλ€.
- AddOperation, SubstractOperation, MultiplyOperation, DivideOperation ν΄λμ€λ€μ AbstractOperation ν΄λμ€λ₯Ό μμλ°κ³ κ°κ°μ μ°μ° νμ μ λ§κ² operateλ₯Ό μ€λ²λΌμ΄λ© ν©λλ€.
- Calculator ν΄λμ€λ 4κ°μ μ°μ° ν΄λμ€λ€μ΄ μμλ°κ³ μλ AbstractOperation ν΄λμ€λ§μ ν¬ν¨ν©λλ€.
- μμ±μ νΉμ Setterλ₯Ό μ¬μ©νμ¬ μ°μ°μ μνν μ°μ° ν΄λμ€μ κ°μ²΄λ₯Ό AbstractOperation ν΄λμ€ νμ μ νλμ μ£Όμ ν©λλ€.(λ€νμ±)
- calculate λ©μλμμλ λ μ΄μ μ°μ°μ νμ μ λ°μ ꡬλΆν νμ μμ΄ μ£Όμ λ°μ μ°μ° ν΄λμ€μ operate λ©μλλ₯Ό ν΅ν΄ λ°λ‘ μ°μ°μ μνν©λλ€.
μ΄κ² λ€ λ λ§μ΄λ.......
νμ§λ§ μ¬κΈ°μ ν¬κΈ°ν μ μμλ€.. λμ μ€κΈ° λλ¬Έμ λ¬Έμ λ₯Ό νλμ© κΎΈμκΎΈμ λ°λΌκ°λ€.
μΆμ ν΄λμ€ AbstractOperationμ μμ±νκ³ AddOperation, SubstractOperation, MultiplyOperation, DivideOperation ν΄λμ€λ€μ΄ μμλ°μ μ μλλ‘ extendsλ₯Ό μ¬μ©νλ€.
public abstract class AbstractOperation {
// μμ±
// μμ±μ
// λ©μλ
abstract double operate(int firstNumber, int secondNumber);
}
μ΄λ κ² μΆμ ν΄λμ€ AbstractOperationμ μμ±νλ€.
λ€μ AddOperation ν΄λμ€μμ μμλ°μμ μ¬μ©ν μ μλλ‘ μμ νλ€.
public class AddOperation extends AbstractOperation{
// μμ±
// μμ±μ
// λ©μλ
@Override
double operate (int firstNumber, int secondNumber) {
return firstNumber + secondNumber;
}
}
AddOperation ν΄λμ€κ° AbstractOperation ν΄λμ€λ₯Ό μμλ°κ³ μ€λ²λΌμ΄λλ₯Ό μ΄μ©ν΄μ operate λ©μλλ₯Ό addOperationμ λ§μΆ°μ μμ νλ€.
λλ¨Έμ§ ν΄λμ€λ€λ κ°μ ν΄λμ€μ λ§κ² μμ ν΄ μ£Όμλ€.
λ€μμΌλ‘ Calculator ν΄λμ€κ° AbstractOperation ν΄λμ€λ§ ν¬ν¨ν μ μλλ‘ μμ± λΆλΆμ μμ νλ€.
μμ ν μμ±μλ₯Ό ν΅ν΄ μ°μ°μ μνν μ°μ° ν΄λμ€μ κ°μ²΄λ₯Ό AbstractOperation ν΄λμ€ νμ
μ νλμ μ£Όμ
ν΄ μ£Όμλ€.
μ¬μ€ μ΄ λΆλΆλ λ νλΌλ κ±΄μ§ μ΄ν΄νμ§ λͺ»ν΄μ μ§νΌν°μκ² ννΈ λ¬λΌκ³ ꡬ걸ν΄μ μ»μ κ²°κ³Όλ¬Όμ΄λ€.....
λ§μ§λ§μΌλ‘ λ μ΄μ μ°μ°μ νμ
μ λ°μ ꡬλΆν νμ μμ΄ μ£Όμ
λ°μ μ°μ° ν΄λμ€μ operate λ©μλλ₯Ό ν΅ν΄ λ°λ‘ μ°μ°μ μννλλ‘ operate λ©μλλ₯Ό μμ νλ€.
public class Calculator{
// μμ± (λ³μ)
AbstractOperation operation;
// μμ±μ (쑰립μ€λͺ
μ)
Calculator(AbstractOperation operation) {
this.operation = operation;
}
// κΈ°λ₯ (λ©μλ)
double calculate (int firstNumber, int secondNumber) {
return operation.operate(firstNumber, secondNumber);
}
}
κ·Έ κ²°κ³Ό Calculator ν΄λμ€λ₯Ό μμ±ν μ μμλ€........
ν¬κΈ°νμ§ μκ³ λκΉμ§ ν λλΆμ μκ°μ μ€λ κ±Έλ Έμ§λ§ μμ λ₯Ό λ§λ¬΄λ¦¬ν μ μμλ€....
κ·Έλ¦¬κ³ μμ λ₯Ό νλ©΄μ λ€μ£½λ°μ£½μ΄λ λ¨Έλ¦Ώμμ κ°λ
λ€μ΄ μμ£Ό μ‘°κΈμ μ λ¦¬κ° λ λλμ΄μλ€ π₯²π₯²π₯²
ν¬κΈ°νμ§ μμμ μ»μ κ²°κ³Όλ¬ΌμΈκ°.. γ
γ
γ
γ
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator(new AddOperation());
double result = calculator.calculate(10, 20);
System.out.println(result);
Calculator calculator2 = new Calculator(new DivideOperation());
double result2 = calculator2.calculate(40, 5);
System.out.println(result2);
}
}
λ§μ§λ§μΌλ‘ Main ν΄λμ€μμ κ²μ¬κΉμ§ μλ£νκ³ 3μ£Ό μ°¨ κ°μ μμ λ₯Ό λ§λ¬΄λ¦¬ν μ μμλ€ π« π« π« π« π« π« π«
μμ νλ©΄μ λλ μ
μμ§ μλ°λ μ ν μΉν΄μ§μ§ μμλ€λ λλμ λ°μλ€. λͺ¨λ κ²μ΄ μ΄λ ΅κ³ λͺ¨λ κ²μ΄ λ―μ€λ€...
νμ§λ§ μλ°λ₯Ό μ λλ‘ κ³΅λΆνκΈ° μμν μ§ 4μΌλ°μ μ§λμ§ μμκ³ λ λλ¦λλ‘ κ³΅λΆκ° μ μ§νλκ³ μλ€κ³ μκ°... ν.. λ€....
λ¬Όλ‘ κ³μν΄μ κ°λ
μ μ μ©νκ³ λ€μ΄λ°κ³ λΆλͺνλ©΄μ λ μ±μ₯ν΄μΌ νλ€.
μλ°λ μΉν΄μ§λ €λ©΄ μ무리 μ΄λ €μλ ν¬κΈ°νμ§ μλ κ²μ΄ κ°μ₯ μ€μν κ² κ°λ€. κΎΈμ€ν κ°μ λ£κ³ μμ νκ³ , κ³Όμ νλ€ λ³΄λ©΄ μΈμ κ°λ μΉν΄μ Έ μμ§ μμκΉ μκ°νλ€.
μ€λμ λ°°μ΄ λ΄μ©μ μ 리ν기보λ€λ μμ νλ©΄μ λ§νλ λΆλΆ? μ΄ν΄νμ§ λͺ»νλ λΆλΆμ λΈλ‘κ·Έμ μ 리νλ©΄μ νλ² λ μ΄ν΄νλ μκ°μ κ°μ§λ κ²μ΄ λ μ’κ² λ€κ³ μκ°ν΄μ λΈλ‘κ·Έμ μ 리νλλ° νμ€ν κΈλ‘ μ 리νλ€ λ³΄λκΉ λ¨Έλ¦¬μμ νλ² λ μ 리λλ λλμ λ°μλ€.
μ΄κ² λ°λ‘ TILμ ν΄μΌ νλ μ΄μ μΈκ°..!!!! μμ§ λ΄κ° λ μ΄λ»κ² νκ³ μλμ§ κ°μ΄ μ μ‘νμ§λ§ μ΄μ¬ν μ±μ₯ν΄ λκ° μ μκ² μ§π
λ΄μΌλ μ΄μ¬ν ν΄μ μμ£Ό μμ°¬ μΌμ£ΌμΌμ λ§λ€μ΄μΌκ² λ€.
νμ΄ν
ν΄λ³΄μκ³ ~~~~
'βοΈ Today I Learned(TIL) > π± μ€νλ₯΄ν λ΄μΌλ°°μμΊ ν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘κ·Έλλ° κΈ°μ΄_Day 8 (4) | 2024.11.19 |
---|---|
νλ‘κ·Έλλ° κΈ°μ΄_Day 5 (7) | 2024.11.15 |
νλ‘κ·Έλλ° κΈ°μ΄_Day 3 (31) | 2024.11.14 |
νλ‘κ·Έλλ° κΈ°μ΄_Day 2 (5) | 2024.11.13 |
νλ‘κ·Έλλ° κΈ°μ΄_Day 1 (12) | 2024.11.12 |