절차지향 데이터를 여러 프로시저가 공유하는 방식
처음 코딩을 배우면 절차 지향을 배우게 된다
변수, 필드 선언, 그 변수나 필드를 조작하는 방식 -> 난이도가 쉽다
하지만, 데이터를 공유하는 방식은 시간이 흘러갈수록 구조를 점점 복잡하게 만들 수 있다.
-> 수정을 어렵게 만드는 요인이 된다.
요구사항은 시간이 흘러가면서 변경될 수 있다. 상태 뿐 아니라 차단 횟수가 0보다 클 경우에도 체크를 해달라는 요구사항이 들어오면 왼쪽의 코드가 오른쪽으로 변경이 된다.
요구사항이 바뀌면서 데이터를 사용하는 방식이나 필요한 데이터가 바뀌게 된다.
객체지향은 데이터와 프로시저를 객체단위로 묶는다.
특정 객체가 가지고 있는 데이터는 그 객체의 프로시저만 접근할 수 있게 한다.
그래서 다른 객체에서는 그 객체의 데이터에 바로 접근할 수 없다.
이 객체는 프로시저를 이용하여 외부에 기능을 제공한다.
객체와 객체는 프로시저를 호출하는 방식으로 서로 연결이 된다.
처음에는 이 방식이 어려울 수도 있다.
- 데이터와 프로시저를 알맞게 객체에 묶어야 하기 때문에
- 하지만 시간이 흘러갈수록 코드 수정이 용이해지는 장점이 있다.
public class VolumeController {
public void increase(int inc)
...
}
public int volume(){
...
}
```
VolumnController volCont = new VolumeController();
volCont.increase(4);
volCont.increase(3);
int currentVol = volCont.volume();
이런 class는 구조체에 가깝다. 데이터 클래스라고도 표현하고, 이런 class에 기능이 붙어야 객체라고 부를 수 있다.
- 객체는 기능으로 정의를 한다.