728x90
반응형
Object Oriented Programming (OOP)
자바는 객체지향 프로그래밍 언어이다.
객체지향에는 클래스, 객체, 인스턴ㅅ, 상속, 인터페이스, 다형성, 추상화 등의 많은 개념들이 존재한다.
class Calculator{
// 이전에 계산한 결과값 유지 위해 전역변수(static) 사용
static int result = 0;
// parameter num으로 받은 값을 이전 결과값에 더한 후 return
static int add(int num) {
result += num;
return result;
}
}
public class TestClass{
public static void main(String[] args) {
System.out.println(Calculator.add(3)); // 3
System.out.println(Calculator.add(4)); // 7
}
}
그런데 만일 TestClass 클래스에서 2대의 계산기가 필요한 상황이 발생하면 어떻게 해야 될까?
각 계산기는 각각의 결과값을 유지해야 하기 때문에 위와 같이 Calculator 클래스 하나만으로는 결과값을 따로 유지하기
어렵다. 이런 상황을 해결하려면 다음과 같이 클래스를 각각 따로 만들어야 한다.
class Calculator1{
static int result = 0;
static int add(int num) {
result += num;
return result;
}
}
class Calculator2{
static int result = 0;
static int add(int num) {
result += num;
return result;
}
}
public class TestClass{
public static void main(String[] args) {
System.out.println(Calculator1.add(3)); // 3
System.out.println(Calculator1.add(4)); // 7
System.out.println(Calculator2.add(3)); // 3
System.out.println(Calculator2.add(7)); // 10
}
}
똑같은 일을 하는 Calculator1 과 Calculator2 클래스를 만들었다.
결과값은 의도한 대로 출력된다.
이처럼 계산기 1의 결과값이 계산기 2에 아무 영향을 끼치지 않음을 확인할 수 있다.
하지만 계산기가 3개, 5개, 10개 점점 더 많이 필요하게 된다면 어떻게 해야 할까?
그때마다 클래스를 추가하기에는 무리가 있다.
이를 해결하기 위해 '객체'를 사용하면 간단하게 해결할 수 있다.
class Calculator{
// 각 인스턴스의 연산이 값을 공유하지 않기 때문에 static 을 사용하지 않는다.
int result = 0;
int add(int num) { // 덧셈 연산
result += num;
return result;
}
int sub(int num) { // 뺄셈 연산
result -= num;
return result;
}
}
public class TestClass{
public static void main(String[] args) {
Calculator cal1 = new Calculator(); // 계산기 1 객체를 생성한다.(instance)
Calculator cal2 = new Calculator(); // 계산기 2 객체를 생성한다.(instance)
System.out.println(cal1.add(3)); // 3
System.out.println(cal1.add(4)); // 7
System.out.println(cal2.add(3)); // 3
System.out.println(cal2.add(7)); // 7
}
}
728x90
반응형
'Language > Java' 카테고리의 다른 글
Java - Call by value (0) | 2023.03.25 |
---|---|
Java - Class & Method (0) | 2023.03.25 |
Java - 제어문(conditional, iteration) (0) | 2023.03.25 |
Java - Set (0) | 2023.03.25 |
Java - Map (0) | 2023.03.25 |