프로그램을 여러개의 독립된 객체의 모임으로 보고 각 객체를 유기적으로 연결하여 프로그래밍
속성과 행위로 구성되어 외부와 독립적으로 디자인된 사용자 정의 데이터형
클래스의 인스턴스
실제 메모리에 할당되어 고유의 속성을 가지고 클래스에 정의된 행위 ( 메소드 ) 를 수행
클래스로부터 생성된 객체를 서브루틴 형태로 조작할 수 있도록 하는 클래스에 정의된 함수
어떻게 구현되는지는 숨기고 무엇인지만 정의하여 표현함으로 프로그램을 간단하게 한다.
자료 추상화를 통해 정의된 자료형을 추상자료형이라고 한다.
OOP에서의 클래스는 자료 추상화를 통해 정의 된다.
상속한 클래스
=부모 클래스
,상위 클래스
상속 받은 클래스
=자식 클래스
,하위 클래스
상위 클래스의 속성과 연산 ( 메소드 ) 를 이용할 수 있도록 하는 기능
2개 이상의 클래스를 상속받는 기능
한 가지 이름에 여러 개념이 정의 되는 것
오버라이딩
: 부모 클래스에 있는 메소드와 같은 이름, 매개변수를 받지만 기능은 다르게 자식 클래스에서 재정의 하는 것오버로딩
: 같은 이름을 갖는 여러 요소가 각자 주어지는 매개변수의 종류나 수에 따라 다른 기능을 하도록 하는 것
변수의 자료형이나 호출되는 함수가 결정되는 것을 바인딩이라고 하는데,
컴파일 시점에 변수의 자료형이 이미 정해지고 정적 바인딩과 달리
동적 바인딩은 실행하고 입력이 들어오는 그때 변수의 자료형을 정한다.
- 코드의 재사용이 용이하며 이전 클래스를 상속 받아 확장하여 사용도 가능하다.
- 수정 시 특정 클래스의 속성이나 메소드의 한 부분만을 수정하면 되기에 비교적 유지보수가 쉬운 편이다.
- 대형 프로젝트 진행 시에 클래스 단위로 개발이 가능 하기에 업무 분담이 편하다.
- 실행 속도가 상대적으로 느리다.
- 객체가 많을 수록 용량이 커진다.
- 객체가 처리해야 하는 것에 이해가 필요하기에 설계시에 많은 시간과 노력이 필요하다.