1 / 38

chapter 01. C++ 언어

chapter 01. C++ 언어. 01. C++ 언어의 소개. C 언어를 기반으로 객체지향 패러다임을 더하여 만든 언어 분산 시스템 , 임베디드 시스템 , 시스템 프로그램 , 과학 계산용 프로그램 등의 다양한 분야에 대해서 적용됨 . 많은 운영체제에서 C++ 언어로 개발이 가능한 개발환경이 갖추어져 있음 . 국제 표준이 존재하므로 , 국제 표준에 의거해 작성된 프로그램은 어디에서든지 같은 의미 낮은 레벨의 접근이 가능하므로 손쉽게 시스템 레벨의 프로그램을 작성할 수 있도록 지원한다 .

brian-ortiz
Download Presentation

chapter 01. C++ 언어

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. chapter 01. C++ 언어

  2. 01. C++언어의 소개 • C언어를 기반으로 객체지향 패러다임을 더하여 만든 언어 • 분산 시스템, 임베디드 시스템, 시스템 프로그램, 과학 계산용 프로그램 등의 다양한 분야에 대해서 적용됨. • 많은 운영체제에서 C++언어로 개발이 가능한 개발환경이 갖추어져 있음. • 국제 표준이 존재하므로, 국제 표준에 의거해 작성된 프로그램은 어디에서든지 같은 의미 • 낮은 레벨의 접근이 가능하므로 손쉽게 시스템 레벨의 프로그램을 작성할 수 있도록 지원한다. • 명령형과 객체지향의 개념뿐만 아니라 제네릭 프로그래밍, 함수형 프로그래밍 등의 다양한 패러다임을 지원함.

  3. ISO/IEC 14882 – Programming Language C++ • 국제적으로 명망과 인지도가 있는 각국의 프로그래밍 언어 전문가들에 의해서 만들어진 C++ 언어의 공통된 협약 • C++에 대한 국제표준으로 ISO/IEC에서 만든 공통 협약으로 갱신될 때마다 버전이 바뀌며, 현재 최종 버전은 14882:2003 이다. • C++ 언어의 표준안은 ANSI (American National Standard Institute)에서 처음 시도되었으며, 1989년 ANSI C++ 표준이 제공됨. • 일반적으로 C++ 프로그램은 이 국제표준이 제정하고 있는 규약을 만족하는 프로그램만을 의미한다. • C++ 프로그램을 작성하고 실행하는 환경 간의 차이를 최소화하고, 각국의 전문가들과 공통된 언어로 의사소통이 가능함. • 국제 표준을 따를 경우 의사소통과정에서 발생할 수 있는 불필요한 자원의 낭비를 줄이고, 이식성을 높일 수 있다는 장점이 있다.

  4. 멀티 패러다임 • 프로그래밍 언어의 패러다임 –프로그래밍 언어에서 추구하는 대상이나 강조하는 기본 개념 • C++언어는 하나의 언어에서 명령형, 객체지향 및 함수형, 제네릭, 메타 프로그래밍 등을 제공하는 멀티 패러다임 을 지원함. • C++언어의 주요 패러다임

  5. C언어와 C++언어 • C++언어는 C언어의 패러다임과 언어적인 부분까지 포함하는 좀 더 큰 범위를 차지함. • C++언어는 초기에 만들어질 때 C언어의 언어적인 부분을 가져오고 클래스의 개념을 확장하는 것으로 시작했음. • 현재 C언어와 C++언어는 독립적으로 표준화가 계속되고 있으며, 표준화의 추진 그룹 역시 상호간에 많은 영향을 미치고 있음. • C언어와 C++언어의 차이점 • 코멘트 스타일에 //추가 문자 상수(Charater Literal)의 타입 • 문자열 상수의 한정어 임시 선언(Tentative Declaration) • Struct 파일 범위에서 선언된 명칭 • 호환되는 타입(Compatible Type) • void *에서 일반 포인터로의 변환 • 암시적 선언(Implicit Declaration)

  6. 02. C++언어와 객체지향 프로그래밍 • 소프트웨어의 위기 해소 및 생산성 증대를 위해서 제안된 많은 기술 중에서 객체지향 설계/개발 기법이 가장 큰 성과를 거두었음. • C++언어는 C언어에 당시 Smaltalk, Eiffel등의 언어에서 지원하던 객체지향의 개념을 접목하여 태동됨. • 클래스, 상속, 오버로딩, 오버라이딩 등의 C++언어의 많은 기술적 요소들이 객체지향을 지원하기 위해서 존재함. • C++언어에서 지원하는 객체지향 개념은 구조적 방법에 의한 프로그램에 비해 가독성이 높으며, 소프트웨어의 생산성을 높일 수 있도록 함. • C++언어는 객체지향뿐만 아니라 다양한 패러다임을 지원함.

  7. 구조적 방법 • 구조적 방법의 개념 • 문제에 대한 분할 및 정보(Divide and Conquer)의 개념으로 문제를 분해하고, 이를 단계별로 해결하는 방법 • 프로그램의 실행 흐름을 강조하므로 절차지향이라고도 하며, C언어를 비롯한 많은 프로그래밍 언어들이 이를 지원함. • 구조적 방법의 단점 • 개발자가 실세계의 문제보다 프로그램이 실행되는 기계의 관점에서 문제를 해결해야 한다는 어려움이 있음. • 대형 소프트웨어에서 잠재적인 오류를 증가시킬 가능성이 있음. • 처리 절차에 대해서만 강조하기 때문에 데이터에 대한 고려가 부족해 데이터가 제대로 보호되지 못함. (전역변수)

  8. 객체지향 방법 • 객체지향 방법론 • 소프트웨어 시스템을 구성하는 요소를 인터페이스와 데이터를 포함한 객체의 단위로 나누고, 객체간의 메시지 전달을 통해 문제를 해결 • 실 세계의 문제를 직접 묘사할 수 있는 장점 및 재사용성에 의해 빠른 소프트웨어의 개발 및 생산성의 증대에 도움을 줌. • 객체지향 프로그램에서는 객체의 구성 및 객체간의 통신을 정의하는 것이 중요함. • 객체지향의 기본 키워드 • 객체(Object) : 실세계에 존재하는 모든 사물 • 클래스(Class) : 객체를 프로그램으로 표현할 수 있도록 만든 언어적 도구 • 인스턴스(Instance) : 프로그램에서 클래스를 통해 만든 실제의 실행 객체 • 클래스의 디자인의 중요한 문제 • 어느 정도 레벨까지를 클래스로 구현해야 하는가? • 패턴(Pattern)의 적용을 고려

  9. 객체지향 디자인 1 • 객체지향 설계의 고려사항 • 객체의 정의 및 객체간의 통신에 대한 정의 • 캡슐화, 추상화, 상속 및 다형성 등의 핵심 개념의 적용 • 캡슐화(Encapsulation) • 데이터와 함수 등 객체와 관련된 것을 하나로 묶는 것. • 정보 은닉(Information Hiding)과 함께 연관 지어 사용되는 개념 • 외부에서 알아야 할 필요가 없는 데이터와 연산을 외부에서 보이지 않게 숨겨 자세한 실행 흐름을 드러나지 않게 함. • 추상화(Abstraction) • 인터페이스(Interface)와 구현(Implementation)을 분리하는 것. • 객체가 가진 특성 중 필수 속성만으로 객체를 묘사하고 유사성을 표현하며, 세부적인 상세 사항은 각 객체에 따라 다르게 구현되도록 함. • C++ 언어는 가상 함수를 통한 클래스의 상속을 통하여 추상화를 제공 함. • 기능 추상화 와 자료 추상화 가 있음.

  10. 객체지향 디자인 2 • 상속(Inheritance) • 기존에 정의된 클래스를 이용하여 새로운 클래스를 정의할 수 있도록 함. • 클래스에 상, 하 관계를 맺을 수 있도록 하고 하위 클래스는 상위 클래스에서 정의한 모든 내용을 수정 없이 사용 가능하도록 정의함. • 상위 클래스(Super Class), 기본 클래스(Base Class), 부모 클래스(Parent Class) • 하위 클래스(Sub Class), 유도 클래스(Derive Class), 자식 클래스(Child Class) • 다중 상속(Multiple Inheritance): 두 개 이상의 부모 클래스로부터 상속받는 것으로 지정한 부모 클래스의 속성을 모두 물려받음. • 다형성(Polymorphism) • 서로 다른 타입에 대해 동일한 방식으로 접근할 수 있도록 하나의 인터페이스를 제공하는 것. • C++언어에서는 가상 함수(6장), 템플릿(8장), 오버로딩(7장) 등의 방법을 이용해서 다형성을 제공 함.

  11. 03. C++ 프로그램의 구조 • C++ 프로그램은 하나 이상의 헤더 파일과 소스파일로 구성됨. • 헤더파일 : 해당 클래스의 선언과 적용될 수 있는 데이터, 상수 정의등으로 구성되는 확장명이 .h, .hpp 인 파일 • 소스파일 : 구체적인 실행 코드가 담기는 파일로 .cpp, .cc, .cxx등의 확장명을 가지는 파일로 구현파일이라고도 함. • Hello World 프로그램 • 01 // First C++ program – print Hello • 02 #include <iostream> • 03 using namespace std; • 04 int main() • 05 { • 06 cout << "Hello, world!\n"; /* hello world 문자열을 화면에 출력함. */ • 07 }

  12. Hello World 프로그램의 구조 • 주석문(1행) – 프로그램의 주요 코드를 위한 설명을 위해 사용됨. • /* … */ • // • 전처리 명령(2행) – 실제의 번역에 앞서서 번역기에 대한 특별한 기능을 지시하기 위한 문장 • using 명령(3행) – 프로그램에서 사용하는 네임스페이스를 지정함. • main 함수(4행) – 프로그램의 실제 수행시에 운영체제에 의해서 자동으로 수행되는 함수 • 실행블록(5~7행) – 실제 수행을 위한 문장이 포함되어 있는 블록

  13. C++ 프로그램: 스택 헤더파일 • 스택 프로그램의 헤더파일 (stack.h) • class my_stack // 클래스 my_stack의 선언 • { • enum { Max_Data = 100 }; • public: • my_stack (); • ~ my_stack (); • void push( int ); • int pop(); • bool empty(); • bool full(); • private: • size_t top; • int buffer[ Max_Data ]; • };

  14. C++ 프로그램: 스택 구현파일 • 스택 프로그램의 구현파일(stack.cpp) • #include “stack.h” • my_stack:: my_stack () • { • top = 0; • } • my_stack::~ my_stack () • { • top = 0; • } • void my_stack::push( int item ) • { • if( !full() ) • buffer[ Top ++ ] = item; • } • int my_stack::pop() • { • if( !empty() ) • top --; • } • bool my_stack::empty() • { • return (top == 0); • } • bool my_stack::full() • { • return ( top == Max_Data-1 ); • }

  15. 외부에서의 클래스 이용: 스택 • 클래스 단위로 작성된 헤더와 구현 파일의 이용(main.cpp) • #include <iostream> • #include “stack.h” • using namespace std; • int main() • { • my_stack stack; • stack.push( 5 ); • stack.push( 2 ); • cout << stack.pop() << endl; • cout << stack.pop() << endl; • }

  16. C언어와 C++언어의 혼합 프로그래밍 • c.h • extern "C" void print( int i ) ; • c.c • #include <stdio.h> • void print( int i ) • { • printf( "%d is printed.\n", i ); • } • cpp.cpp • #include "c.h" • int main( ) • { • print(1); • } • C++언어에서는 C언어로 작성된 프로그램을 별도의 수정 없이 사용할 수 있도록 언어적으로 규정. • extern “C” 를 이용하여 C프로그램에서 작성된 인스턴스나 함수를 C++ 프로그램에서 사용할 수 있음.

  17. 04. C++ 프로그램의 개발 환경 • 비주얼 C++ • 윈도우 환경에서 널리 사용되는 C++ 프로그램의 통합개발환경(IDE, Integrated Development Environment) • 하나의 개발 환경 내에서 원시코드의 편집에서 컴파일, 링크 및 실행의 전 과정을 수행할 수 있도록 에디터, 컴파일러, 링커 및 디버거가 모두 제공이 됨. • .Net 프레임워크에서 비주얼 C++의 기능을 통합하여 지원되고 있음. • g++ • 유닉스나 리눅스 환경에서 C++ 프로그램의 개발을 지원하는 기본 컴파일러 • C컴파일러인 gcc와 마찬가지로 자유 소프트웨어 재단(FSF, Free Software Foundation)과 GNU(Gnu is not Unix)에서 공급하는 무료 컴파일러 • 기본적으로 통합개발환경을 지원하지는 않으며, vi와 같은 별도의 범용에디터를 사용해야 함.

  18. 비주얼 C++의 설치 1 1. 소개화면 2. 라이센스

  19. 비주얼 C++의 설치 2 3. 제품 ID 및 사용자 정보 입력 4. 설치 옵션

  20. 비주얼 C++의 설치 3 5. 공통파일 설치 폴더 선택 6. 설치 안내화면 1

  21. 비주얼 C++의 설치 4 7. 설치 안내 화면 2 8. 설치 프로그램 선택

  22. 비주얼 C++의 설치 5 9. 설치 환경 변수 10. 설치 진행

  23. 비주얼 C++의 설치 6 11. 설치 완료

  24. 비주얼 C++의 실행 1. 비주얼 C++의 실행 2. 비주얼 C++ 초기화면

  25. 비주얼 C++을 이용한 프로그램 개발 1 1. 새 프로젝트의 생성단계 1 2. 새 프로젝트의 생성단계 2

  26. 비주얼 C++을 이용한 프로그램 개발 2 3. 신규 파일 추가 4. 프로그램의 편집

  27. 비주얼 C++을 이용한 프로그램 개발 3 5. 실행 파일의 생성 6. 프로그램 실행

  28. g++의 사용방법 • g++ 의 도움 말 보기 • $man g++ • g++의 주요 옵션 • 무 옵션 : 컴파일, 링크를 수행하여 a.out 이라는 이름으로 실행파일을 생성함. • -o :생성되는 실행 파일의 이름을 지정 • -c : 컴파일 과정만을 수행 • -ldirPath : dirPath를 경로에 추가함 • -LdirPath : dirPath를 라이브러리 경로에 추가함. • -Wall : 컴파일 과정에서 발생되는 모든 에러, 경고 메시지를 출력함. • -ansi : ANSI 표준 C/C++ 형태로 컴파일함 • -pedantic :모든 경고 메시지를 출력하고, 컴파일러 확장기능을 사용하지 않음

  29. vi의 기본 모드 및 실행 • vi의 모드 • 명령 모드: 명령어를 입력할 수 있는 상태 • 입력 모드: 텍스트를 수정할 수 있는 상태 • Ex 모드: 추가적인 에디터 명령어를 입력 받는 상태 • vi의 실행과 종료 • $vi • :q! • vi의 종료 명령 • q: vi 종료 • q!: 입력한 내용을 무시하고, vi를 종료함 • wq: 현재 입력한 내용을 저장하고 종료함

  30. vi의 명령 1 • vi의 입력명령 • vi의 종료 명령

  31. vi의 명령 2 • vi의 커서 이동 명령

  32. vi의 명령 3 • vi의 수정 명령

  33. vi의 명령 4 • vi의 삭제 명령 • vi의 편집 명령

  34. vi의 명령 5 • vi의 작업취소 명령 • vi의 편집 명령

  35. g++과 vi를 이용한 프로그램 개발 1 • vi 데이터를 이용하여 코드를 입력한다. • $vi hellosample.cc

  36. g++과 vi를 이용한 프로그램 개발 2 • g++을 이용하여 실행파일을 생성한다. • $g++ -o hellosample hellosample.cc

  37. g++과 vi를 이용한 프로그램 개발 3 • 프로그램의 실행 • $./hellosample

More Related