package sujin.object;
public class CalculatorDemo {
public static void main(String[] args) {
System.out.println(10+20);
System.out.println(20+40);
}
}
▶️ 10+20값과 20+40값이 각각 30과 60으로 출력됨
→ '더하기' 부분이 중복되어 나타나기 때문에 중복 값을 제거하는 과정이 필요함
메소드화
→ Refactoring
package sujin.object;
public class CalculatorDemo2 {
public static void sum(int left, int right) {
System.out.println(left + right);
}
public static void main(String[] args) {
sum(10, 20);
sum(20, 40);
}
}
▶️ 결과값은 동일하게 나타남
▶️ 입력값(left, right)을 변수화시키고 메소드들(sum, avg)가 이 값을 사용해 코드의 양을 줄임
package sujin.object;
public class CalculatorDemo3 {
public static void avg(int left, int right) {
System.out.println((left+right)/2);
}
public static void sum(int left, int right) {
System.out.println(left+right);
}
public static void main(String[] args) {
int left, right;
left = 10;
right = 20;
sum(left, right);
avg(left, right);
left = 20;
right = 40;
sum(left, right);
sum(left, right);
}
}
▶️ left, right, sum, avg간의 연관성이 두 번 반복됨
객체화
package sujin.object;
class Calculator{
int left, right;
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
public void avg() {
System.out.println((this.left + this.right)/2);
}
}
public class CalculatorDemo4 {
public static void main(String[] args) {
Calculator c1 = new Calculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
Calculator c2 = new Calculator();
c2.setOprands(20, 40);
c2.sum();
c2.avg();
}
}
▶️ class Calculator : 변수 left와 right, 메소드 sum과 avg는 연관되어 있는 로직으로, 이를 Calculator라는 이름으로 그룹핑해 클래스 생성
→ 일종의 설계도
Calculator c1 = new Calculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
▶️ Calculator라는 객체(인스턴스)를 새로 생성해 c1이라는 변수에 저장
→ Calculator라는 객체를 담을 수 있는 데이터 형식을 가진 변수
→ Calculator라는 객체를 생성함 = Calculator라는 데이터 타입을 생성함
▶️ setOprands : 연산의 대상이 될 값을 의미함(10, 20)
▶️ 변수는 상태(state)라고 표현함
▶️ 메소드는 행동(behave)라고 표현함
▶️ 하나의 클래스를 바탕으로 서로 다른 상태를 가진 인스턴스를 만들면 서로 다른 행동을 하게 된다는 것을 알 수 있음
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
▶️ setOprands에 넣어둔 10과 20이 각각 left, right parameter에 입력됨
▶️ this. : Calculator라는 객체가 담긴 인스턴스를 나타내는 말
= 클래스를 통해서 만들어진 인스턴스 자신을 가리킴
'Language > Java' 카테고리의 다른 글
[ Java ] 입력과 출력 (0) | 2021.09.03 |
---|---|
[ Java ] 메소드 (0) | 2021.09.03 |
[ Java ] 배열 (0) | 2021.09.03 |
[ Java ] 반복문 (0) | 2021.09.03 |
[ Java ] 논리 연산자 (0) | 2021.09.03 |