Slide 1

Similar documents
Slide 1

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

Microsoft PowerPoint - C++ 5 .pptx

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

Slide 1

슬라이드 1

Microsoft PowerPoint - Chapter 6.ppt

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

설계란 무엇인가?

C++ Programming

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

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

쉽게 풀어쓴 C 프로그래밍

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

슬라이드 1

PowerPoint Presentation

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

PowerPoint Template

Slide 1

쉽게 풀어쓴 C 프로그래밍

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

Microsoft PowerPoint - chap06-2pointer.ppt

설계란 무엇인가?

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

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

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

Microsoft PowerPoint - Chapter 1-rev

쉽게 풀어쓴 C 프로그래밍

C프로-3장c03逞풚

Microsoft PowerPoint - chap12-고급기능.pptx

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

Slide 1

C++ Programming

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

C++ Programming

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

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

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

PowerPoint Template

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

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint Presentation

PowerPoint Template

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

Slide 1

Microsoft PowerPoint - CSharp-10-예외처리

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

설계란 무엇인가?

프입2-강의노트-C++기초

Blog

Microsoft PowerPoint - Chap12-OOP.ppt

C++ Programming

C언어 및 실습 C Language and Practice

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

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

PowerPoint Presentation

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

080629_CFP °ø°³¿ë.hwp

JAVA PROGRAMMING 실습 02. 표준 입출력

프입2-강의노트-const-friend-static

Slide 1

C++ Programming

Microsoft PowerPoint - chap08.ppt

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

DLL(Dynamic Linked Library)

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

C++ Programming

1. 기본형의형변환복습 C/C++ 형변환의종류 자동형변환 ( 묵시적형변환 ) 강제형변환 ( 명시적형변환 ) 기본형의자동형변환의예 1. 배열 to 포인터변환 배열명은해당배열의첫번째원소의 주소로변환됨 int ary[10]; int *pary = ary; 2. 함수 to 포

Slide 1

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

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

PowerPoint 프레젠테이션

Chapter #01 Subject

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

OCW_C언어 기초

제 1 장 기본 개념

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

Microsoft PowerPoint - chap08-1 [호환 모드]

Microsoft PowerPoint - Chapter8.pptx

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

슬라이드 1

슬라이드 1

Microsoft PowerPoint - 02-Class Review.pptx

설계란 무엇인가?

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

Microsoft PowerPoint - 2강

Microsoft PowerPoint - chap11-포인터의활용.pptx

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Programming hwp

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

Microsoft PowerPoint - 05장(함수) [호환 모드]

02장.배열과 클래스

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

<4D F736F F F696E74202D204C BAB8C3E6BCB3B8ED202D20C7C1B7CEB1D7B7A1B9D6C0DBBCBAB0FAC1A42C C F>

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

Transcription:

SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 11. 분리컴파일과 네임스페이스 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr

분리컴파일 프로그램부분 분리된파일에저장 분리되어컴파일 프로그램이실행되기전에상호간에링크됨 클래스정의 사용프로그램에서분리됨 클래스라이브러리생성 많은다른프로그램에재사용됨 사전정의라이브러리와유사 11-2

클래스분리 클래스독립성 클래스정의분리 인터페이스 클래스구현분리 두개의파일에존재 구현부분의변경 해당파일만변경 클래스정의부의변경은필요없음 사용 ( 응용 ) 프로그램의변경도필요없음 11-3

캡슐화리뷰 캡슐화원칙 : ( 프로그래머에게 ) 어떻게사용되는가 와 구현의세부사항 을분리 완전한분리 구현부분을수정해도 다른프로그램에는영향이없음 OOP 기본원칙 11-4

캡슐화규칙 분리규칙 : 1. 모든멤버변수는 private 2. 클래스의기본함수 : public 멤버함수 프렌드또는일반함수 오버로딩된함수 클래스정의와함수원형의그룹화 클래스인터페이스 3. 클래스사용자에게클래스구현을감춤 11-5

클래스분리 인터페이스파일 함수의원형을포함하는클래스의정의부분 사용자는인터페이스파일을보고프로그래밍 분리된컴파일단위 구현파일 멤버함수정의부분 분리된컴파일단위 11-6

클래스헤더파일 클래스인터페이스는헤더파일에위치 *.h 클래스를사용하는프로그램은헤데파일을 include #include "myclass.h" 사용자정의파일 작업디렉토리 라이브러리 includes <iostream> < > 사전정의라이브러리헤더파일지정 라이브러리디렉토리 11-7

클래스구현파일 클래스구현부분은 *.cpp 파일에존재 일반적으로인터페이스파일과구현파일은같은이름을사용 myclass.h, myclass.cpp 클래스의모든멤버함수의정의 구현파일은반듯이클래스헤더파일을 include 해야함 *.cpp 파일에는일반적으로실행코드가포함됨 예 ) 함수정의, main() 함수 11-8

클래스파일 클래스헤더파일은다음의파일에의해 #included 됨 : 구현파일 프로그램파일 응용파일또는드라이버파일이라고도함 파일의구성은시스템의존적 일반적으로 IDE 는 project 나 workspace 를가짐 구현파일과헤더파일의위치는 IDE 에따라다름 11-9

헤더파일의중복컴파일 헤더파일 일반적으로여러번 include 됨 클래스인터페이스는클래스구현파일과프로그램파일에서 include 됨 한번만컴파일되게해야함! 어떠한곳에서먼저컴파일될지장담할수없음 선행처리기 (preprocessor) 사용 컴파일러에게헤더파일을한번만 include 하라고알려줘야함 11-10

