12 장 템플릿 (template) Sung-Min Jung Internet Management Technology Lab. School of Information & Communication Engineering, Sungkyunkwan Univ. 300 Cheoncheon-dong,

Slides:



Advertisements
Similar presentations
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Advertisements

명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
대구동신교회 교육위원회 대구동신교회 교육위원회 문서번호 : 교육위원회 시행일자 :
어서와 Java는 처음이지! 제3장선택과 반복.
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제3장 배열과 포인터.
2장 닷넷 프레임워크.
C++ Espresso 제1장 기초 사항.
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
14주차 1교시 강화계획 [학습목표] 1. 강화계획의 정의를 안다 [학습내용] 1. 단순한 강화계획 2. 간헐적 강화 3. 복합 계획 4. 선택과 대응법칙 [사전학습] 강화계획이 일어날 수 있는 사례를 생각해본다.
연장근로와 야간·휴일근로 김영호 노무사 나눔 노사관계연구소 소장 연세대 일반대학원 박사 수료 고려사이버대 법학과 외래교수
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
실전 프로젝트 2 : 숫자야구 숫자 야구를 구현해보자.
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
Chapter 11 – 예외 처리 Outline 11.1 설계 쟁점 11.2 Pl/I의 예외 처리 11.3 Ada의 예외 처리
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
명품 C++ 13장 예외 처리와 C 언어와의 링크 지정.
8. 객체와 클래스 (기본).
제7장 제어구조 I – 식과 문장.
10장 템플릿과 표준 템플릿 라이브러리(STL)
배열, 포인터, 참조 배열은 같은 형을 가지는 변수들의 묶음이다..
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
Data structures 01.2: C++ classes 동의대학교 멀티미디어공학과 이광의교수.
Data structures 02.2:mathematical induction 동의대학교 멀티미디어공학과 이광의 교수.
Data structures 02.3:programming recursive functions
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
C ++ 프로그래밍 시작.
김 정 석 Web Programming 김 정 석
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
스택(Stack) 김진수
프로그램과 데이터의 구조화 Organizing programs and data
14. 예외처리.
자바 5.0 프로그래밍.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Chapter 3 클래스. 최호성.
제14장 예외처리와 템플릿 예외 처리의 개요를 학습한다. 예외 처리를 적용할 수 있다. 템플릿의 개념을 이해한다.
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
과학 탐구 토론 대회 1학년 2반 박승원 1학년 5반 권민성.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
가상함수와 추상 클래스.
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터공학실습(I) 3주 인공지능연구실.
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
자바 5.0 프로그래밍.
멤버 함수인 operator+()가 실행, 또는 전역 함수인 operator+()가 실행 Point p3 = p1+p2; 에서
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
3장,4장 발표 서정우.
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
C# 10장. 참조형.
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
10장 템플릿과 표준 템플릿 라이브러리(STL)
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
동계성수기 예약 신청서 강원도 춘천시 남산면 북한강변길 688 엘 리 시 안 강 촌
새로운 타입 정의하기 Defining new types
노인학대예방 교육 교육강사 시 설 장 송나겸 보성실버센터.
배열, 포인터, 함수 Review & 과제 1, 2.
매출채권보험 제도 안내 4대 효과 중소기업 사장님들의 든든한 우산 판매위험 보장 사후관리 매출증대 대출금리 우대 매출채권보험
Presentation transcript:

12 장 템플릿 (template) Sung-Min Jung Internet Management Technology Lab. School of Information & Communication Engineering, Sungkyunkwan Univ. 300 Cheoncheon-dong, Jangan-gu, Suwon-si, Gyeonggi-do, Korea. Tel : , Fax :

컴퓨터 공학 실습 템플릿 (template) 에 대한 이해  IntroTemplate1.cpp int Add(int a, int b) { return a+b; } template T Add(T a, T b) { return a+b; } 템플릿화

컴퓨터 공학 실습 함수 템플릿  함수 템플릿 vs. 템플릿 함수  둘 이상의 타입에 대해서 템플릿화  IntroTemplate3.cpp  함수 템플릿의 특수화  SepciFuncTemplate2.cpp template int SizeOf(T a) { return sizeof(a); } template<> int SizeOf(char* a) { return strlen(a); } 특수화

