고급객체지향프로그래밍강의보조자료 이영구교수님 고급객체지향프로그래밍
Contents 1. Visual Studio 2010 사용법 1-1. Solution, Project 생성방법 1-2. Build & 실행방법 참고 : 시작프로젝트로설정하는방법 1-3. 빌드 ( 컴파일 ) 시에러메시지로이동, 확인하는방법 1-4. 디버깅방법 참고 : 컴파일, 링크, 빌드란? 1-5. 디버깅모드와 Release 모드 1-6. 함수들에대한 reference 보는방법 1-7. 외부라이브러리설정방법 2. 실습및과제제출방법 2-1. 제출방법 2
1-1. Solution, Project 생성방법 Solution, Project 생성방법 Visual Studio 에서는솔루션과프로젝트라는개념적컨테이너를구현하여 IDE( 통합개발환경 ) 에서광범위한도구, 디자이너, 템플릿및설정을적용할수있도록합니다. Solution 이란? - 솔루션은관련프로젝트들의그룹으로구성되어폴더형태로제공이되며, 해당프로젝트그룹에서작업을수행할수있습니다. 솔루션에는전체적으로정의할수있는메타데이터와파일및하나이상의프로젝트가포함됩니다. Project 란? - 프로젝트에는소스파일집합과관련메타데이터 ( 예 : 구성요소참조, 빌드지침 ) 가포함되고, 프로젝트를빌드하면일반적으로하나이상의출력파일이만들어집니다. [ 출처 ] http://msdn.microsoft.com/ko-kr/library/df8st53z.aspx 3
1-1. Solution, Project 생성방법 Solution, Project 생성방법 Visual Studio 2010 을실행합니다. 4
1-1. Solution, Project 생성방법 Solution, Project 생성방법 프로젝트를생성하기위해 [ 파일 ]->[ 새로만들기 ]->[ 프로젝트 ] 순으로클릭합니다. 5
1-1. Solution, Project 생성방법 Solution, Project 생성방법 새프로젝트 만들기 콘솔응용프로그램이란? 명령프롬프트와같은콘솔창을기반으로작동하는프로그램 (1) 실습및과제는콘솔응용프로그램으로작성합니다. (2) 프로젝트의이름을작성합니다. (ex: lab01_1) (4) 솔루션디렉토리의변경을원할시 [ 찾아보기 ] 를눌러경로를변경해주세요. (3) 솔루션의이름을작성합니다. (ex: lab01) 6
1-1. Solution, Project 생성방법 Solution, Project 생성방법 Win32 응용프로그램마법사 솔루션이름 창이뜹니다. [ 다음 ] 버튼을누르세요. 7
1-1. Solution, Project 생성방법 Solution, Project 생성방법 추가옵션중, 빈프로젝트옵션에체크해주세요. 그후마침을누르면프로젝트가생성됩니다. 8
1-1. Solution, Project 생성방법 Solution, Project 생성방법 현재프로젝트만생성된상태이므로, 소스코드를추가하기위해 [ 소스파일 ]->[ 추가 ]->[ 새항목 ] 을클릭합니다. 9
1-1. Solution, Project 생성방법 Solution, Project 생성방법 현재프로젝트만생성된상태이므로, 소스코드를추가하기위해 [ 소스파일 ]->[ 추가 ]->[ 새항목 ] 을클릭합니다. (1) C++ Language 를사용할것이므로, C++ 파일 (.cpp) 을선택합니다. (2) 소스파일의이름을지정해줍니다. (ex: main) (3) 추가버튼을클릭합니다. 10
1-1. Solution, Project 생성방법 Solution, Project 생성방법 솔루션과프로젝트, 소스파일까지생성완료. 솔루션탐색기영역입니다. 생성한솔루션 - 프로젝트 - 소스파일의계층구조를확인할수있습니다. 생성한소스파일의편집화면이며, 이영역에실습및과제를구현하시면됩니다. 11
1-1. Solution, Project 생성방법 이미생성된 Solution 내에새프로젝트생성하기 솔루션 lab01 을클릭한후마우스우버튼클릭 ->[ 추가 ]->[ 새프로젝트 ] 순으로클릭한후, 5page 를참조하여동일하게작성합니다. 12
1-1. Solution, Project 생성방법 여러프로젝트중실행할프로젝트로활성화시키는방법 실행하고자하는프로젝트의이름에마우스오른쪽버튼을클릭 [ 시작프로젝트로설정 (A)] 을클릭하면프로젝트명이진한글씨체로변경되면서, 빌드시해당프로젝트가실행된다. 13
1-2. 빌드 & 실행방법 컴파일, 링크, 빌드란? 컴파일 (compile) 이란? 특정프로그래밍언어 (C, C++ 등..) 를사용하여컴퓨터가이해할수있는기계어코드 ( 이진코드 ) 로변환하는작업 링크 (link) 란? 대부분의애플리케이션들은반복적인코드 ( 기능 ) 등을라이브러리화하여사용한다. 이러한라이브러리들을구현한애플리케이션과연결해주는작업이링크이다. 빌드 (build) 란? 컴파일 + 링크 컴퓨터에서실행가능한형태의기계어코드출력 14
1-2. 빌드 & 실행방법 빌드방법 [ 빌드 ]->[ 프로젝트명 빌드 ] 를클릭합니다 빌드단축키 F7 프로젝트를빌드하기위해 [ 프로젝트명 빌드 ] 를클릭합니다 빌드성공 15
1-2. 빌드 & 실행방법 실행방법 [ 디버그 ]->[ 디버깅하지않고시작 ] 을클릭합니다. 단축키 : Ctrl + F5 (1) [ 디버깅하지않고시작 ] 을누를시실행가능 (2) 예 (Y) 버튼클릭 ( 빌드후실행 ) 16
1-3. 빌드 ( 컴파일 ) 시에러메시지로이동, 확인하는방법 실행방법 실행성공과실패의예 실행성공실행실패 오류가발생하여빌드를실패하였으므로, 아니요 (N) 버튼을클릭 빌드성공 다음에러메시지로이동 ( 단축키 F4) 를이용하여어떤에러인지확인후디버깅 수정 17
1-4. 디버깅방법 디버깅이란? 컴퓨터프로그램에서잘못된부분, 즉버그를찾아서수정하거나또는에러를피해나가는처리과정이다. 디버깅도구를사용하면각개발단계에서의잘못된코딩부분을쉽게찾아낼수있으며, 몇몇프로그램개발패키지에는프로그램작성시그때그때잘못된부분을검사할수있는기능이포함되어있다. Ex) Visual studio 는디버거를자체내장하고있는통합개발환경이다. 중단점, 프로시저단위로실행, 조사식등의디버깅기능을제공한다. [ 출처 ] http://www.wpclipart.com/computer/humour/debugging.png.html 18
1-4. 디버깅방법 디버깅방법 중단점 (breakpoint) 으로디버깅하기 중단점이란? - 중단점이란프로그램의실행을중지하고자하는지점을말한다. - 프로그램의동작을관찰하려면일단실행을멈추어야하므로중단점을설정 ( 단축키 F9) 하는일은디버깅작업의시작이라할수있다. - 중단점을설정해놓고디버깅을시작하면, 중단점에서프로그램의실행이잠시중단된다. 이상태에서단계실행 ( 단축키 F10, F11) 및변수의상태확인, 변경을할수있다. - 에러가의심되는부분에중단점을설정하고, 단계실행을통해변수의값이나제어구조의흐름을따라가면서어디가잘못되었는지관찰할수있다. 19
1-4. 디버깅방법 디버깅방법 중단점 (breakpoint) 설정및실행 중단하고자하는지점을클릭 (3) 중단점까지수행된결과를확인할수있음 (1) 중단시키고싶은지점을클릭 ( 혹은단축키 F9) (2) 디버깅시작 (F5) 시해당지점에서수행을멈춤. 20
1-4. 디버깅방법 디버깅방법 중단점이후, 단계실행 ( 단축키 F10, F11, shift+f11) 을이용하여디버깅 프로시저단위실행 (F10) 배열이아직초기화되지않음 프로시저단위실행 ( 단축키 F10) 을누르면, 다음줄이수행되어배열이 0 으로초기화됨 프로시저단위실행 (F10) 을한번더누르면, 함수의내부로진입하지않고바로다음라인으로넘어간다 21
1-4. 디버깅방법 디버깅방법 중단점이후, 단계실행 ( 단축키 F10, F11, shift+f11) 을이용하여디버깅 한단계씩코드실행 (F11) 배열이아직초기화되지않음한단계씩코드실행 ( 단축키 F11) 누르면, 다음줄이수행되어배열이 0 으로초기화됨 한단계씩코드실행 ( 단축키 F11) 수행시, 함수의내부로진입하여한줄씩수행한다. 22
1-4. 디버깅방법 디버깅방법 중단점이후, 단계실행 ( 단축키 F10, F11, shift+f11) 을이용하여디버깅 프로시저로진입하였을때, 해당함수를빠져나가고싶다면프로시저벗어나기 ( 단축키 shift+f11) 를활용 F11 수행시, 함수의내부로진입하여한줄씩수행한다. Shift+F11 수행시, 바로프로시저의바깥으로빠져나간다. 23
1-4. 디버깅방법 조사식사용법 디버그모드에서해당지점까지수행되었을때변수값, 변수의메모리번지등을확인하기위해조사식을활용한다. 중단점을설정하여빌드후실행 작업창하단의조사식의왼쪽이름에확인하고자하는변수의이름등을적어값을확인 ( 수행시점에서의값을확인할수있다 ) 단계실행을통해한줄을수행한다. 단계실행에의해값이바뀐경우, 값의색이빨간색으로변경된다. a[1]++; 줄이수행되어조사식에서 a[1] 의값이변경됨. 24
1-5. 디버깅모드와 Release 모드 디버그모드 vs 릴리즈모드? 디버그모드 실행파일에디버깅정보를삽입하여언제든지디버깅을할수있도록하며, 프로젝트디렉토리아래에 Debug 서브디렉토리에실행파일을만들어준다. 디버깅정보가들어가있기때문에실행파일의상태를확인할수있다. - [ 출처 ] http://jongkok4.net/10 릴리즈모드 일체의디버깅정보를삽입하지않을뿐만아니라코드를최적화하여실행파일크기를최대한줄여준다. 릴리즈모드로만든실행파일로는디버깅을할수없지만속도나크기면에서는디버그모드로만든실행파일보다월등히유리하다. 모든버그를잡고개발이완료되었을때는릴리즈모드로컴파일해야한다. - [ 출처 ] http://jongkok4.net/10 이부분을조작하여 Debug 모드와 Release 모드를변경할수있다. 25
1-6. 함수들에대한 reference 보는방법 Reference 보는방법 함수의기능, 인자, 반환형, 사용법등의정보를알고싶을때 msdn 을활용. 도움말 (F1) (1) 레퍼런스를확인하고자하는함수명을블락지정합니다. (2) F1 을누르면해당함수에대한레퍼런스가열립니다. ( 네트워크연결필요 ) 26
1-7. 외부라이브러리설정방법 빌드전필요한설정 프로젝트에라이브러리를설정하는방법 (2) 속성페이지에서그림과같이빨간색으로표시된구성속성의 C/C++ 메뉴를선택파란색으로표시된추가포함디렉터리에.h 파일 ( 헤더파일 ) 의경로를추가하고, 여러개를추가할경우세미콜론 (;) 으로구분합니다. (1) 프로젝트명에오른쪽버튼을클릭한후속성 (R) 클릭 (3) 빨간색으로표시된구성속성 -> 링커 -> 일반메뉴에서파란색으로표시된추가라이브러리디렉터리에 Include 폴더와같이추가해줍니다. [ 출처 ] http://blog.secmem.org/69 27
1-7. 외부라이브러리설정방법 빌드전필요한설정 모든프로젝트에공통된라이브러리를설정하는방법 (2) 속성관리자탭이나타나게된다. 파란색으로표시된프로젝트를선택하며, 왼쪽의작은삼각형을클릭하여 Debug Win32 폴더를선택후 ( 디버그모드의경우 ) Microsoft.Cpp.Win32 를선택하고우클릭하여속성메뉴를선택합니다. (3) 속성페이지를연후, 27page 의내용을참고하여라이브러리의경로를설정합니다. (1) 보기 (V) 메뉴의속성관리자 (M) 선택 [ 출처 ] http://blog.secmem.org/69 28
2-1. 실습및과제제출방법 솔루션및프로젝트생성방법 1-1 을참조하여솔루션및프로젝트생성하되, 가능하다면솔루션명과프로젝트명을다음과같이지정한다. 솔루션명 : lab#, hw# (#= 순번 ) - Ex) lab01 ( 실습 1 번의모든문제를포함하는솔루션의이름 ) 프로젝트명 : lab#_@, hw#_@ (@= 실습내문제번호 ) - Ex) lab01_03 ( 실습 1 번의 3 번째문제 ) 매주진행되는실습은한솔루션안에여러개의프로젝트로구분하여작성한다. ( 오른쪽그림과같이 ) 29
2-1. 실습및과제제출방법 솔루션구성 솔루션이름을 lab01 로가정하였을때, 솔루션폴더는다음과같은파일들로구성됩니다. (Visual Studio 2010 기준 ) L a b 0 1 솔루션 lab01.opensdf lab01.sdf lab01.suo lab01.sln 프로젝트 1 프로젝트 2 그외 소스코드 Debug 그외 소스코드 Debug 프로젝트폴더 솔루션폴더 폴더 Debug ipch 프로젝트 N 그외 소스코드 Debug 31
2-1. 실습및과제제출방법 솔루션구성 X 표시된파일들을삭제한후솔루션폴더를압축합니다. L a b 0 1 솔루션 lab01.opensdf lab01.sdf lab01.suo lab01.sln 프로젝트 1 프로젝트 2 그외 소스코드 Debug 그외 소스코드 Debug 프로젝트폴더 솔루션폴더 폴더 Debug ipch 프로젝트 N 그외 소스코드 Debug 32