이전 시간까지가 객체지향 이전의 프로그래밍 스타일이다. 이런 문제를 해결하기 위해서 언어차원에서의 솔루션을 모색하게 되었는데 그런 맥락에서 등장한 것이 객체지향 프로그래밍이다. (라고 생각하자)

package offline_tutorials;
class Calculator{
public static int left;
public static int right;
public static void sum(int left, int right){
System.out.println(left+right);
}
}
class Employee{
public static int period;
public static int right;
public static void sum(int period, int right){
System.out.println("급여 : "+right*period);
}
}
public class Company {
public static void main(String[] args) {
Calculator.left = 10;
Calculator.right = 20;
Calculator.sum(Calculator.left, Calculator.right);
Employee.period = 2;
Employee.right = 5000;
Employee.sum(Employee.period, Employee.right);
}
}

메소드의 간소화
이전 예제를 보자. 아래의 코드는 클래스 내에 left와 right 값을 할당하는 코드다.
Calculator.left = 10; Calculator.right = 20; Calculator.sum(Calculator.left, Calculator.right);
그런데 sum을 호출할 때 이미 Calculator에 저장된 값인 left, right을 다시 호출하고 있다. 불합리하다.
아래와 같이 코드를 변경해서 메소드의 호출을 간소화해보자.
class Calculator{
public static int left;
public static int right;
public static void sum(){
System.out.println(Calculator.left+Calculator.right);
}
}
class Employee{
public static int period;
public static int right;
public static void sum(){
System.out.println("급여 : "+Employee.right*Employee.period);
}
}
public class Company {
public static void main(String[] args) {
Calculator.left = 10;
Calculator.right = 20;
Calculator.sum();
Employee.period = 2;
Employee.right = 5000;
Employee.sum();
}
}

코드의 변화를 보자.
Calculator.left = 10; Calculator.right = 20; Calculator.sum(Calculator.left, Calculator.right);
위의 코드가 아래와 같이 바뀌었다.
Calculator.left = 10; Calculator.right = 20; Calculator.sum();

