|
|
구조적 프로그래밍 #
- 프로그램 = 데이터 + 알고리즘
- C는 절차적 언어 -> 알고리즘에 더 치중함.
- FORTRAN, BASIC과 같은 절차적 언어 -> 스파게티 프로그램이 됨 -> 구조적 프로그래밍의 등장배경
- 구조적 프로그래밍은 하향식(Top-Down) 설계 -> 쪼개고 쪼개어 프로그래밍하기 위한 작은 모듈이 될 때까지 쪼갠다.
- 여전히 절차적
객체지향 프로그래밍 #
- 큰 규모에서 구조적 프로그래밍은 어려운 문제 -> 객체지향의 등장배경
- 데이터를 강조 -> 해결해야 할 문제의 특성에 맞게 데이터의 형태를 설계
- 데이터와 그 데이터를 대상으로 수행할 수 있는 동작을 정의
- 객체를 정확히 묘사하는 클래스를 설계하는 것이 처음에 할 일 -> 상향식(Bottom-Up)
- 재사용, 정보은닉, 다형성, 상속성 -> 해결해야 할 작업이 아닌 개념의 표현에 주안점을 둠
- 코드의 재사용은 C++의 진정한 강점
일반화 프로그래밍 #
- 일반화(generic)은 특정형에 구속되지 않는 코드를 작성한다는 뜻 -> 수단은 템플릿
- 알고리즘을 강조 (여전히 재사용, 개념의 추상화는 OOP의 개념과 동일)
C++ #
- Bell 연구소의 Bjarne Stroustrup이 1980년대 초에 개발
- C++ = C의 특성(저수준의 하드웨어 접근을 제공) + OOP특성(고수준의 추상화)
|