절차지향적 프로그래밍 - 전체적인 어플리케이션이 어떻게 동작하는지 잘 알아야 함 그리고 한눈에 이해하기도 어렵고 하나를 건드리면 다른 곳에서 사이드이펙트가 발생할 가능성이 크다.
객체지향 프로그래밍 - 서로 관련 있는 데이터와 함수를 여러가지 오브젝트로 정의해서 프로그래밍함. 한곳에서 문제가 있으면 관련있는 오브젝트만 수정. 여러번 반복하면 재사용할 수도 있음. 새로운 오브젝트를 추가 할 수도 있음.
클래스 - 오브젝트안에 데이터(fields)와 함수(methods)가 있음을 정의.
- template 같은 것.
오브젝트 - 클래스에 데이터를 넣어서 만든것. 오브젝트는 클래스의 인스턴스.
ex) 붕어빵 클래스를 이용하여 팥 붕어빵 인스턴스를 생성했다!
그렇다면 클래스와 오브젝트만 만든다고 해결된느 것일까? 답은 No!