객체지향의 특징

추상화(Abstraction)

 - 객체들의 공통적인 특징을 도출해 내는 것.

 - 우리가 구현하는 객체들이 가진 공통적인 데이터와 기능을 도출해 내는 것을 의미한다.

 

캡슐화(Encapsulation)

 - 연관 있는 변수와 함수를 하나로 묶는 것 (클래스)

 - 클래스라는 캡슐에 분류된 집단 별로 넣어 실체화 하면 객체를 만들 수 있다.

 - 접근한정자를 통해 객체가 내부적으로 기능을 어떻게 구현하는지를 감출 수 있어, 정보은닉이 가능하다.

 - 목적 : 내부의 기능 구현이 변경되더라도 그 기능을 사용하는 코드는 영향을 받지 않도록 함.

 

상속성(Inheritance)

 - 재사용성과 확장성

 - 상위 클래스의 특징을 하위 클래스에서 물려받는 것.

 - 상위 클래스에 정의된 동작을 다시 사용, 확장 및 수정하는 하위 클래스를 만드는 것.

 - 목적 : 반복된 코드의 중복을 줄여주고, 유지 보수의 편리함을 제공함. 다형성을 구현할 수 있음.

 

다형성(Polymorphism)

 - 한 객체가 여러가지(poly) 모습(morph)을 갖는 것.

 - 같은 (상위)타입이지만, 하나의 메시지에 대해 각 객체가 서로 다른 방법으로 응답할 수 있는 것.

 - 오버라이딩과 오버로딩을 통해 구현된다.

 - 목적 : 동일 메시지로 여러 행위를 할 수 있음으로 프로그램의 확장성과 클래스의 재사용성을 높여준다.

 

 

 

일반적으로 3대 특징이라고 부를 때는 '캡슐화' / '상속' / '다형성'을 말하여

5대 특징이면 '정보은닉' 등이 포함되는듯.

댓글

Designed by JB FACTORY