절차형 프로그램은 소프트웨어 요소인 데이터와 기능에 착목하여 분석을 하는 설계를 해왔다.
즉 데이터와 기능을 각각 다루었다.
하지만 객체지향에서는 데이터와 기능을 일체화하여 1개의 객체로써 다룬다.
*속성과 메소드
객체는 현실세계에 존재하는 '물건'이다. 물리적인 물건 뿐만아니라, 개념적인 물건도 포함된다.
객체는 상태를 나타내는 속성(데이터)과 객체를 동작시키는 메소드(절차)를 가진다.
예를들어 '강의'는 강의번호, 강의명, 인원이라는 정보가 있다. 객체지향에서는 이것들을 속성이라 한다.
이 속성은 외부에서 강제로 바꿀려고 하면 객체의 정합성이 무너진다.
여기에서 객체지향에는 속성을 외부에 공개하지 않는다. 이 방법이 메소드이다.
이처럼 속성과 메소드를 일체화 한 것을 캡슐화라 한다.
캡슐화로 인해 정보를 은폐하고 캡슐내의 속성을 특정 메세지(외부에서 객체에 지시내리는 명령)으로만 조작할 수 있다.
그리고 변경에 대해서도 캡슐내의 메소드를 변경하는 것으로 끝나기 때문에 소프트웨어의 부분화로 이어진다.
*클래스와 인스턴스
클래스는 공통의 속성이나 메소드를 모와 그 틀(양식, 모음)을 지정하는 것으로 클래스로부터 생성된 것을 인스턴스라 한다.
인스턴스는 instance 실제 예라는 의미로 클래스에 구체적인 값을 넣은 것이다.
1개의 클래스의 인스턴스는 모두 같은 속성을 같지만 속성의 값은 다르다.