현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법
구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 사용
구조적 기법의 문제점
소프트웨어의 재사용 및 확장 용이, 고품질의 소프트웨어를 빠르게 개발, 유지보수 쉬움
복잡한 구조를 단계적 ㆍ계층적으로 표현, 멀티미디어 데이터 및 병렬 처리 지원
데이터와 데이터를 처리하는 함수를 묶어 놓은(캡슐화한) 하나의 소프트웨어 모듈
데이터
함수
공통된 속성과 연산(행위)을 갖는 객체의 집합, 객체의 일반적인 타입(Type)을 의미
클래스에 속한 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
클래스에 속한 각각의 객체를 인스턴스(Instance)라고 함
클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라고 함
동일 클래스에 속한 각각의 객체들은 공통된 속성과 행위를 가지고 있으면서, 그 속성에 대한 정보가 서로 달라 동일 기능을 하는 여러 가지 객체를 나타내게 됌
최상위 클래스는 상위 클래스를 갖지 않는 클래스를 의미
슈퍼 클래스(Super Class)는 특정 클래스의 상위(부모) 클래스를 의미
서브 클래스(Sub Class)는 특정 글래스의 하위(자식) 클래스를 의미
데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미
캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급 효과 낮음
캡슐화된 객체들은 재사용이 용이함
인터페이스가 단순, 객체 간의 결합도가 낮아짐
이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려받는 것
하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 즉시 자신의 속성으로 사용
하위 클래스는 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있음
객체와 클래스의 재사용, 즉 소프트웨어의 재사용(Reuse)을 높이는 중요한 개념
다중 상속(Multiple Inheritance): 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것
객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력
객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함
응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 함
ex) '+' 연산자의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열 연결 기능으로 사용
두 개 이상의 객체(클래스)들이 상호 참조하는 관계를 말한다.