컴퓨터 공학 실습 클래스 템플릿 class Data { int data; public: Data(int d){ data=d; } void SetData(int d){ data=d; } int GetData(){ return data; } }; template class Data { T data; public: Data(T d){ data=d; } void SetData(T d){ data=d; } T GetData(){ return data; } }; 템플릿화 int main(void) { Data d1(0); d1.SetData(10); Data d2('a');.....

컴퓨터 공학 실습 2 5 template class Data { T data; public: Data(T d){ data=d; } void SetData(T d){ data=d; } T GetData(){ return data; } }; 선언 / 정의 분리 template class Data { T data; public: Data(T d); void SetData(T d); T GetData(); }; template Data :: Data(T d){ data=d; } template void Data :: SetData(T d){ data=d; } template T Data :: GetData(){ return data; } 12-3 클래스 템플릿

컴퓨터 공학 실습 템플릿의 원리 이해 그림 12-2

13 장 예외처리 Sung-Min Jung Internet Management Technology Lab. School of Information & Communication Engineering, Sungkyunkwan Univ. 300 Cheoncheon-dong, Jangan-gu, Suwon-si, Gyeonggi-do, Korea. Tel : , Fax :

컴퓨터 공학 실습 기존의 예외처리 방식 int main(void) { int a, b; cout<<" 두개의 숫자 입력 : "; cin>>a>>b; cout<<"a/b 의 몫 : "<<a/b<<endl; cout<<"a/b 의 나머지 : "<<a%b<<endl; return 0; } int main(void) { int a, b; cout<<" 두개의 숫자 입력 : "; cin>>a>>b; if(b==0){ cout<<" 입력오류 !"<<endl; } else { cout<<"a/b 의 몫 : "<<a/b<<endl; cout<<"a/b 의 나머지 : "<<a%b<<endl; } return 0; }  예외 처리  일반적이지 않은 프로그램의 흐름의 처리  에러가 아니다 !

컴퓨터 공학 실습 C++ 의 예외처리 메커니즘  try  catch try { /* 예외 발생 예상 지역 */ } catch( 처리 되어야 할 예외의 종류 ) { /* 예외를 처리하는 코드가 존재할 위치 */ }

컴퓨터 공학 실습 C++ 의 예외처리 메커니즘  try & catch  throw try { /* 예외 발생 예상 지역 */ } catch( 처리 되어야 할 예외의 종류 ) { /* 예외를 처리하는 코드가 존재할 위치 */ } throw ex; // ex 를 가리켜 보통은 그냥 “ 예외 ” 라고 표현을 한다.

컴퓨터 공학 실습 C++ 의 예외처리 메커니즘 그림 13-2

컴퓨터 공학 실습 C++ 의 예외처리 메커니즘 int main(void) { int a, b; cout<<" 두개의 숫자 입력 : "; cin>>a>>b; try{ if(b==0) throw b; cout<<"a/b 의 몫 : "<<a/b<<endl; cout<<"a/b 의 나머지 : "<<a%b<<endl; } catch(int exception){ cout<<exception<<" 입력."<<endl; cout<<" 입력오류 ! 다시 실행 하세요."<<endl; } return 0; } 그림 13-3

컴퓨터 공학 실습 C++ 의 예외처리 메커니즘  OOhandlingflow.cpp  예외가 발생하면 try 블록의 나머지 부 분 무시  예외 처리 후 catch 블록 이후부터 실행 int main(void) { int a, b; cout<<" 두개의 숫자 입력 : "; cin>>a>>b; try{ cout<<"try block start"<<endl; if(b==0) throw b; cout<<"a/b 의 몫 : "<<a/b<<endl; cout<<"a/b 의 나머지 : "<<a%b<<endl; cout<<"try block end"<<endl; } catch(int exception){ cout<<"catch block start"<<endl; cout<<exception<<" 입력."<<endl; cout<<" 입력오류 ! 다시 실행 하세요."<<endl; } cout<<"THANK YOU!"<<endl; return 0; }

컴퓨터 공학 실습 Stack Unwinding( 스택 풀기 ) int divide(int a, int b); // a/b 의 몫만 반환 int main(void) { int a, b; cout<<" 두개의 숫자 입력 : "; cin>>a>>b; try{ cout<<"a/b 의 몫 : "<<divide(a, b)<<endl; } catch(int exception){ cout<<exception<<" 입력."<<endl; cout<<" 입력오류 ! 다시 실행 하세요."<<endl; } return 0; } int divide(int a, int b) { if(b==0) throw b; return a/b; } 그림 13-5 그림 13-4

컴퓨터 공학 실습 Stack Unwinding( 스택 풀기 ) 그림 13-7 그림 13-8

컴퓨터 공학 실습 Stack Unwinding( 스택 풀기 )  예외가 처리되지 않으면  stdlib.h 에 선언되어 있는 abort 함수의 호출에 의해 프로그램 종료  unhandle_exp1.cpp, unhandle_exp2.cpp  전달되는 예외 명시  그 이외의 예외가 전달되면 abort 함수의 호출 int fct(double d) throw (int, double, char *) {..... }

컴퓨터 공학 실습 2 17  하나의 try, 여러 개의 catch  catch_understand.cpp,  catch_over1.cpp, catch_over2.cpp Stack Unwinding( 스택 풀기 ) int main(void) { int num; cout<<"input number: "; cin>>num; try{ if(num>0) throw 10; // int 형 예외 전달. else throw 'm'; // char 형 예외 전달. } catch(int exp){ cout<<"int 형 예외 발생 "<<endl; } catch(char exp){ cout<<"char 형 예외 발생 "<<endl; } return 0; }

컴퓨터 공학 실습 예외상황을 나타내는 클래스의 설계  예외 상황을 나타내는 클래스 & 객체  예외 클래스, 예외 객체  일반 클래스, 객체와 다르지 않다.  예외 상황을 알려주기 위한 용도로 사용  catch_over1.cpp  예외는 클래스의 객체로 표현되는 것이 일반적

컴퓨터 공학 실습 예외를 나타내는 클래스와 상속  catch 블록에 예외가 전달되는 방식  inheri_catch1.cpp, inheri_catch2.cpp 그림 13-9 그림 13-10

컴퓨터 공학 실습 new 연산자에 의해 전달되는 예외  bad_alloc  new 연산자가 메모리 공간 할당을 실패 했을 때 발생시키는 예외 using std::bad_alloc; int main(void) { try{ int i=0; while(1){ cout<<i++<<" 번째 할당 "<<endl; double(*arr)[10000]=new double[10000][10000]; } catch(bad_alloc ex){ ex.what(); cout<<endl<<"END"<<endl; } return 0; }

컴퓨터 공학 실습 예외처리에 대한 나머지 문법 요소  모든 예외 처리 catch 블록  예외 다시 던지기 (re_throw.cpp) try{..... } catch( … ) { // … 선언은 모든 예외를 다 처리 하겠다는 선언..... } try{..... } catch(Exception& t) {..... throw; }