"프로그램을 수 많은
객체(object)
라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다."
"객체란 하나의 역할을 수행하는메소드와 변수(데이터)
의 묶음으로 봐야한다"
나무위키-객체 지향 프로그래밍
객체지향에는 클래스, 객체, 인스턴스, 상속, 인터페이스, 다형성, 추상화 등 많은 개념들이 존재한다. 이제부터 예제와 함께 자바의 객체 지향적 특징을 알아보도록 하자.
먼저 객체를 알아보기 위해 계산기 기능을 구현해보도록 하자.
class Calculator{
static int result = 0; // 이전 계산한 결괏값을 유지하기 위해 result 전역 변수(static)를 사용했다.
static int add(int num){
result += num;
return result;
}
}
public class Sample{
public static void main(String[] args){
System.out.println(Calculator.add(3)); // 3 출력
System.out.println(Calculator.add(4)); // 4 출력
}
}
계산기가 하나일 때는 아무 문제 없지만 계산기가 2개, 3개 혹은 여러개일 경우는 어떻게 해야 할까? 또는 빼기, 나누기 등의 기능을 추가해야 한다면 위 코드는 더욱 복잡해질 것이다.
이 경우 객체를 사용하면 아래와 같이 해결할 수 있다.
class Calculator{
int result = 0;
int add(int num){
result += num;
return result;
}
int multiple(int num){
if (result==0){
result++;
}
result *= num;
return result;
}
}
public class test {
public static void main(String[] args) {
Calculator cal1 = new Calculator(); // 계산기1 객체를 생성한다.
Calculator cal2 = new Calculator(); // 계산기2 객체를 생성한다.
System.out.println(cal1.add(3));
System.out.println(cal1.add(4));
System.out.println(cal2.multiple(3));
System.out.println(cal2.multiple(4));
}
}
위 프로그램을 실행하면 아래 결과가 출력된다.
3
4
3
12
프로그램을 나누고 상호작용, 객체 생성을 통해 주된 사용 목적은 독립성이 아닌가 싶다.
지금부터 객체 지향 프로그램이란 무엇인지 알아보도록 하자.
1) 클래스
2) 메소드(method)
3) Call by value
4) 상속
5) 생성자
6) 인터페이스
7) 다형성
8) 추상클래스