절차 지향적 프로그래밍
정의된 순서대로 절차적으로 함수가 하나씩 호출된다.
객체 지향적 프로그래밍
객체를 정의하고 객체들끼리 의사소통하도록 한다.
서로 관련있는 data와 함수를 여러가지 객체로 나누어 정의한다.
error, exception, event 등 도 object로 정리 가능, 이름은 명사형일 것!
서로 관련있는 데이터와 함수를 캡슐 안에 모아두고 외부에서 보일 필요없는 (보안이 필요한) 데이터를 잘 숨길 수 있다.
외부에서 ‘내부의 구현방법, 복잡성 등’ 모두를 알지 않아도 신경쓰지 않고 외부에서 간단히 지정된 Interface를 통해 사용 가능하다.
자식 class는 부모 class 로 부터 그 안의 요소들을 상속 받는다.
animal class 에 makesound( ) 함수가 선언되어 있다. animal class의 자식 요소인 dog, cat, pig는 makesound( )를 상속 받아 새로 선언하지 않아도 사용할 수 있다.
부모 class에 정의된 함수를 모든 자식 class가 가져와 쓸 수 있다.
서로 관련 있는 data, 기능 모으기, template( 청사진 ) 만들기
constructor( ) : 오브젝트 / instance를 만들 때 항상 호출되는 함수
멤버 변수: 클래스가 한번 정의되고 클래스 사이에서 공유 될 수 있는 data
→ 계속 다시 호출 및 저장하므로 메모리가 낭비될 가능성 ↑
- static 키워드를 통해 class level 로 지정 : object 마다 생성되지 않음
- 부를 때는 this. 대신 class명
- 그 외 멤버 변수: instance( object ) level
클래스 정보 은닉화