C++ Master

수강대상

C++언어를 배우고자 하시는 학생또는 개발자

선수과정

없음

강의환경

Visual Studio 2013 Express

많은 사람들은 C++를 객체지향 언어로 알고 있습니다. 하지만 C++은 객체 지향만의 언어가 아닌 다양한 개념과 프로그램 기법을 가진 가진 멀티 패러다임 언어입니다. 그 만큼 배워야 할 것이 많이 있는 언어입니다. 본 과정은 아래와 같은 다양한 주제를 가지고 진행합니다.

ㆍ복잡한 C++문법을 표준 문서에 의거해서 정확하고 통찰력 있게 배웁니다.

C++ 처럼 복잡하고 어려운 언어도 없습니다. 많은 관련 서적을 읽어 보아도 정확히 이해가 되지 않는 경우가 많이 있습니다. C++ 기본 서적을 1~2번 읽어 본 후에 는 “Effective C++” 이나 이와 비슷한 류의 서적에 도전하지만 정확히 이해하고 볼 수 있는 사람은 많지가 않습니다.

현재 C++표준은 ISO 14882 (2003년) 문서에 정확하게 기술되어 있습니다. 본 과정은 C++ 표준 문서에 있는 내용을 가지고 정확한 문법을 다룹니다. C++ 분야에서 사용되는 대부분의 고급 문법들에 대해 정확하고 간결하게 설명하므로서 C++을 바라보는 눈을 한층 성숙하게 만들어 줍니다.

ㆍ객체 지향 설계 철학, 디자인패턴, C++업계의 관용구문과 관련 용어 등 C++을 사용한 프로그램 설계에 대해 자세히 배웁니다.

C++문법만 정확히 안다고 해서 C++에 대해 모두 아는 것은 아닙니다. C++을 사용해서 객체지향적으로 프로그램을 작성 할 줄 알아야 합니다. 많은 초보 C++ 개발자 분들이 C++을 사용해서 C처럼 프로그램을 하고 있습니다. 본 과정은 다형성의 정확한 개념을 배우고 디자인 패턴 등을 적용해서 객체 지향 프로그램을 설계하는 방법에 대해 다루고 있습니다.

또한, C++업계에서 사용되는 관용구문도 배우게 됩니다.

ㆍTemplate을 기반으로 한 generic 프로그램에 대해 자세히 배웁니다.

C++은 객체 지향 프로그램만을 위한 언어는 아닙니다. 오히려 요즘에는 template을 기반으로 하는 Generic 프로그램이 C++의 주요 부분이 되고 있습니다. 가장 빠른 범용적인 라이브러리를 구축하고자 하는 C++의 목표에 가장 적합 하기 때문입니다. Template 기본 문법뿐 아니라, Specialization, meta programming, traits, policy 등 template 고급 기법에 대해 자세히 배웁니다. 이제 generic을 모르면 C++ 개발자가 아닌 시대가 오고 있습니다.

ㆍSTL, TR1, BOOST 등 C++ 업계에서 사용되는 라이브러리에 대해 자세히 배웁니다.

C++의 표준 라이브러리인 STL은 최고의 성능을 자랑하는 아주 멋있는 라이브러리 입니다. STL은 간단히 사용하기는 쉽지만 정확히 알고 사용하기는 어렵습니다. 본 과정에는 STL의 가장 핵심인, Container, Algorithm, Iterator, Function Object, Allocator, binder 등을 직접 만들어 보면서 STL의 원리를 파악합니다.

또한, 차세대 표준에 포함된 TR1에 대해서도 살펴 봅니다. Tr1::function<>을 보면 정말 편리하게 callback을 만들수 있습니다.

Boost는 C++의 미래를 살펴 볼수 있는 좋은 라이브러리 입니다. boost에서 논의 되었던 내용이 이번 C++ 개정판에 적용될 예정입니다. Boost도 간단히 살펴 보는 시간을 가져 봅니다.

ㆍC++의 미래 C++0x 에 대해서 배웁니다.

이제 C++은 과도기를 맞이하고 있습니다. 일명 C++0x라 불리는 차세대 C++은 2008년 현재 표준화 작업을 거의 마무리 하고 2009년 에 정식으로 발표될 예정입니다. 약간의 문법적 변화와 라이브러리의 대대적 추가가 예정되어 있습니다. 2008년 10월 현재 거의 확정된 C++0x의 표준문서를 구할수 있습니다. lambda, concept, rvalue reference, variadic template, template alias등 재미있는 이야기가 많이 준비되어 있습니다.

  • Section1. C++ Better Than C
    • C++ 기본코드, C++ 함수의 특징(오버로딩, inline, 디폴트 인자, 함수 template)
    • namespace, reference, 동적 메모리 할당
    • tempolary object, linkage, C++ explicit casting
  • Section2. class
    • 객체 지향 개념, ADT, 생성자, 소멸자, 접근 지정자, friend, 캡슐화, 초기화 리스트
    • 복사생성자(얕은 복사, 깊은 복사, 복사 금지, 참조 개수)
    • static 멤버, const 멤버 함수, 멤버 함수 포인터, 멤버를 가르키는 포인터
    • empty class, nested class, local class, class declaration, callback 의 개념
  • Section3. operator overloading
    • 연산자 재정의 개념, 기본 연산자 재정의, 연산자 재정의 기본 규칙
    • << 연산자와 ostream, endl 의 원리, 대입연산자와 얕은 복사
    • 변환연산자, 변환 생성자, 참조 개수 기반의 string class
    • new/delete 연산자 재정의(객체 풀링, detect memory leak, placement new)
    • smart pointer, iterator의 개념, function object의 개념과 장점
  • Section4. inheritance
    • 상속의 개념, protected, 접근 변경자, 상속에서의 생성자/소멸자
    • Function override, LSP, upcasting Vs Down-Casting, function binding
    • 가상함수, 가상 소멸자, 가상 출력, 가상함수 테이블, 순수 가상함수와 추상클래스
  • Section5. 객체지향 디자인
    • 다형성(polymorphism)의 개념. 인터페이스 개념, 인터페이스 기반 설계(Design By Contract)
    • 객체 지향 설계의 기본 원칙(OCP, LSP, SRP, DIP, ISP)
    • 디자인 패턴의 개념과 활용(template method, strategy pattern, composite, factory, adapter등)
  • Section6. exception
    • Exeption 개념, C++표준 exception class, exception safety, exception neutral
  • Section7. template 과 STL
    • class template, function template, template instantiation
    • template specialization, traits, policy, value_type, meta programming
    • STL의 개념(Container, Iterator, Function Object, binder, algorithm, allocator)
    • STL의 활용
  • Section8. C++의 미래
    • TR1의 개념과 활용(tuple, smart pointer, array, unordered map, set, function, bind, type_traits 등)
    • C++0x의 추가문법 소개(rvalue_reference, concept, lambda, static_assert, 위임생성자 등)
    • boost 라이브러리 소개 및 활용