프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
1. 코드 재사용이 용이하다
다른 사람이 만든 클래스를 가져와서 이용하거나, 상속을 통한 확장도 가능하다.
2. 유지보수가 쉽다
수정해야되는 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존재하기 때문에 해당 부분만 수정 가능하다.
3. 대형 프로젝트에 적합하다
클래스 단위로 모듈화 시켜서 개발할 수 있다.
1. 처리 속도가 상대적으로 느리다
2. 객체가 많으면 용량이 커질 수 있다
3. 설계시 많은 시간과 노력이 필요하다
1. 클래스 + 인스턴스(객체)
클래스 : 속성(attribute)와 행위(behavior)를 변수와 메서드로 정의한 것.
객체를 만들기 위한 메타정보 같은 개념
인스턴스(객체) : 클래스에서 정의한 것을 바탕으로 실제 메모리에 할당한 것.
2. 추상화
공통의 속성이나 기능을 묶어 이름을 붙인 것
3. 캡슐화
기능과 특성의 모음을 클래스라는 캡슐에 분류해서 넣는 것
캡슐화를 하는 이유 :
a) 코드를 재수정 없이 재활용할 수 있다.
b) 접근 제어자(private)를 통한 정보 은닉.
4. 상속
부모 클래스의 속성과 기능을 물려받아 사용할 수 있게 하는 것.
상속받은 기능의 일부분을 변경해야 할 경우, 상속받은 자식 클래스에서 해당 기능만 다시 수정(정의)해서 사용할 수 있다.
5. 다형성
같은 함수더라도 그 함수의 매개변수에 따라 다른 역할을 할 수 있는 것.