객체 지향 프로그래밍?
만들고자 기능을 추상화시켜 속성(atrribute)과 행위(action)를 가지는 변수(variable)와 함수(method)로 구성된
객체를 만들고 그 객체를 이용하여 기능을 구현하는 것을 의미한다.
장점
- 객체화를 시키기 때문에 유연하고 변경이 쉬운편이다.
- 수정할 부분이 있다면 해당 부분만을 찾아 변경하면된다. 이때 5원칙 중 '단일 책임 원칙'이 들어간다고 볼 수 있다.
단점
- 지나치게 객체화를 시키면 분석하기가 쉽지 않다. (복잡해진다.)
클래스(class) | 추상화 개념 |
객체(object) | 클래스 객체화 |
메소드(method) | 연산 |
메시지(message) | 메소드(method)를 호출 |
추상화(Abstraction)
- 실체화의 개념을 추상화 시킬 때 공통의 속성이나 기능을 묶는 것을 추상화라 한다.
- 예를 들어 연필, 지우개, 볼펜, 샤프심 이런 객체들을 하나의 공통적인 개념으로 묶을 때 크게보면 '필기구' 라는
의미로 묶을 수 있으며 이를 추상화라고 한다.
정보은닉(Data hiding)과 캡슐화(Encapsulation)
- 외부에서 내부 데이터에 직접 접근을 방지하고 사용할 수 있는 함수(Function)부분만 보이도록 하여
데이터의 직접적으로 접근을 방지하고 사용할 수 있는 인터페이스만 제공함으로써 안전성을 보장할 수 있다.
상속(Inheritance)
- 상위 클래스(부모)의 기능을 응용하여 하위 클래스(자식)에서 추가적으로 새로운 기능을 제작할 수 있다.
상속의 가장 큰 이점은 소스코드의 재사용성에 있다. (매번 같은 코드를 구현할 필요가 없다.)
- 다중 상속의 경우네는 상속 관계를 정확하게 인지하지 못하면 문제가 발생할 수 있으므로 사용을 지양하지만
사용해야할 상황이 온다면 정확하게 인지하고 사용해야 한다.
다형성(Polymorphism)
- 객체의 메소드를 여러가지 개념으로 사용할 수 있다.
상속 관계에서 가상 함수(Virtual Function)를 이용하여 오버라이딩(Overriding) 기능을 사용할 수 있다.
* 오버라이딩(Overriding) : 같은 이름의 메소드가 여러 클래스에서 다른기능을 하는 행동
- 객체지향에서만 사용되는 의미는 아니지만! 오버로딩(Overloading) 개념도 다형성에 포함될 수 있다.
- 순수 가상 함수(Pure Virtual Functions)를 이용하여 추상 클래스(Abstract Class)를 구현할 수 있다.
'C++' 카테고리의 다른 글
다중 상속(Diamond of Death)의 문제점 (0) | 2019.07.10 |
---|---|
상속을 사용하는 의미 (0) | 2019.07.09 |
순수 가상 함수(Pure Virtual Function) (0) | 2019.07.09 |
가상 함수 테이블(Virtual Function Table) (0) | 2019.07.09 |
객체지향 - SOLID 개발 5대 원리 (0) | 2019.07.09 |