코드 그라데이션

[보충] 객체 지향 프로그래밍에 대한 이해 본문

Java/Mega

[보충] 객체 지향 프로그래밍에 대한 이해

완벽한 장면 2023. 3. 29. 09:58

객체 지향 프로그래밍이란?

계산기 만들기

class Calculator {

    static int result = 0;

    static int add(int num) {
        result += num;
        return result;
    }
}


public class Sample {
    public static void main(String[] args) {
        System.out.println(Calculator.add(3));
        System.out.println(Calculator.add(4));
    }
}

 

실행 흐름

  1. 클래스 Cal 가 실행된다.
  2. Cal 클래스의 main 메서드가 호출된다.
  3. Calculator.add(3) 이 호출된다.
  4. add 메서드에서 result 변수에 3이 더해진다. result 변수는 현재 3이다.
  5. result 변수인 3이 반환되고 System.out.println 을 이용하여 콘솔에 출력된다.
  6. Calculator.add(4) 이 호출된다.
  7. add 메서드에서 result 변수에 4가 더해진다. result 변수는 현재 7이다.
  8. result 변수인 7이 반환되고 System.out.println 을 이용하여 콘솔에 출력된다.
  9. main 메서드의 실행이 종료된다.

 

실행 결과

3 
7

 

그런데, 계산기 값을 계산할 때마다 이 짓거리(?)를 맥락없이 계속 반복할 것인가? 그건 좀...

 

static을 빼면 된다.

Calculator cal1 = new Calculator(); // 계산기1 객체를 생성한다. 
Calculator cal2 = new Calculator(); // 계산기2 객체를 생성한다.

 

------------

 

변화 이전

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 Sample {
    public static void main(String[] args) {
        System.out.println(Calculator1.add(3));
        System.out.println(Calculator1.add(4));

        System.out.println(Calculator2.add(3));
        System.out.println(Calculator2.add(7));
    }
}

실행 결과

3
7
3
10

변화 이후

static 제거

class Calculator {
    int result = 0;

    int add(int num) {
        result += num;
        return result;
    }
}


public class Sample {
    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.add(3));
        System.out.println(cal2.add(7));
    }
}

 

빼기 추가

class Calculator {
    int result = 0;

    int add(int num) {
        result += num;
        return result;
    }

    int sub(int num) {
        result -= num;
        return result;
    }
}
728x90
Comments