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