#ifndef 사용 헤더파일구조 : #ifndef FNAME_H #define FNAME_H //Contents of header file #endif FNAME 은일관성과가독성을위해일반적으로파일이름을사용 위의구문은헤더파일의중복정의를방지 11-11

기타라이브러리파일 라이브러리에클래스많이있는것은아님 관련함수 원형 헤더파일 정의 구현파일 기타자료형정의 구조체, typedef 헤더파일 상수선언 헤더파일 11-12

네임스페이스 네임스페이스정의 : 네임정의의집합 클래스정의 변수선언 프로그램에서많은클래스와함수를사용 일반적으로중복된이름이존재 네임스페이스는이러한충돌을방지 On/Off 가능 충돌 Off 11-13

using 지시자 using namespace std; std 네임스페이스에있는모든정의의사용가능 사용자가 std 네임스페이스를사용하지않은다면? cout, cin 등을다른의미로사용가능 cout, cin 의재정의필요 나머지도재정의가능 11-14

Namespace std 많은표준라이브러리파일에정의된모든네임을포함 예 : #include <iostream> cin, cout, etc. 프로그램은네임을모름 프로그램에서이러한네임으로접근하기위해서는 std 네임스페이스를명시해야함 11-15

전역네임스페이스 모든코드는특정한네임스페이스에속함 명시하지않으면 전역네임스페이스 using 지시자가필요없음 전역네임스페이스는항상사용가능 묵시적으로 using 지시자사용 11-16

중복된네임 복수의네임스페이스사용 전역과 std 가일반적으로사용 네임정의가양쪽에모두존재할경우 에러 사용시어떠한네임스페이스에위치하는지명시해야함 11-17

네임스페이스명시 두개의네임스페이스 NS1, NS2 두개모두 void myfunction() 를가질경우 { using namespace NS1; myfunction(); } { using namespace NS2; myfunction(); } using 지시자는블록영역을가짐 11-18

네임스페이스생성 네임스페이스그룹화 : namespace Name_Space_Name { Some_Code } 블록내에정의된모든정의는 Name_Space_Name 소속 사용 : using namespace Name_Space_Name; 11-19

네임스페이스생성예제 함수선언 : namespace Space1 { void greeting(); } 함수정의 : namespace Space1 { void greeting() { cout << "Hello from namespace Space1.\n"; } } 11-20

using 선언 사용가능한네임스페이스에서유일한네임을생성 다음의예 : 네임스페이스 NS1, NS2 각각은함수 fun1(), fun2() 을가짐 선언구문 : using Name_Space::One_Name; 각각의네임이어떠한네임스페이스소속인지명시 : using NS1::fun1; using NS2::fun2; 11-21

using 선언과지시자사용 차이점 : using 선언 네임스페이스내에하나의네임만사용 같은네임스페이스내의다른네임을사용할수없음 using 지시자 네임스페이스내의모든네임의사용가능 사용할수있는잠재적인네임들을알림 11-22

이름제한 (Qualifying Name) 네임이어느네임스페이스소속인지명시가능 :: 사용 단한번또는적은사용 NS1::fun1(); 함수 fun() 는네임스페이스 NS1 소속임을명시 매개변수에유용 : int getinput(std::istream inputstream); 매개변수는 std 네임스페이스 istream 코드에 using 지시자와 using 선언을제거할수있음 11-23

네임스페이스명명 유일한문자열포함 예 ) 자신의성 다른네임스페이스와중복을줄여줌 종종같은프로그램을위해복수의프로그래머가네임스페이스를정의 네임스페이스명은구분되어야함 고려하지않으면 에러발생 11-24

디스플레이 11.6 네임스페이스안에서클래스정의하기 ( 헤더파일 ) 4-25

디스플레이 11.7 네임스페이스안에서클래스정의하기 ( 구현파일 ) 4-26

명명되지않은네임스페이스 컴파일단위정의 : 파일단위로 예 ) 구현파일, 헤더파일 모든컴파일단위는명명되지않은네임스페이스의사용가능 같은방식으로사용, 하지만네임이없음 컴파일단위에서만사용가능 명명되지않은네임스페이스의영역은컴파일단위 helping function 등의감춤에사용 11-27

전역네임스페이스 vs. 명명되지않은네임스페이스 같지않음 전역네임스페이스 : 네임스페이스그룹화를하지않음 전역영역 명명되지않은네임스페이스 : 네임스페이스단위를네임없이그룹화 지역영역 11-28

내포된네임스페이스 구문 namespace S1 { namespace S2 { void sample() { } } 네임스페이스를모두명시 : S1::S2::sample(); 11-29

도움함수감추기 helping function: 저수준도구 public 섹션에위치시키지않음 두가지방법 : private 멤버함수 호출객체사용시 명명되지않은네임스페이스에위치! 함수가호출객체를사용하지않을경우 코드를명확하게함 ( 디스플레이 11.2) 11-30

요약 1 클래스정의와구현부의분리가능 분리된파일 분리컴파일단위 네임스페이스는클래스정의및변수선언들과같은이름정의의집합 네임스페이스에서이름을사용하는방법 : Using 지시어 Using 선언 이름제한 (qualifying name) 11-31

요약 2 네임스페이스정의는네임스페이스그룹내에존재 명명되지않은네임스페이스 지역네임정의에사용 컴파일단위의영역을가짐 전역네임스페이스 특정한네임스페이스에그룹화되지않았을경우 전역영역 11-32

Q&A 4-33