Overview C# 프로그램기초 의구성요소 C# 프로그램기초 C# 콘솔프로그램컴파일과링크및실행 321190 2015 년가을학기 9/4/2015 박경신 2 2015 통합개발환경 메뉴및툴바 4 The Editor 솔루션탐색기 편집창 속성창 도구상자 VB/C/C++/C# 코드를작성하고수정하기위한환경 The Compiler 소스코드를오브젝트코드로변환 The Linker 수행에필요한모듈들을결합 The Libraries 미리작성되어진루틴들의집합 출력창 상태표시줄 3 4
5 Project 프로그램을구성하기위한모든것을담고있는것 프로젝트폴더가생성 프로젝트의정보는 XML 형태로.csproj 에저장 Solution 특정문제를해결하기위한모든프로그램들과다른리소스들의집합 하나이상의 Project 의집합 Toolbox ( 도구상자 ) 윈도우컨트롤 웹폼컨트롤 데이터컨트롤 자주사용되는코드등록가능 컨트롤추가방법 컨트롤을폼으로드래그, 도구상자의컨트롤더블클릭 5 XML 데이터교환의표준으로사용 데이터교환시 SOAP 이용 XML과 XSD를간단하게작성할수있도록지원 Server Explorer ( 서버탐색기 ) 서버상태리소스를한눈에보임 현재사용중인모듈과프로세스의리스트, 서비스항목을볼수있음
Code Editor ( 코드편집기 ) 코딩시라인별오류를알려줌 프로시저별로코드내용을펼치거나줄여서볼수있음 Solution Explorer ( 솔루션탐색기 ) 솔루션 프로젝트보다큰범위, 연관된다수의프로젝트포함가능 해당솔루션을구성하는프로젝트들과각각의프로젝트를구성하는네임스페이스, 클래스, 소스코드등을디렉토리화하여관리가능 팝업메뉴를통한기능지원 Class View ( 클래스뷰 ) 클래스에대한정보표시, 편집시사용 Property Window ( 속성창 ) 컨트롤의속성과이벤트에대한설정기능 기본내용에서바뀐부분은볼드체로표시 컨트롤더블클릭시이벤트핸들러에자동으로바인딩기능지원
Help ( 도움말 ) 현재개발자가시행하고있는작업내용을자동으로보여줌 VS2010 부터선호하는웹브라우저를사용하여온라인또는오프라인으로문서를볼수있으며, 최신문서를필요에따라다운로드하고단순화된목차를사용하여탐색가능 Task ( 작업목록 ) & Output Window ( 출력창 ) 프로젝트가컴파일될때의정보를표시 직접입력및 VS.NET에의한자동생성 버튼에대한작업시동적으로버튼에대한도움말을보여줌 (F1) C# 소개.NET CLR안에서실행되는언어중하나 다른언어들의장점을도입하고문제점을제거하여설계 데이터에특정한형식이부여되면그와관계없는형식으로변환할수없음 형식의안전을위해길고장황한코드를작성필요.NET 코드라이브러리가제공하는모든기능들을완전하게활용 C# 소개 C# 으로작성할수있는응용프로그램 Windows 응용프로그램 Web 응용프로그램 Web Service 데이터베이스엑세스를위한응용프로그램 (ADO.NET) 네트워킹구성요소, 그래픽출력, 복잡한수학연산등을위한도구
객체지향언어, 클래스단위의프로그램방식 반드시하나이상의 Main 메소드 (method) 를갖는클래스가존재 C# 프로그램의구성 프로그램설명 (a.k.a header comments) (optional) Library imports (optional) 하나이상의클래스 ( 그리고 namespace) 를포함 하나의클래스 (class) 는하나이상의메소드 (method) 를포함 하나의메소드 (method) 는 program statements 을포함 Main() 메소드 18 클래스 // comments about the class class HelloWorld class header 일반적으로클래스이름은대문자로시작 class C++ 나 Java 의클래스와같은개념 C# 소스파일하나안에는여러개의클래스가존재가능 그러나단일클래스하나를 C# 소스파일두개에연이어서작성할수없음 class body 주석문 (comments) 은어디에서나사용가능
메소드 using System; // comments about the class class HelloWorld // comments about the method static void Main (string[] args) Console.Write( Hello World! ); Console.WriteLine( HCI Programming II 수업입니다 ); namespace Java naming과같은개념 클래스들을그룹핑한단위를네임스페이스라고함 모든.NET 라이브러리코드는네임스페이스로정리되어있음 네임스페이스에있는코드를참조하려면반드시해당이름을부르거나 ( 예, System.Console) 또는명시적으로 import ( 예, using System;) 해야함 using System; namespace A class MyClass int value = 1; public void MyMethod() Console.WriteLine(value); namespace B class MyClass double value = 2.0; public void MyMethod() Console.WriteLine(value); namespace MyProgram class Program static void Main(string[] args) A.MyClass a = new A.MyClass(); a.mymethod(); B.MyClass b = new B.MyClass(); b.mymethod(); using Java에import와같은것 다른네임스페이스의클래스를접근하여사용하고자하면 using 문을사용하여해당 namespace를접근함 using문을사용해서 System이란네임스페이스를열어서 Console.WriteLine의사용이가능해짐 using System; class HelloWorld static void Main(string[] args) Console.WriteLine( Hello World! ); class HelloWorld static void Main(string[] args) System.Console.WriteLine( Hello World! ); 닷넷의 namespace 네임스페이스의기본적인기능은명칭의선언영역을지정하여명칭끼리의충동을방지하는것 닷넷네임스페이스는클래스를기능별로분류하는역할로함 Namespace System System.Collections System.IO System.Windows.Forms System.Drawing System.Web System.Xml System.Security 설명타입, 메모리관리등핵심클래스배열, 연결리스트등컬랙션클래스파일입출력및네트워크관련클래스윈도우폼과컨트롤 GDI+ 웹개발에관련된클래스 XML관련클래스보완, 암호, 권한관련클래스
[ 파일 -> 새로만들기 -> 프로젝트 ] 선택하여콘솔응용프로그램생성 Visual C# 프로젝트에서콘솔응용프로그램 (Console Application) 선택 HelloWorld 프로젝트이름입력 Program.cs의이름을 HelloWorld.cs라고변경 오른쪽마우스이용하여 Program.cs파일을선택한후속성창에서변경 기본으로생성되는코드
코드추가 컴파일과실행 메뉴에서 [ 빌드-> 솔루션빌드 ] 를선택하여컴파일 Hello World! 콘솔창에출력 [ 디버그-> 시작 ] 을선택하여실행한다. 컴파일과실행을일괄적으로처리하기위해선 Ctrl+F5 를누르면된다. HelloWorld 의결과화면 HelloWorld.cs 분석 자바와같이 main() 메소드를포함하고있는클래스이름과파일이름이같아야할필요없음 BCL(Base Class Library) 중 System namespace 안에정의된클래스사용명시 using System; HelloWorld 란이름의 namespace로정의유지보수와프로그램이해이점 namespace HelloWorld //
class 란키워드를사용하여 HelloWorld 클래스선언 class HelloWorld 메인함수를하나의싱글쓰레드안에서실행하기위해 Attribute 를선언 Main() 메소드안에서멀티쓰레드를구현하기위해서는 [MTAThread] 로설정 [STAThread] Main() 메소드는응용프로그램의시작점 static 모든클래스에서공유하기위한멤버를선언하는데사용객체를생성하지않고시작이가능 string[] args 매개변수, 명령행의명령어를인자로받음 static void Main(string[] args) Console 클래스는콘솔응용프로그램에대한표준입출력및오류스트림을말함 Console 클래스의 WriteLine() 메소드를이용하여 내의 Hello World! 문자열출력 Console.WriteLine( Hello World! ); Write/WriteLine 메소드 스크린모니터상에정보를보여줌 WriteLine은캐리지리턴문자를포함하여출력후에다음행으로이동 Write/WriteLine은오버로드되어있으므로인자형태로숫자, 문자열등여러형태가가능 index [,alignment][:formatting] 를사용하여인자를출력 Java에서와같이사용 예 : Test + a Read/ReadLine 메소드 키보드로값을입력받을때사용 Read 메소드는키보드로부터하나의문자를입력받음 ReadLine 메소드는한줄을입력받음 주석문 컴파일시무시되며, 소스파일에서만관리됨 // 를사용하여한줄을주석처리함 /* */ 를사용하면여러라인을주석처리할수있음 XML 문서만들기 소스상의주석으로입력했던내용을문서화할때사용 /// 로 XML 문서부분을표시해줌 컴파일시 XML 문서옵션을주어 XML 문서를만듦 ~>csc.exe Hello.cs /doc:mycomment.xml
XML 문서만들기 에서 XML 문서만들기설정 메모장으로작성하기 HelloWorld 를메모장으로 C# 프로그램작성및실행 닷넷프레임워크의설치및환경변수의 PATH 경로확인 아래디렉토리안에 C# 컴파일러인 csc.exe 가있는지를확인할것 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 제어판 -> 시스템 -> 고급 -> 환경변수 -> 시스템변수 -> Path 에 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 를추가 37 메모장으로작성하기 HelloWorld 를메모장으로 C# 프로그램작성및실행 메모장에 C# 코드작성후.cs 라는확장자로저장 메모장으로작성하기 HelloWorld 를메모장으로 C# 프로그램작성및실행 도스창에서 csc.exe 명령을통해컴파일 ~>csc.exe HelloWorld.cs 생성된실행파일 (HelloWorld.exe) 실행
Console vs. Windows Application 콘솔응용프로그램 (Console Application) Visual component 지원하지않음 텍스트입력과출력만지원 도스창에서실행 윈도우응용프로그램 (Windows Application) Graphical User Interfaces (GUI) 를통한다양한입출력지원 메시지박스 System.Windows.Forms 네임스페이스에있음 using System; using System.Windows.Forms; class Welcome static void Main( string[] args ) MessageBox.Show( "Welcome\nto\nC#\nprogramming!" );