프입2-강의노트-C++배경

Similar documents
q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Microsoft PowerPoint - chap01-C언어개요.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - additional01.ppt [호환 모드]

C 언어와 프로그래밍 개요

Blog

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Presentation

C++ Programming

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

제 1 강 희망의 땅, 알고리즘

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상 2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌

C++ 기본문법 정리

C++ Programming

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - C++ 5 .pptx

Slide 1

<4D F736F F F696E74202D2031C1D6C2F72D31C2F7BDC32028B0ADC0C7C0DAB7E D20C7C1B7CEB1D7B7A1B9D6BEF0BEEE20B0FAB8F1BCD2B


gnu-lee-oop-kor-lec06-3-chap7

C++ Programming

C++ Programming

슬라이드 1

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

설계란 무엇인가?

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Microsoft PowerPoint - additional08.ppt [호환 모드]

Slide 1

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap06-2pointer.ppt

슬라이드 1

Microsoft PowerPoint - additional03.ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Slide 1

PowerPoint 프레젠테이션

PowerPoint Template

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - additional07.ppt [호환 모드]

chap10.PDF

C++ Programming

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - 1C언어소개0.PPT

untitled

윤성우의 열혈 TCP/IP 소켓 프로그래밍

17장 클래스와 메소드

PowerPoint Template

PowerPoint Template

제 1 장 기본 개념

Slide 1

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

슬라이드 1

Microsoft PowerPoint - 2강

Microsoft PowerPoint - Chapter 6.ppt

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

PowerPoint 프레젠테이션

자바 프로그래밍

Microsoft PowerPoint - 02-Class Review.pptx

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

PowerPoint 프레젠테이션

PowerPoint Presentation

초보자를 위한 자바 2 21일 완성 - 최신개정판

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

슬라이드 1

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint Presentation

초보자를 위한 C++

초보자를 위한 C++

PowerPoint 프레젠테이션

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - chap01.pptx

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Java7.pptx

11장 포인터

금오공대 컴퓨터공학전공 강의자료

Chapter 6 Objects and Classes

설계란 무엇인가?

PowerPoint Presentation

Microsoft PowerPoint - C프로그래밍-chap00.ppt [호환 모드]

