Language/Java

[ Java ] 클래스와 인스턴스 그리고 객체지향

곽수진 2021. 9. 3. 20:40
반응형
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