절차지향 프로그래밍(Procedural Oriented Programming)
물이 위에서 흐르는 것처럼 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법.
- 특징
- Top-Down방식으로 설계하며, 기능을 중시한다.
- 장점
- 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
- 단점
- 유지보수가 어렵다.
- 실행순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장할 수 없다.
객체지향 프로그래밍(Object Oriented Programming)
프로그램을 구현하는데 필요한 데이터를 추상화 시켜 객체(object)들로 만들고, 객체들의 상호작용을 통해서 프로그래밍하는 기법.
- 특징
- Bottom-Up방식으로 설계하며, 세부모델을 먼저 설계한다.
- 장점
- 유지보수가 용이하다.
- 재사용이 용이하다.
- 단점
- 상대적으로 속도가 느리다.
- 코드를 설계하는데 많은 시간이 소요된다.
객체들이 공통적으로 가지고 있는 속성이나 동작을 선별하는 것. 객체를 추상화하여 구현하면 새로운 객체를 만들 때, 그 객체의 고유한 기능만 새로 만들어주고 공통된 기능은 상속을 통해서 이용할 수 있다.
예를 들어서 아이폰, 갤럭시 폰이라는 여러가지 핸드폰들이 있을 때, 이들의 공통점은 ‘핸드폰’이라는 것. 핸드폰의 공통된 기능은 핸드폰 클래스에 구현하고, 이를 상속하여 각각의 특징적인 기능을 구현.
하위 클래스가 상위 클래스의 변수와 매서드들을 물려받는 것. 상위 클래스에 추상적인 형태를 구현하고, 자식 클래스에서 세밀한 프로그래밍이 가능하기 때문에 유연성이 증가하고, 코드의 중복을 줄일 수 있다.
같은 이름의 메서드가 클래스 혹은 객체에 따라서 다르게 구현되는 것. ‘매서드 오버라이딩’과 ‘매서드 오버로딩’이 있다.
클래스를 통해 변수와 매서드를 하나로 묶어서 외부에서 접근하지 못하도록 보호하는 것. 이를 통해서 외부 클래스들로 부터 클래스 내의 변수와 매서드들을 보호하고(데이터 보호), 내부의 동작을 감추고 필요한 부분만 외부에 노출(데이터 은닉)할 수 있다.
C++은 C언어를 기반으로 하고 있는 언어로, C언어에 객체지향의 특징과 기능을 삽입한 객체지향 언어이다. 하지만 절차지향도 지원하기 때문에, 멀티 패러다임이다.