프로그래밍 Company 서울대학교통계학과 2010년 2학기컴퓨터의개념및실습 ( 1

Design Issues

Slide 1

02 C h a p t e r Java

PowerPoint Presentation

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

JAVA PROGRAMMING 실습 02. 표준 입출력

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - CSharp-10-예외처리

1

Microsoft PowerPoint - Chapter 1-rev

초보자를 위한 C# 21일 완성

1. 인라인함수 예 : x, y 값중최소값을반환하는매크로와함수작성 // 매크로로구현한경우 #define MIN(X, Y) ((X) < (Y)? (X) : (Y)) X, Y 각각을괄호 ( ) 안에넣는이유는? // 함수로구현한경우 cout << MIN(4, 5) << en

PowerPoint Template

유니티 변수-함수.key

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Transcription:

Chapter 00. C++ 배경 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2019-2 nd 프로그래밍입문 (2)

2 프로그래밍과프로그래밍언어 2 프로그래밍언어 기계어 (machine language) 0, 1 의이진수로구성된언어 컴퓨터의 CPU 는본질적으로기계어만처리가능 어셈블리어 기계어의명령을 ADD, SUB, MOVE 등과같은상징적인니모닉기호 (mnemonic symbol) 로일대일대응시킨언어 어셈블러 : 어셈블리어프로그램을기계어코드로변환 고급언어 사람이이해하기쉽고복잡한작업, 자료구조, 알고리즘을표현하기위해고안된언어 Pascal, Basic, C/C++, Java, C# 컴파일러 : 고급언어로작성된프로그램을기계어코드로변환

3 사람과컴퓨터, 기계어와고급언어 35 + 56 =? 01010000 00101001 11101011 기계어 어셈블 LOAD AX 35 LOAD BX 56 ADD AX BX 어셈블리어 컴파일 int i; i = 35 + 56; C++

프로그래밍언어의진화와 C++ 의기원 Assembly 4 1954 Fortran 1958 Algol Martin Richards 1967 BCPL 1964 Basic Ken Tompson 1970 B Ken Tompson 과 Dennis Ritchie 1972 C 비야네스트롭스트룹 Bjarne Stroustrup 1983 C++ 1983 Objective-C 1987 Perl 1991 Visual Basic 1995 PHP 1995 Java 1995 Javascript 4 2000 C#

5 C 언어로부터의발전 절차지향 (Procedural Oriented Programming) 객체지향 (Object Oriented Programming)

6 C++ 언어의개발 C++ 는 1980 년대초에 AT&T 벨연구소의 Bjarne Stroustrup( 덴마크 ) 에의하여개발 C++ 는 C 언어를유지, 확장한것 C with Classes -> C++ C++ 는 C 언어에클래스개념을추가하고이어서가상함수, 연산자중복정의, 다중상속, 템플릿, 예외처리등이기능이차례로추가

7 C++ 의설계철학 엄격한타입검사, 범용언어, 효율적, 이식성 여러가지의프로그래밍스타일을지원 ( 절차지향프로그래밍, 데이터추상화, 객체지향프로그래밍, 일반화프로그래밍 ) 프로그래머가자유롭게선택할수있도록설계 최대한 C 와호환 플랫폼에의존적이거나일반적이지않은특징은제거

8 표준 C++ 프로그램의중요성 C++ 언어의표준 1998 년미국표준원 (ANSI, American National Standards Institute) C++ 언어에대한표준설정 ISO/IEC 14882 문서에작성됨. 유료문서 표준의진화 1998 년 (C++98), 2003 년 (C++03), 2007 년 (C++TR1), 2011 년 (C++11) 표준의중요성 표준에의해작성된 C++ 프로그램 모든플랫폼. 모든표준 C++ 컴파일러에의해컴파일 동일한실행결과보장 운영체제와컴파일러의종류에관계없는높은호환성 비표준 C++ 프로그램 Visual C++, Borland C++ 등컴파일러회사고유의비표준구문 특정 C++ 컴파일러에서만컴파일 호환성결여

9 Multi-Paradigm C++ 다양한프로그래밍패러다임지원으로모든문제를효과적으로해결 일반화, 객체지향, 메타템플릿프로그래밍을이용한코드의쉬운재활용 일반화 (Generic) 객체지향 (OOP) C++ 메타템플릿 C 언어의절차적특징과강력해진함수형디자인 절차적 (Procedural) 함수형 (Functional)

절차적프로그래밍 절차적프로그래밍에서는데이터보다는알고리즘 ( 절차 ) 을중시 10

11 절차적프로그래밍의단점 무조건적인점프문장 -> 난해

12 구조화프로그래밍 무조건적인점프없음 여전히데이터와알고리즘은분리되어있음

객체지향프로그래밍 객체지향프로그래밍에서는데이터와알고리즘이묶여있음 13

14 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법

객체지향의과정 15

16 객체지향의개념들 캡슐화 (encapsulation) 정보은닉 (information-hiding) 상속 (inheritance) 다형성 (polymorphism)

17 표준 / 비표준 C++ 프로그램의비교 표준 C++ 규칙에따라작성된 C++ 프로그램 표준 C++ 규칙에따라작성되지않는비주얼 C++ 프로그램 #include <iostream> int main() { std::cout << "Hello ; return 0; } 모든 C++ 컴파일러에의해컴파일 비주얼 C++ 전용키워드 #include <iostream> int cdecl main() { std::cout << "Hello"; return 0; } 볼랜드 C++ 컴파일러 비주얼 C++ 컴파일러 GNU C++ 컴파일러 볼랜드 C++ 컴파일러 비주얼 C++ 컴파일러 GNU C++ 컴파일러 실행파일 실행파일 실행파일 실행파일 실행파일 실행파일 컴퓨터 컴퓨터 "C declarator"

18 C++ 언어의주요설계목적 C 언어와의호환성 C 언어의문법체계계승 소스레벨호환성 - 기존에작성된 C 프로그램을그대로가져다사용 링크레벨호환성 C 목적파일과라이브러리를 C++ 프로그램에서링크 객체지향개념도입 캡슐화, 상속, 다형성 소프트웨어의재사용을통해생산성향상 복잡하고큰규모의소프트웨어의작성, 관리, 유지보수용이 엄격한타입체크 실행시간오류의가능성을줄임 디버깅편리 실행시간의효율성저하최소화 실행시간을저하시키는요소와해결 작은크기의멤버함수잦은호출가능성 -> 인라인함수로실행시간저하해소

19 C 언어에추가한기능 인라인함수 (inline function) 함수호출대신함수코드의확장삽입 함수중복 (function overloading) 매개변수의개수나타입이다른동일한이름의함수들선언 디폴트매개변수 (default parameter) 매개변수에디폴트값이전달되도록함수선언 참조와참조변수 (reference) 하나의변수에별명을사용하는참조변수도입 참조에의한호출 (call-by-reference) 함수호출시참조전달 new/delete 연산자 동적메모리할당 / 해제를위해 new 와 delete 연산자도입 연산자재정의 (operator overloading) 기존 C++ 연산자에새로운연산정의 제네릭함수와클래스 데이터타입에의존하지않고일반화시킨함수나클래스작성가능

20 C++ 객체지향특성 - 캡슐화 캡슐화 (Encapsulation) 데이터를캡슐로싸서외부의접근으로부터보호 C++ 에서클래스 (class 키워드 ) 로캡슐표현 클래스와객체 클래스 - 객체를만드는틀 객체 - 클래스라는틀에서생겨난실체 객체 (object), 실체 (instance) 는같은뜻 클래스 ( 객체를정의하는틀 ) 객체생성 객체들 - 실체 멤버들 class Circle { private: int radius; // 반지름값 public: Circle(int r) { radius = r; } double getarea() { return 3.14*radius*radius; } }; 원을추상화한 Circle 클래스 원객체들 ( 실체 )

21 C++ 객체지향특성 - 상속 객체지향상속 (Inheritance) 자식이부모의유전자를물려받는것과유사 C++ 상속 객체가자식클래스의멤버와부모클래스에선언된모양그대로멤버들을가지고탄생

22 C++ 객체지향특성 - 다형성 다형성 (Polymorphism) 多形性 하나의기능이경우에따라다르게보이거나다르게작동하는현상 연산자중복, 함수중복, 함수재정의 (overriding) 2 + 3 --> 5 남자 + 여자 --> 남자여자 redcolor 객체 + bluecolor 객체 --> purplecolor 객체 + 연산자중복 void add(int a, int b) {... } void add(int a, int b, int c) {... } void add(int a, double d) {... } add 함수중복 함수재정의 ( 오버라이딩 )

23 정리 ) C 와 C++ C C++ 프로그래밍방식구조적프로그래밍객체지향프로그래밍 프로그램분할방법기능객체 구현단위함수클래스 규모 중소형프로그램작성에적합 중대형프로그램작성에적합

24 참고문헌 C++ ESPRESSO, 천인국저, 인피니티북스, 2011 김용성의 C&C++ 완벽가이드 (2nd Edition), 영진출판사, 2011 명품 C++ Programming, 황기태, 생능출판사, 2018

Q&A 25