티스토리 뷰

출처:

Java - 클래스와인스턴스그리고객체지향 (2/5) : 객체지향이전의 코딩 2

클래스(Class): 객체를 만들기 위한 설계도 (정의)

인스턴스(Instance): 설계도에 따라 만들어진 구체적인 제품 (호출)

// 1번 코드
class CalculatorDemo {
    public static void main(String[] args) {
        // 아래 로직이 1000줄 짜리의 복잡한 로직이라고 생각해보자.
        System.out.println(10+20); // 중복 1
        System.out.println(20+40); // 중복 2
    }
}

프로그래밍 언어에서 중요한 것

  1. 중복의 제거
    • java에서 중복을 없애는 가장 대표적인 방법: Method
// 2번
class CalculatorDemo2 {
    public static void main(String[] args) {
        sum(10, 20);
        sum(20, 40);
    }
    public static void sum(int left, int right) {
        System.out.println(left + right);
    }
}

1번과 같은 의미를 갖고 있지만, 중복을 제거하였음. 이를 refactoring이라고 함.

// 3번
class calculatorDemo3 {
    public static void main(String[] args) {
        int left, right;
        left = 10;
        right = 30;

        System.out.println(sum(left, right));
        System.out.println(avg(left, right));

        left = 40;
        right = 60;

        System.out.println(sum(left, right));
        System.out.println(avg(left, right));

    }

    public static int sum(int left, int right) {
        return left + right;
    }

    public static int avg(int left, int right) {
        int a = sum(left, right)/2;
        return a;
    }
}

더욱이 다른 기능을 담당하는 method가 있다면, 처음에 만들었던 sum method의 기능을 최대한 활용하면서 코드를 짤수도 있음.

즉 서로 연관되어 있는 기능이나 연산을 그룹핑해서 코드를 작성하는 것이 바로 객체지향 프로그래밍임.

⭐️ 객체화 ⭐️

// 계산이라는 것에 초점을 맞추고 기능을 모아 둔 Class
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(100, 200);
        c1.sum();
        c1.avg();

        Calculator c2 = new Calculator();
        c2.setOprands(150, 300);
        c2.sum();
        c2.avg();
    }
}
  • c1은 Calculator를 담을 수 있는 컨테이너이다