Title of Presentation

Size: px
Start display at page:

Download "Title of Presentation"

Transcription

1 Microsoft.NET Programming Course C#.NET, ADO.NET, ASP.NET - KEA 2013 김명정 Microsoft BizSpark Network Partner kmjrabbit@live.com

2 .NET Programming 과정 닷넷살펴보기닷넷 (.NET) Programming 개발환경 Visual Studio 2010 설치하기닷넷의역사 C# 닷넷기초 기본사용 using, class, Main() 메서드, 주석문, Nullable, var 문 변수와상수변수, 값형식과참조형식, 문자형식과문자열형식, 상수와열거형식 구조 Namespace, Class, Method, Field, Attribute 연산자 형변환 흐름제어 반복문 클래스와객체 2

3 .NET Programming 과정 윈도우어플리케이션 ADO.NET( 데이터베이스 ) 데이터베이스 (MS-SQL) 데이터베이스의기초 ASP.NET과 DB연동 ASP.NET 기초 ( 웹프로그래밍 ) ASP.NET 개발환경소개및 IIS 설정 ASP.NET 4.0을이용한웹페이지구현 ASP.NET 웹폼 (WebForm) ASP.NET 내장개체 3

4 .NET Programming 과정 ASP.NET 중급표준컨트롤로그인컨트롤유효성검사컨트롤추적 (Trace) 웹프로그래밍활용 WCF 서비스제작 XAML 프로그래밍 4

5 .NET Programming 개발환경 세계최대수준의라이브러리및예제 유용한라이브러리소스제공 5

6 Visual Studio 2010 설치하기 Visual Studio 2010 평가판다운로드 Ultimate Version 평가판 : Web Installer Ultimate Version 평가판 : ISO 버전다운받기 DAEMON TOOL 다운받기 6

7 닷넷 (.NET) 의등장배경및역사 2000 년 6 월마이크로소프트는닷넷 (.Net) 이라는완전히새로운개발환경을발표 2001 년 Visual Studio.NET 개발툴과함께닷넷 1.0 정식버전발표 C#1.0 Managed Code, Visual Studio 2002 Attribute : 속성을쉽게부여, 런타임시필요한정보들을전달 foreach 반복문 2003 년닷넷 1.1 발표. 1.0 의버그픽스버전이높지않은만큼대폭적인기능향상은없었으며약간의기능만추가 년닷넷 2.0 발표메이저버전이올라간만큼많은변화가있었음. C#2.0, ASP.NET 2.0, ADO.NET 2.0, Windows Form 2.0, Click Once, Generic Partial Type : 클래스를여러파일에나눔. 널가능타입 : 참조형은 null 선언이가능하지만, 값형은빈값이라도반드시값을가져야했음. 제네릭 : 어떤타입이든될수있는형식

8 닷넷 (.NET) 의등장배경및역사 2006 년닷넷 3.0 발표닷넷 2.0 발표후곧이어닷넷 3.0 에대한스펙과 SDK 가공개 WPF,WCF,WF,CardSpace 암시적인타입을적용한지역변수 : var 타입 ( 컴파일러가타입을유추 ) 익명타입 : LINQ 중간과정에생기는타입을 Class 로정의하지않고익명으로정의확장메서드 : 기존타입에추가로메서드를추가할때사용. 람다 ( 익명메서드를보완한것 ) 와쿼리표현식 ( 데이터추출시쿼리를작성하는것 ) 2007 년 Visual Studio2008 과함께닷넷프레임워크버전이 3.5 로높아짐. LINQ, C#3.0( 람다식, 확장메서드지원 ) 2008 년 3.5 SP1 ASP.NET Dynamic Data, Client Profile 2009 년 4.0 CLR 버전이 2.0 에서 4.0 으로업그레이드됨. 8

9 닷넷 (.NET) 과 Visual Studio 버젼 Visual Studio : IDE(Integrated Development Environment: 통합개발환경 ) Visual Studio Framework Visual Studio.NET 1.0 Visual Studio.NET Visual Studio Visual Studio Visual Studio 2008 SP1 3.5 Visual Studio

10 C# 닷넷기초 C# 의정의 C# 은.NET Framework 기반의개발을할수있는언어중하나이다. 기존 Visual C++.NET 이나 Visual Basic.NET 등은이전부터존재해왔던언어이며이전버전과호환성을제공해야하기에.NET 의기능을완전히제공하지않는경우가있으나 C# 은.NET Framework 기반으로출시된언어이므로.NET 기반모든기능들을완전하게제공한다. C# 의특징 - 객체지향언어이다. - 하나의 C# 파일을생성시상단에클래스정의부가기술된다. - 클래스, 인터페이스, 구조체를지원한다. C# 언어의활용범위 - Windows Form 응용프로그램, ASP.NET, WCF, Windows Phone, Windows 8 등 기본사용문장단위는세미콜론 (;) 으로구분큰단위를이루는문장은중괄호 (.) 로감싸준다. namespace > class > 메서드 / 속성으로구성되어있다. 10

11 기본문법참고 클래스와구조체구조체 C 언어에서부터내려온기능으로새로운데이터타입을만드는역할을담당한다. 여러개의변수를묶어새로운데이터타입을만들수있다. 기본구조가클래스와유사하게필드 ( 변수 ) 와메서드를가진다. 하지만클래스와구조체의가장핵심이자큰차이점은클래스는참조타입이지만구조체는값형식이라는것이다 구조체를사용하는이유는클래스가객체를참조하는것은장점이지만클래스가작다면그클래스의객체를위해참조때문에발생하는시간적인낭비가발생할수있다. 이에반해구조체는값형식이므로직접적으로메모리에접근하기때문에낭비를막을수있다. 따라서 C# 에서는크기가작고단순한함수들을포함하고잇는선, 컬러등의요소들은구조체로정의해두고있다. 구조체는상속할수없으며상속해줄수도없다. new 연산자를사용할수있다. 구조체는기본생성자는재정의해서사용할수없다. 이유는값타입의변수를선언함과동시에메모리에생성되기때문이다. 11

12 기본문법참고 클래스와구조체클래스형식 public class Students public string CarType; public string CarID; 구조체형식 public struct Employee public string firstname; public int age; 12

13 기본문법참고 인터페이스클래스와유사하지만인터페이스의멤버요소들은구현부분이없는프로토타입만가지고있다. 인터페이스의모든멤버의접근한정자는 public 을기본으로한다. abstract, public, protected, internal, private, virtual, override, static 과같은키워드는사용할수없다. 클래스는하나의클래스만을상속받을수있다. 이때여러개로부터상속받고자할경우하나의클래스로부터상속을받고나머지는인터페이스로부터상속을받는다. 이때인터페이스에설계된되어있고구현되지않은멤버요소는구현처리를하게되면다중상속이가능해진다. class ChildClass : ParentClass, I1Interface, I2Interface 만약위와같이 ChildClass 가하나의클래스와 2 개의인터페이스로부터상속을받았는데같은이름의메서드를포함하고있다면문제가발생한다... 13

14 기본문법참고 속성속성이란클래스안에선언된필드의내용을설정 (Set) 하거나참조 (Get) 할때사용하는코드블록을말한다. 개체의필드중에서외부에공개하고자할때사용하는방법으로개체의성질이나특징, 색상, 크기, 모양등을표현할수있다. 속성은 get 접근자를이용하여저장된값이아닌계산되어진값을반환한다. 형식 ) public string _CarColor get; set; public class Button private string text; public string Text get return text; set text = value; Button b = new Button(); b.text = OK ; string s = b.text; 14

15 기본문법참고 메서드 (Method) c, c++ 에서는함수 (Function) 파스칼에서는프로시져 (Procedure) 혹은서브루틴 (Subroutine) 이나서브프로그램 (SubProgram) 메서드는일련의코드를하나의이름으로묶는것. 이렇게묶은코드는메서드를호출해서실행할수있다. 형식 ) class 클래스명 접근제한자 [static] 반환형식메서드명 ( 매개변수목록 ) // 실행코드들 return 메서드수행후호출한쪽으로결과리턴 모든메서드들이결과를반환하는것은아니다. 리턴값이없는경우는반환형식부분에 void 를적고 return 구문은생략하면된다. 15

16 기본문법참고 메서드 (Method) 예제 using System; namespace MethodEx class Calculator public static int Plus(int a, int b) return a+b; class Program public static void Main() int result = Calculator.Plus(3,4); Console.WriteLine(result); 16

17 기본문법참고 메서드 (Method) 오버로딩메서드오버로딩 (Method Overloading) 이란하나의메서드이름에여러개의구현을만드는것이다. 예제 ) class Calculator public static int Plus(int a, int b) return a+b; public static double Plus(double a, double b) return a+b; 17

18 기본문법참고 가변길이매개변수가변길이매개변수란그개수가유연하게변할수있는매개변수를말한다. 형식 ) int Sum(Params int[] args) int sum = 0; for(int i=0;i<args.length;i++) sum+=args[i]; return sum; 18

19 기본문법참고 19 가변길이매개변수예제 using System; namespace UsingParams class MainApp static int Sum(Params int[] args) int sum=0; for(int i=0;i<args.length;i++) if(i>0) Console.Write(, ); sum+=args[i]; Console.WriteLine(); return sum; static void Main(string[] args) int sum=sum(3,4,5,6,7,8,9); Console.WriteLine( Sum : 0, sum);

20 C# 프로그램실습 개발환경구축예제 - c:\dotnetcsharp\csharpex01 - Visual Studio 2010 을이용해서프로그램만들기 작성순서 Visual Studio 2010 을실행하고새프로젝트를만든다. 솔루션으로만들기 (Create directory for solution) 를체크한다. Visual C# - Console Application 으로, Name 은 CSharpEx01 로설정한다. Visual Studio 2010 에서콘솔프로그램의기존형식 using System; namespace CSharpEx01 class Program static void Main(string[] args) 20

21 C# 프로그램실습 Using 문 using System; System 네임스페이스안에있는클래스들을사용하겠다고컴파일러에게알리는역할 1 using using 키워드뒤의네임스페이스내클래스들을현재작업하는파일 ( 클래스 ) 에서사용하겠다고정의하는키워드 2 System 닷넷프레임워크에서제공하는기본적인데이터처리클래스 3 ;( 세미콜론 ) 컴파일러에게문장의끝을알리는기호. C# 에서는그냥줄을바꿔쓰고문장의끝부분에세미콜론을붙여주면된다. 짧은문장을한줄안에몰아넣을때도유용하다. 21

22 C# 프로그램실습 namespace 문 namespace CSharpEx01 네임스페이스키워드는성격이나하는일이비슷한클래스, 구조체, 인터페이스, 델리게이트, 열거형식등을하나의이름아래묶는일을한다. namespace 네임스페이스명 // 클래스 // 구조체 // 인터페이스 // 등등..NET 프레임워크라이브러리에많은클래스들이존재하지만이들클래스들이각용도 / 분야별로정리되어네임스페이스로관리되기때문에혼돈없이편리하게사용가능하다. 22

23 C# 프로그램실습 코드설명 namespace CSharpEx01 class HelloWorld 프로그램작성시다른네임스페이스에 CSharpEx01 네임스페이스내 HelloWorld 클래스를사용하려면 1.using CSharpEx01; 문장을사용해서 CSharpEx01 네임스페이스를참조하거나 2.CSharpEx01.HelloWorld 처럼클래스가소속되어있는네임스페이스와클래스의이름을붙여줘야한다. 23

24 C# 프로그램실습 class 문 class Program class Program 은 Program 이라는이름의클래스를만드는문장이다. 일반적으로소스파일 (Program.cs) 과클래스이름은동일하게지정한다. 클래스는 C# 프로그램을구성하는기본단위로써데이터와데이터를처리하는기능으로이루어진다. 24

25 C# 프로그램실습 Main() 메서드 static void Main(string[] args) static void Main(string[] args) 는메서드메서드중에서도프로그램의진입점으로프로그램을시작하면실행되고이메서드가종료되면프로그램도역시종료된다. 모든프로그램은반드시 Main 이라는이름을가진메서드를하나만가지고있어야한다. 25

26 C# 프로그램실습 주석문 // : 한줄주석 /* ~ */ : 여러줄주석 주석은소스코드안에기록하는메모같은것이며 C# 컴파일러는소스코드를컴파일하면서주석을만나면무시하고지나간다. 26

27 C# 프로그램실습 Nullable 문데이터형식? 변수이름 = null; int? a = null; 어떤값을가지지않는즉 0 이아닌비어있는변수가필요할때사용된다. Nullable 형식을사용할수있는경우는값형식에한해서이다. 변수의 HasValue 속성과 Value 속성 27

28 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex02 - Nullable 사용법 작성순서 Visual Studio 2010 을실행하고새프로젝트를만든다. 솔루션으로만들기 (Create directory for solution) 를체크한다. Visual C# - Console Application 으로, Name 은 CSharpEx02 로설정한다. using System; namespace CSharpEx02 class Program static void Main(string[] args) 코드입력 28

29 C# 프로그램실습 작성순서 static void Main(string[] args) int? a = null; Console.WriteLine(a.HasValue); Console.WriteLine(a!=null); a = 3; Console.WriteLine(a.HasValue); Console.WriteLine(a!=null); Console.WriteLine(a.Value); 29

30 C# 프로그램실습 var 문 var a =3; var b = Hello ; //a는 int형식 //b는 string형식 int, string 같은명시적형식대신 var 키워드를사용해서변수선언시컴파일러가자동으로해당변수의형식을지정해준다. 단, var 키워드를이용해서변수를선언하려면반드시선언과동시에초기화를해줘야한다. 30

31 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex03 - var 키워드사용법 작성순서 Visual Studio 2010 을실행하고새프로젝트를만든다. 솔루션으로만들기 (Create directory for solution) 를체크한다. Visual C# - Console Application 으로, Name 은 CSharpEx03 로설정한다. using System; namespace CSharpEx03 class Program static void Main(string[] args) 코드입력 31

32 C# 프로그램실습 작성순서 static void Main(string[] args) var a = 20; Console.WriteLine( Type : 0, Value : 1, a.gettype( ), a); var b = ; Console.WriteLine( Type : 0, Value : 1, b.gettype( ), b); var c = Hello, World ; Console.WriteLine( Type : 0, Value : 1, c.gettype( ), c); var d = new int[] 10, 20, 30; Console.WriteLine( Type : 0, Value :, d.gettype( )); foreach(var e in d) Console.Write( 0, e); Console.WriteLine( ); 32

33 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex04 - 문자형식사용법 작성순서 Visual Studio 2010 을실행하고새프로젝트를만든다. 솔루션으로만들기 (Create directory for solution) 를체크한다. Visual C# - Console Application 으로, Name 은 CSharpEx04 로설정한다. using System; namespace CSharpEx03 class Program static void Main(string[] args) 코드입력 33

34 C# 프로그램실습 작성순서 static void Main(string[] args) char a= 안 ; char b= 녕 ; char c= 하 ; char d= 세 ; char e= 요 ; //Console.Write( ) 메서드는데이터출력후줄을바꾸지않는다. Console.Write(a); Console.Write(b); Console.Write(c); Console.Write(d); Console.Write(e); //Console.WriteLine( ) 메서드는데이터출력후줄을바꾼다. Console.WriteLine(); 34

35 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex05 - 문자열형식사용법 작성순서 using System; namespace CSharpEx05 class StringEx static void Main(string[] args) string a = 안녕하세요 ; string b = 반갑습니다. ; Console.WriteLine(a); Console.WriteLine(b); 35

36 C# 프로그램실습 상수 (Constants) const 자료형상수명 = 값 ; const string c= ABC ; 상수란변하지않는값으로임의의값을강제로처음부터지정한다. 변수의선언과유사하며데이터형식앞에 const 키워드가위치하고상수가가져야하는데이터를반드시대입해줘야한다. 36

37 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex06 - 상수지정및사용법 작성순서 using System; namespace CSharpEx06 class ConstantEx static void Main(string[] args) const int MAX_INT = ; const int MIN_INT = ; Console.WriteLine(MAX_INT); Console.WriteLine(MIN_INT); 37

38 C# 프로그램실습 열거형식 enum 열거형식명 상수 1, 상수 2.. enum 열거형식명 상수 1= 값 1, 상수 2= 값 2 enum Dig YES, NO 종류는같지만다른값을갖는상수를선언할경우각각의상수를선언할수도있지만열거형식을이용하는게편리하다. 열거형이가지고있는값은컴파일러가자동으로할당한다. 열거형식이만들어진목적이가지고있는값의중요성보다요소들간의중복되지않는값을갖고있는것에목적을둔다. 38

39 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex07 - 열거형식사용법 작성순서 using System; namespace CSharpEx07 class EnumEx enum DialogResult YES, NO, CANCEL, CONFIRM, OK static void Main(string[] args) Console.WriteLine((int)DialogResult.YES); Console.WriteLine((int)DialogResult.NO); DialogResult result = DialogResult.CONFIRM; Console.WriteLine(result == DialogResult.CONFIRM); Console.WriteLine(result == DialogResult.OK); 39

40 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex08 - 값을할당하는열거형식사용법 작성순서 using System; namespace CSharpEx08 class EnumValueEx enum DialogResult YES=10, NO, CANCEL, CONFIRM=50, OK static void Main(string[] args) Console.WriteLine((int)DialogResult.YES); Console.WriteLine((int)DialogResult.NO); Console.WriteLine((int)DialogResult.CANCEL); Console.WriteLine((int)DialogResult.CONFIRM); Console.WriteLine((int)DialogResult.OK); 40

41 C# 프로그램실습 변수 자료는크게 변수 와 상수 두가지로나뉘어진다. 자주쓰이는자료로는계산할수있는 숫자 형태와보이는그대로인 문자 에관련된자료형그리고참 (True) 와거짓 (False) 형태의 Boolean(bit) 자료형등이있다. 숫자 정수 ( 음수와양수 ), 실수 ( 소수점 ) 문자 1byte 인 문자 와 2byte 이상인 문자열 반드시변수에값을담을필요는없으나차후에사용하기위해변수에담아둔다. 41

42 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex09 - 변수사용법 작성순서 using System; namespace CSharpEx08 class Program static void Main(string[] args) 코드입력 42

43 C# 프로그램실습 작성순서 static void Main(string[] args) // 숫자 int i1 = 6; int i2 = -6; uint ui1 = 5; //uint ui2 = -5; // 오류 : unsigned int float f1 = -5.1f; float f2 = -5.1; // 오류 : double double d = -32.1; // 문자 char c= 1 ; string b= 6 43

44 C# 프로그램실습 질문과답변 왜자료형은 (int, uint, float 등과같이 ) 여러가지로존재하는가? 44

45 C# 닷넷기초 구조 Namespace : class 를묶는단위. 실제프로그래밍기능으로는사용하지않고특정 class 를이용하기위한참조 (reference) 로사용 Class : C# 의모든형태로서실제기능을구현하는단위. 일반적으로 file 단위로나뉘어지지만반드시그런것은아니다. 실제기능을구현하기위한메서드및속성의묶음. 접근제한자로기능을숨기거나상속해서사용할수있다. Method : Class 내부에존재하며프로그램처리프로세스를하나로묶어두는기능파라미터 (parameter) 를받을수있으므로특정기능을하기위한수단으로사용. Field,Attribute : 실제값 ( 변수와상수 ) 을필드를이용해데이터공간을만들어두고속성을통해이에대한접근 ( 읽기, 쓰기 - 값할당 ) 을제어할수있다. 45

46 C# 프로그램실습 연산자 - 대입연산자 = 는모든자료형에서사용 - 계산가능한숫자형변수및상수에 +,-,*,/,% 적용시해당연산자로연산 - 계산불가능한문자열변수및상수에 + 적용시문자열결합 - 계산불가능한 Boolean 변수및상수에 (OR, 또는 ), && (AND, 그리고 ),! (NOT, 아니요 ) 적용 - 비교연산자는값을비교하여결과를 Boolean 값 (true 또는 false) 으로리턴 모든연산자는결과가있다. 1. 정수형과정수형 = 정수형 2. 문자열과정수형 = 문자열 3. 문자열과비트형 = 문자열 46

47 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex10 - 연산자사용법 작성순서 using System; namespace CSharpEx10 class Program static void Main(string[] args) 코드입력 47

48 C# 프로그램실습 작성순서 static void Main(string[] args) int a, b; a = 5; b = a + 6; string str1, str2; str1 = 5 ; str2 = str1 + 6 ; bool b1, b2; b1 = true; b2 = b1 false; 48

49 C# 프로그램실습 C# 기본자료형클래스 기본자료형클래스숫자형 System.Int16, System.Int32, System.Int64, System.Single, System.Double 문자형 System.Char, System.String -int 와 System.Int32 는같다. Int16 은 short 이며, Int64 는 long 이다. -String 과 string 은같은의미이다. 49

50 C# 프로그램실습 형변환 형변환 ( 숫자 ) - 같은형은변환이필요없으나다른형은형변환이필요할때가있다. - 정수형은작은자료형 (short, System.Int16) 에서큰자료형 (int, System.Int32) 으로할당은자동으로잘된다. ( 묵시적형변환 ) - 위와반대의경우는형변환이필요하며변환할값의앞에형식을 ( ) 으로감싸서적는다. ( 명시적형변환 ) int i = 23; short s = i; ( 에러 ) short s = (short)i; 50

51 C# 프로그램실습 형변환 형변환 ( 문자 ) - 문자열은계산할수없는자료형이다. 이를계산할수있는자료형인정수형으로변환하려면 Parse() 를이용한다. int, float, double 등에서모두사용가능하다. string str = 52 ; int ia = int.parse(str); - 만약변환할숫자가아닌값이들어있다면오류가발생한다. string str = 531a ; int ia = int.parse(str); // 오류이경우 Boolean 값을리턴하는 TryParse() 를이용하여문자열이숫자값을나타내는지확인가능하다 string str = 532a ; int num; bool b = int.tryparse(str, out num); //b=false (532a 변환은오류 ) 51

52 C# 프로그램실습 if-else 문 if( 비교 ) else if( 비교 1) else if( 비교 2) else 비교연산자가참 (True) 일때해당 을처리한후끝내게되며, 처리구문이단일구문으로 1 줄이면중괄호 는생략가능하다. 52

53 C# 프로그램실습 switch 문 switch( 변수 ) case 상수값 1 : // 처리구문 1; break; case 상수값 2: // 처리구문 2; break; default: // 처리구문 3; break; 변수의값이 case 상수값과매치되면각각의 case 문하단의처리구문을실행 case 의값이모두아니면 default 의처리구문을실행한다. 53

54 C# 프로그램실습 3 항조건문 (? : ) 조건식? 참 : 거짓 int num = 5; string str = (num == 5)? yes : no? 앞의조건식이참이면 yes 값이? 앞의조건식이거짓이면 no 값이문자열변수 str 에할당된다. 54

55 C# 프로그램실습 반복문 (for 문 ) for( 초기값 ; 조건문 ; 증감값 ) // 처리구문 55

56 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex11 - for 문 ( 반복문 ) 사용법 작성순서 using System; namespace CSharpEx11 class ForEx static void Main(string[] args) for(int i=1;i<=9;i++) Console.WriteLine(i); 56

57 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex12 - for 문 ( 무한루프 ) 사용법 작성순서 using System; namespace CSharpEx12 class InfiniteLoop static void Main(string[] args) for( ; ; ) Console.WriteLine( * ); 57

58 C# 프로그램실습 반복문 (foreach 문 ) foreach( 자료형사용할변수 in 배열변수명 ) // 사용할변수로사용 배열 (Array) 형식의반복을수행한다. 배열변수에들어있는하나하나의값이처음부터끝까지 사용할변수 이름으로할당되며배열이므로자료형은배열의자료형으로잡아야한다. 외부로부터넘어오는데이터경우처럼자료형을지정하기애매할경우 var 키워드를사용하여지정할수있다. 58

59 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex13 - foreach 문사용법 작성순서 using System; namespace CSharpEx13 class ForeachEx static void Main(string[] args) int[ ] i = 1,3,5,7,9; foreach(int order in i ) Console.WriteLine( NOW VALUE = + order); 59

60 C# 프로그램실습 반복문 (while 문 ) while( 조건문 ) // 실행구문 조건문이거짓일때까지실행문을반복한다. while 문의경우조건문을먼저비교하므로조건문을판단하여거짓일경우 while 문내의실행구문은한번도실행되지않을수있다. 60

61 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex14 - while 문사용법 작성순서 using System; namespace CSharpEx14 class WhileEx static void Main(string[] args) int i = 1; while (i == 0) i++; Console.WriteLine(i); 61

62 C# 프로그램실습 반복문 (do-while 문 ) do // 실행구문 while( 조건문 ) 조건문이거짓일때까지실행문을반복한다. do-while 문의경우 do 문내의실행구문을무조건 1 회실행후 while 문내의조건문을비교한다. 62

63 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex15 - do-while 문사용법 작성순서 using System; namespace CSharpEx15 class DoWhileEx static void Main(string[] args) int i = 1; do i++; Console.WriteLine(i); while(i == 0); 63

64 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex16 - do-while 문을이용한무한루프사용법 작성순서 using System; namespace CSharpEx16 class Program static void Main(string[] args) while(true) Console.WriteLine( * ); 64

65 C# 프로그램실습 빠져나오기 - break : 반복문을빠져나온다. - return : 메서드에서결과를리턴하고즉시중단한다. - throw : 예외를발생시킨다. - goto : 지정한위치로분기 모든반복문에서사용가능하며수행하는반복문에서빠져나오기위한명령어로 break, return, throw, goto 가있다. 65

66 C# 프로그램실습 66 예제 - c:\dotnetcsharp\csharpex17 - break 문을이용하여반복문빠져나오기 작성순서 using System; namespace CSharpEx17 class BreakEx static void Main(string[] args) int i = 0; while(true) i++; Console.WriteLine(i); if (i==10) break;

67 C# 프로그램실습 건너뛰기 continue 반복문내에서 continue 문을만나면반복문의처음으로되돌아간다. 67

68 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex18 - continue 문사용법 작성순서 using System; namespace CSharpEx18 class ContinueEx static void Main(string[] args) // 코드작성 68

69 C# 프로그램실습 작성순서 static void Main(string[] args) for(int i=0;i<9;i++) if(i%2==0) Console.WriteLine(i); continue; Console.WriteLine( x ); 69

70 Foreach 추가 배열, ArrayList 예제 - c:\dotnetcsharp\csharpexforeacharraylist01 - 배열과 ArrayList 요소출력 작성순서 using System; using System.Collections; namespace CSharpExForeachArrayList01 class ArrayListEx static void Main(string[] args) // 코드작성 70

71 Foreach 추가 배열, ArrayList 작성순서 static void Main(string[] args) int[] collect = 1,3,5,6,7,9; foreach(var c in collect) Console.Write( 0,c); Console.WriteLine(); for(int i=0;i<collect.length; i++) Console.Write(collect[i]); Console.WriteLine(); ArrayList numbers = new ArrayList(); for(int i=0; i<10; i++) numbers.add(i); 71 for(int i=0;i<numbers.count;i++) Console.Write(numbers[i] + ); Console.WriteLine(); foreach(var number in numbers) Console.Write(number + );

72 배열 (Arrays) 배열이란? 요소들의집합이다. 배열의각요소들은모두동일한데이터타입을가진다. 구조체는서로다른데이터타입을가진다. 각요소들은정수형인덱스로접근이가능하다. [0] [1] [2] [3] [4] [5] 배열변수의선언 n 열의요소로구성된 1 차원배열 long[ ] row; n 열의요소가 m 행으로구성된 2 차원배열 int[, ] grid; 72

73 배열의배열 (Jagged Arrays) 배열의요소가일정하지않은배열예를들면달력의 1 월 -12 월은각각날짜의수가다름 int[ ] [ ] intdaysinmonth; intdaysinmonth = new int[12][ ]; intdaysinmonth[0] = new int[31]; intdaysinmonth[1] = new int[28];. intdaysinmonth[11] = new int[31]; intdaysinmonth[0] intdaysinmonth[1]

74 배열관련된속성 long[] array1 = new long[4]; array1 array1.rank : 1 (1 차원배열 ) array1.length : 4 int [, ] array2 = new int[2,5]; array2 array2.rank : 2 (2 차원배열 ) array2.length : 10 74

75 배열관련된메서드 일반적으로사용되는메서드 - Sort : 차수 1 에대한배열요소를정렬 - Clear : 배열요소의범위를 0 또는 null 로초기화 - Clone : 배열복사 - GetLength : 주어진차수의길이값반환 - IndexOf : 주어진값의첫번째인덱스값반환 75

76 C# 프로그램실습 클래스와객체 ( 클래스정의 ) [ 접근한정자 ] class [ 클래스이름 ] // 필드, 프로퍼티, 메서드, 이벤트정의 객체의원형이클래스이다. 클래스가있기때문에객체를생성하여실제사용할수있다. 닷넷은클래스들을기본으로하여모든것들이구성되어있다. 76

77 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex19 - 클래스정의사용법 작성순서 using System; namespace CSharpEx19 class Program static void Main(string[] args) // 클래스정의 77

78 C# 프로그램실습 작성순서 public class Car public string CarType; // 차종류 public string CarID; // 차량번호 public int CC; // 배기량 public DateTime StoredDate; // 입고일 78

79 C# 프로그램실습 클래스와객체 ( 분할클래스 :partial) public partial class Car public string CarType; public string CarID; public partial class Car public int CC; public DateTime StoredDate; // 차종류 // 차량번호 // 배기량 // 입고일 하나의클래스를여러개로나누어정의할수있다. 기능이나목적에따라나눠진 partial 클래스는어플리케이션이컴파일되면 C# 컴파일러는하나의클래스로합한다. 79

80 C# 프로그램실습 클래스와객체 ( 클래스로부터객체를만드는법 ) 1. 먼저클래스를정의하고사용할변수이름을지정한다. Car car1; 2. 객체를인스턴스화한다. car1 = new Car(); Car car1 = new Car(); (1 번 +2 번 ) 클래스는템플릿처럼사용하며이를이용하기위해서는실제객체를만들어야한다. 객체를만드는것을인스턴스화한다고한다. 아직객체데이터를가지고있지않으며객체를생성하려면 new 키워드를이용하여객체를인스턴스화한다. 객체의인스턴스화가되면객체의멤버변수를지정할수있게된다. 80

81 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex20 - 객체의인스턴스화사용법 작성순서 using System; namespace CSharpEx20 class Program static void Main(string[] args) Car car = new Car(); car.cartype = 경차 ; car.carid = 12 가 1234 ; car.cc = 900; car.storeddate = DateTime.Parse( ); //Car 클래스정의코드작성 81

82 C# 프로그램실습 작성순서 using System; namespace CSharpEx20 public class Car public string CarType; public string CarID; public int CC; public DateTime StoredDate; // 차종류 // 차량번호 // 배기량 // 입고일 82

83 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex21 - 객체생성 작성순서 생략 static void Main(string[] args) Car car1 = new Car(); car1.cartype = 경차 ; car1.carid = 12 가 1234 ; car1.cc = 900; car1.storeddate = DateTime.Parse( ); car car2 = car1; car2.carid = 34 나 1234 ; 생략 Console.WriteLine(car1.CarID); 83

84 C# 프로그램실습 작성순서 using System; namespace CSharpEx21 public class Car public string CarType; public string CarID; public int CC; public DateTime StoredDate; // 차종류 // 차량번호 // 배기량 // 입고일 84

85 C# 프로그램실습 클래스와객체 ( 익명타입 :Anonymous) var 클래스이름 = new 필드 1= 값, 필드 2= 값 ; 익명 (Anonymous) 타입은 C# 3.0 의새로운기능으로데이터형식을일반적인클래스정의없이할수있다. var 키워드를이용해서객체를생성하며익명타입내의필드는값변경이불가능한 읽기전용 이다. 85

86 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex22 - 객체생성 작성순서 생략 static void Main(string[] args) var student1 = new Name= 홍길동, Age = 23, Major = 컴퓨터공학 ; Console.WriteLine(student1.Name); Console.WriteLine(student1.Age); 생략 86

87 C# 프로그램실습 클래스와객체 ( 클래스멤버 ) 변수와함수는클래스내에클래스의멤버로정의한다. Car 클래스를인스턴스화하기위해정의하고이 4 개멤버는인스턴스화가됐을때접근이가능하다. 클래스의멤버는데이터 / 함수두가지형식으로나누어진다. Data 함수 (Function) 에서사용가능하도록객체에자료를담기위한멤버예를들어차량의종류, 번호를저장하기위해 CarType, CarID 멤버를사용하고있다. Function 클래스의코드블록에있으며함수멤버는클래스의기능을수행한다. 예를들어차량입고일인 StoredDate 멤버의날짜형식이올바른지체크할수있다. 87

88 C# 프로그램실습 클래스와객체 ( 클래스멤버 ) 데이터는인스턴스멤버와스태틱 (static) 멤버두종류가있다. 인스턴스멤버기본적으로모든멤버는 static 키워드를앞에붙이지않으면인스턴스멤버이다. Car 클래스는 4 개의인스턴스멤버를가지고있다. public string CarType; public string CarID; public int CC; public DateTime StoredDate; 인스턴스멤버는클래스의인스턴스 ( 객체 ) 를통해서만접근이가능하다. Car car = new Car(); car1.cartype = 경차 ; car1.carid = 12 가 1234 ; 88

89 C# 프로그램실습 클래스와객체 ( 클래스멤버 ) 데이터는인스턴스멤버와스태틱 (static) 멤버두종류가있다. 스태틱멤버멤버자료형앞에 static키워드를붙여서스태틱멤버로지정할수있다. public static int CAR_COUNT; // 스태틱멤버 public string CarType; // 인스턴스멤버 스태틱멤버는클래스이름을붙여서그대로사용한다. 스태틱멤버를인스턴스멤버처럼인스턴스화된객체로사용할때는에러가발생한다. 89

90 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex23 - 객체생성 작성순서 생략 static void Main(string[] args) Car.CAR_COUNT = 0; Car car1 = new Car(); car1.cartype = 경차 ; car1.carid= 12 가 1234 ; car1.cc = 900; car1.storeddate = DateTime.Parse( ); 생략 Car.CAR_COUNT = 1; 90

91 C# 프로그램실습 작성순서 using System; namespace CSharpEx23 public class Car public static int CAR_COUNT; public string CarType; public string CarID; public int CC; public DateTime StoredDate; // 차종류 // 차량번호 // 배기량 // 입고일 91

92 C# 프로그램실습 클래스와객체 ( 접근한정자 ) 접근한정자키워드는클래스멤버를붙여줄수있으며접근을제한하거나허가할수있는기능을부여할수있다. public class Car public static int CAR_COUNT; public string CarType; private int _Price; 다른멤버와다르게 _Price 멤버는 private 키워드로정의되었다. public 키워드는클래스외부에서보여지게하고 private 키워드는클래스내에서만보여지게된다. C# 에는 public, private, protected, internal 의 4 개의접근한정자가있다. 접근한정자를생략시 private 이기본으로잡힌다. protected 키워드는클래스상속에서만허용하는접근한정자이다. internal 키워드는동일한클래스수준에서만접근할수있도록하는접근한정자다. 92

93 C# 프로그램실습 클래스와객체 ( 함수멤버 ) 함수멤버는클래스에서실제실행가능한코드를담고있다. C# 에는다음함수들이존재한다. 메서드 (Method) [ 접근한정자 ][ 리턴형 ][ 메서드이름 ]([ 파라미터 ]) // 메서드내용 C# 의모든함수는클래스에속해야한다. 클래스에정의된함수를메서드 (Method) 라고한다. 93

94 C# 프로그램실습 예제 - c:\dotnetcsharp\csharpex24 - 객체생성 작성순서 using System; namespace CSharpEx24 public class Car public static int CAR_COUNT; public string CarType; public string CarID; public int CC; public DateTime StoredDate; // 메서드추가코드작성 94

95 C# 프로그램실습 작성순서 using System; namespace CSharpEx24 public class Car // 차종류가올바른지체크하는메서드 ( 리턴하는값이있다 :bool) public bool CarTypeCheck() bool isvalid = true; if(cartype!= 경차 && CarType!= 중형차 && CarType!= 대형차 ) isvalid = false; return isvalid; 95

96 C# 프로그램실습 작성순서 using System; namespace CSharpEx24 public class Car // 차량출력 ( 리턴하는값이없다 : void) public void PrintCar() Console.WriteLine( 0 1 [ 입고일 : 2], CarType, CarID, StoredDate.ToShortDateString()); 96

97 C# 프로그램실습 작성순서 using System; namespace CSharpEx24 class Program Car car1 = new Car(); car1.cartype = 경차 ; car1.carid = 12 가 1234 ; car1.cc = 900; car1.storeddate = DateTime.Parse( ); Console.WriteLine(car1.CarTypeCheck()); car1.printcar(); 97

98 C# 프로그램실습 클래스와객체 ( 함수멤버 ) 메서드로인수값넘기기 [ 접근한정자 ][ 리턴형 ][ 메서드이름 ]([ 파라미터 ]) // 메서드내용 인수를이용해메서드에인자값을넘길수있다. 파라미터와인수라는말은주로같이사용하는데파라미터라는것은메서드에서정의하여사용되는것이고인수는실제메서드를호출할때사용하는값을말한다. x 와 y 를파라미터로받는 Add() 라는메서드를정의한다. public int Add(int x, int y) return x+y; 메서드를호출할때는리턴값이 void 가아니므로 int 형으로받을수있지만반드시받아야되는것은아니다. int c = Add(num1, num2); Console.WriteLine(Add(num1, num2)); 98

99 C# 프로그램실습 클래스와객체 ( 함수멤버 ) this 키워드 this 키워드는현재의인스턴스화된객체 ( 스태틱이아닌클래스 ) 를가리킨다. public void SetCar(string CarType, string CarID, int CC, int Price) this.cartype = CarType; this.carid = CarID; this.cartype 은현재의인스턴스멤버의참조 CarType 은메서드의파라미터 99

100 C# 프로그램실습 클래스와객체 ( 속성 :Property) Car 클래스처럼자료를넣어두는공간인필드 (Field) 는접근한정자에국한되어값을읽어오거나지정할수있다 필드사용예제 public class Car public string CarType; static void Main(String[] args) Car car = new Car(); car.cartype = 경차 ; 100

101 C# 프로그램실습 클래스와객체 ( 속성 :Property) 속성 (Property) 는필드를좀더효율적으로관리할수있게한다. 속성을사용하는방법은필드와동일하다. 속성은 public 으로노출시켜서 get, set 접근자로지정해준다. 속성사용예제 public class Car public string CarType get; set; private string _CarID; public string CarID get return _CarID; set _CarID = value; private int _CC; 101

102 C# 프로그램실습 클래스와객체 ( 속성 :Property) 속성 (Property) 는필드를좀더효율적으로관리할수있게한다. 속성을사용하는방법은필드와동일하다. class Program static void Main(string[] args) Car car1 = new Car(); car1.cartype = 경차 ; car1.carid = 12가0000 ; car1.cc = 2000; // 속성 // 속성 // 속성 Console.WriteLine(car1.CarType); Console.WriteLine(car1.CarID); Console.WriteLine(car1.CC); 102

103 C# 프로그램실습 클래스와객체 ( 생성자 ) 클래스에는생성자가존재한다. 그러나기본생성자를지정하지않아도컴파일시 C# 에서자동으로생성도된다. 필드값을초기화할경우처럼객체가인스턴스화되면서처리할작업들을생성자에작성한다. public Car() this.storeddate = DateTime.Now; 생성자를지정하는방법은리턴값없이 public 접근한정자로클래스명과동일하게만든다. 103

104 C# 프로그램실습 클래스와객체 ( 소멸자 ) 생성자와마찬가지로소멸자도기본소멸자가있고, 이를지정하지않아도무관하여자동으로생성된다 일반적으로클래스가메모리로부터소멸될때별도의작업을할수있다. public ~Car() // 관리되지않은리소스해제등의작업 소멸자는생성자이름을그대로사용하되앞에 ~ 문자를붙인다. 104

105 윈도우어플리케이션프로그래밍 윈도우어플리케이션프로그램맛보기 Visual Studio 2010 을실행시켜 CSharpWinEx01 이라는이름의윈도우폼어플리케이션프로젝트를생성해본다. 콘솔응용프로그램과의차이점등을살펴본다. 도구모음 솔루션탐색기 Desing/Code Mode - 속성창 Form1.cs 파일에 Load 이벤트를추가해보자. private void Form1_Load(object sender, EventArgs e) this.text = 프로그램실행됨 ; 105 도구상자에서버튼컨트롤을폼에추가시켜보자. 속성창에서속성값들을변경시켜보고버튼에 Click() 이벤트코드를생성한다. private void button1_click(object sender, EventArgs e) MessageBox.Show( 버튼클릭됨 ); 실행

106 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 Visual Studio 2010 을실행시켜 CSharpVS 라는이름의콘솔어플리케이션프로젝트를생성한다. CSharpVS 프로젝트내에 Car.cs 파일을추가한다. Car.cs 파일의필드와속성을작성한다. (CarClass_Ver1.txt 참고 ) CSharpVS 솔루션내 WinApp 이름의윈도우폼응용프로그램프로젝트를추가한다. [ 솔루션탐색기 - 솔루션선택 - 오른쪽마우스버튼 - 추가 - 프로젝트 ] Form1.cs 파일을 WinApp.cs 파일로변경 WinApp 프로젝트에서 CSharpVS 프로젝트내의 Car 클래슬참조하려면참조추가작업이필요하다. [ 솔루션탐색기 -WinApp 프로젝트선택 - 오른쪽마우스버튼 - 참조추가 - CSharp 프로젝트 ] 106

107 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 WinApp.cs 파일의코드보기참조추가한 CSharp 프로젝트를사용하려면코드에서 using CSharpVS; 구문을추가 WinApp 프로젝트를시작프로젝트로설정하기 107

108 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 컨트롤 속성변경내용 Label1 combobox1 Label2 TextBox1 Label3 Text : 차종 Name : lstcartype Items 입력 ( 경차, 중형차, 대형차 ) DropDownStyle : DropDownList Text : 차량번호 Name : txtcarid Text : 배기량 NumericUpDown1 Name : numcc / Increment : 100 Maximum : 6000 / Minimum : 500 Value : 500 Label4 Text : 차량등록일자 DateTimePicker1 Name : dtstoreddate / Format : Short button1 F5 눌러실행해본다. Text : 저장하기 108

109 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 button1 컨트롤 ( 저장하기버튼 ) 을클릭했을때의이벤트를작성한다. private void button1_click(object sender, EventArgs e) Car nowcar = new Car CarType = lstcartype.items[lstcartype.selectedindex].tostring(), CarID = txtcarid.text, CC = (int)numcc.value, StoredDate = DateTime.Paarse(dtStoredDate.Text) ; 저장후실행 109

110 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 문제점해결문제 1) 프로그램실행시차종의첫번째값자동선택하기 문제 2) 배기량키보드입력방지 110

111 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 문제점해결문제 1) 프로그램실행시차종의첫번째값자동선택하기해결 : WinApp() 생성자에다음코드를추가한다. public WinApp() InitialzeComponent(); lstcartype.selectedindex = 0; 문제 2) 배기량키보드입력방지해결 : WinApp 의디자인화면에서배기량부분의 NumericUpDown 컨트롤을선택한후속성창의이벤트모드에서 KeyPressd 이벤트를추가한다. private void numcc_keypress(object sender, KeyPressEventArgs e) e.handled = true; // 이벤트의기본처리작업을건너뜀. 111

112 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 입력한데이터를저장하기저장을위해 Generic 클래스를이용할것이다 Generic 클래스는기존의컬렉션 ( 객체배열 ) 을효율적으로사용할수있게하는클래스이다. List<T> 인덱스로액세스할수있는강력한형식의객체목록 Add() : 삽입 Remove() : 삭제 112

113 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 MyCarList 클래스멤버정의및인스턴스화 using System.Collection.Generic; List<Car> MyCarList; public WinApp() MyCarList = new List<Car(); 113

114 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 저장하기버튼클릭시입력한자동차정보를리스트에저장하고콤보박스에추가해보자 private void button1_click(object sender, EventArgs e) Car nowcar = new Car CarType = lstcartype.items[lstcartype.selectedindex].tostring(), CarID = txtcarid.text, CC = (int)numcc.value, StoredDate = DateTime.Paarse(dtStoredDate.Text) ; MyCarList.Add(nowCar); 114

115 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 데이터저장시목록화하고정보를출력하는기능을추가하기 115

116 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 116

117 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 컨트롤 combobox Button 속성변경내용 Name : lstcarsave / DropDownStyle : DropDownList Text : 정보출력 저장하기버튼을클릭시리스트 MyCarList 의목록을콤보박스에들어오게구현 private void button1_click(object sender, EventArgs e) Car nowcar = new Car CarType = lstcartype.items[lstcartype.selectedindex].tostring(), CarID = txtcarid.text, CC = (int)numcc.value, StoredDate = DateTime.Paarse(dtStoredDate.Text) ; MyCarList.Add(nowCar); lstcarsave.items.add( String.Format( 0 1, nowcar.cartype, nowcar.carid)); 117

118 윈도우어플리케이션프로그래밍 Car 클래스를이용한윈도우어플리케이션 하단우측의정보출력버튼클릭시현재선택된차량의전체정보를출력 private void button2_click(object sender, EventArgs e) Car data = MyCarList[lstCarSave.SelectedIndex]; string output = String.Format(@ [ 차량정보 ] 차종 : 0 차량번호 : 1 배기량 : 2 등록일자 : 3, data.cartype, data.carid, data.cc, data.storeddate); MessageBox.Show(output); 118

119 ADO.NET ( 데이터베이스 ) 데이터베이스는데이터의집합 데이터베이스설치하기 (Microsoft SQL Server 2008 R2 Express) 인스턴스구성 : STUDY 인증모드 : 혼합모드 (SQL Server 인증및 Windows 인증 ) 암호 : 1234 (SQL Server 에서는기본으로최고관리자의 ID 가 sa 이다 ) 119

120 ADO.NET ( 데이터베이스 ) SQL Server Management Studio( 관리도구 ) 실행하기로컬또는원격지에있는 DB 서버로접속하기위한화면이며접속하기위한정보를입력해야한다. 서버이름 : NOTEBOOK-PC\STUDY 인증 : SQL Server 인증로그인 : sa 비밀번호 : 1234 연결이성공되었다면 DB 서버내데이터를사용할수있다. 120

121 ADO.NET ( 데이터베이스 ) 외부의프로그램에서 DB 를입력하거나조회하기전에 SQL 관리도구를이용해서조회나 SQL 쿼리문등을먼저처리해서결과를확인후비교해볼수있다. MSSQL Server 는 Oracle, MySQL 과같이 DBMS(DataBase Management System) 의한종류이며 DB 의기본개요는동일하다. 데이터베이스 (DB) 의구성 121

122 ADO.NET ( 데이터베이스 ) DB 를관리하는총체가 DBMS 이며 DataBase 의묶음이다. DB 는 1 개이상의테이블로이루어져있으며처음 DB 를생성하면테이블은존재하지않는다. 122

123 ADO.NET ( 데이터베이스 ) 닷넷 (ASP.NET) 과 DBMS(MS SQL Server) 웹프로그래밍시해당파일들은 (2) 에위치한다. (1) 을위해 (2) 가존재한다. (3) 은 (2) 가무슨서버인지신경쓸필요가없다. DB 를요청하면해당자료를꺼내주면될뿐이다. (2) 는자료입출력이있을때만 (3) 에접속할것이다. (1) 은 (2) 에게 GET 으로요청한다. (2) 는 (1) 에게동봉된자료와함께뿌려준다. 123

124 ADO.NET ( 데이터베이스 ) 닷넷 (ASP.NET) 과 DBMS(MS SQL Server) (3) 은명령을기다리고있다가요청명령이오면응답한다. (2) 가 (3) 에게내리는명령은 SQL( 쿼리 ; 쿼리문 ; 시퀄 ) 이다. (3) 이 SQL 명령을받게되면그명령의결과를 (2) 에게줄경우가있고주지않을경우가있다. 자료를요청하는명령에대해서만결과를돌려주며 DB 에자료를입력, 수정, 삭제하는 SQL 명령에대해서는돌려줄자료가없다. 124

125 ADO.NET ( 데이터베이스 ) 닷넷 (ASP.NET) 과 DBMS(MS SQL Server) DB 를알아야되는이유는직접 DB 에자료를넣거나빼야되기때문이다. [ 중요 1] DB 는테이블 (TABLE) 의묶음이다. [ 중요 2] 테이블은 1 개이상의컬럼이꼭존재해야자료를담을수있다. [ 중요 3] ASP.NET 과 DB 는아무관련이없다. 자료저장소가 DB 일뿐이다. [ 중요 4] ASP.NET 에서 DB 서버로내리는명령을 SQL 이라고한다. [ 중요 5] DB 서버는받은명령이자료요청이라면결과를응답할것이다. 125

126 ADO.NET ( 데이터베이스 ) 데이터베이스작업 DB 에관해알아보기위해 [ 시작 - 프로그램목록 ] 에서 SQL Server Management Studio 를실행한다 DB 서버접속정보를입력한후접속을한다. 서버이름 : NOTEBOOK-PC\STUDY 인증 : SQL Server 인증로그인 : sa 비밀번호 : 1234 현재작업컴퓨터는웹서버기능과동시에 DB 서버도동작한다. WEB(HTTP) 는기본네트워크포트 80 번이며 SQL Server 는 1443 번포트이다. 포트번호가다르기때문에여러서버가한컴퓨터에서동작할수있다. 현재접속하는서버가로컬서버이기에컴퓨터이름으로접속이가능한것이며외부서버접속은서버의도메인이나 IP 로접속해야한다. 126

127 ADO.NET ( 데이터베이스 ) 데이터베이스생성데이터베이스명 : aspnet 127

128 ADO.NET ( 데이터베이스 ) 테이블생성새테이블만들기를수행하면중간에입력항목이생긴다. 총 3 개의항목이며테이블내열 (Column) 을만드는과정이다. DATABASE(TABLE 의묶음 ) > TABLE( 자료담는곳 ) > COLUMN 의모음 128

129 ADO.NET ( 데이터베이스 ) 테이블생성회원테이블 : member_table DB 설계 (member_table) 열 (Column) 이름자료형식목적 user_id 문자열 (varchar), 20 자회원의로그인아이디 user_password 문자열 (varchar), 15 자로그인비밀번호 user_name 문자열 (varchar), 10 자회원이름 user_regdate 날짜 (datetime), 기본회원가입일자 129

130 ADO.NET ( 데이터베이스 ) 테이블생성회원테이블 : member_table DB 설계 (member_table) [ 데이터형식 ] 항목에서괄호 ( ) 의내용은해당자료형의크기이다. 문자열은크기를 DB 설계자가지정해주지만정수형, 날짜, bit 형등은해당자료형의크기가고정이라지정할수없다. Null 허용이체크되지않은컬럼에값을주지않으면 DB 에서오류가발생된다. 입력이다되었으면저장하기버튼을눌러 member_table 이라는이름으로테이블을저장한다. 130

131 ADO.NET ( 데이터베이스 ) 개체탐색기 ( 생성된테이블 ) 관리도구의개체탐색기에서 [aspnet] 데이터베이스내에테이블 [member_table] 이저장된것을확인할수있다. 만든테이블수정시테이블을선택후오른쪽마우스버튼을눌러 [ 디자인 ] 에서수정가능하다. 131

132 ADO.NET ( 데이터베이스 ) DB 명령어 (SQL 문 ; 쿼리 ; 쿼리문 ; 시퀄 ) 관리도구에서 aspnet 이라는이름의데이터베이스생성 member_table 이라는이름의테이블생성이라는과정은모두내부적으로 DB 명령어를수행한것이다. 자료롤넣거나보는것도모두쿼리문으로명령을한다. ASP.NET 에서도마찬가지로 DB 에자료를넣거나빼기위해쿼리문을이용한다. 따라서 SQL 문을알아야한다. 쿼리문은 DB 단계에서이루어진다. 테이블단위가아니라 DB 에서 1 개이상의테이블에게명령을내리게된다. 132

133 ADO.NET ( 데이터베이스 ) DB 명령어 (SQL 문 ; 쿼리 ; 쿼리문 ; 시퀄 ) 관리도구에서 SQL 문을작성해서실행해보자. 상단의 [ 새쿼리 (N)] 버튼을클릭한다중간에입력할수있는화면이뜨게되며여기에 SQL 문을입력할수있다. 꼭알아야할 4 가지 SQL 문 1. 테이블에자료넣기 (INSERT) - 게시물글쓰기, 회원가입 2. 테이블의자료가져오기 (SELECT) - 게시물목록, 회원목록 3. 테이블자료수정 (UPDATE) - 게시물수정, 회원정보변경 4. 테이블자료삭제 (DELETE) - 게시물삭제, 회원탈퇴 member_table 에는총 4 개의열이있다. 이 4 개의열은각각자료가모두들어가야지만하나의자료가만들어진다. 이하나의자료를레코드 (Record) 라고부른다. 쿼리문으로자료를넣는다는것은상수값을할당하는것과유사하다. 프로그래밍시 DB 를연동하는가장큰목적은테이블에들어가는자료는 사용자또는어떤외부의변하는값 이기때문이다. 133

134 ADO.NET ( 데이터베이스 ) DB 명령어 member_table 에자료입력 : INSERT INSERT -자료입력 INTO -어디에 테이블명 -해당테이블에 ( 컬럼1, 컬럼2.) -해당컬럼순서대로 VALUES -값은 ( 컬럼1값, 컬럼2값,..) -( 홍길동,35 ) 자료를넣는쿼리문은다음과같다. INSERT INTO member_table (user_id, user_password, user_name, user_regdate) VALUES ( test_id, testpwd, 홍길동,getdate()) 해당컬럼명에맞는자료를넣으면된다. 관리도구에서입력하고 F5 를눌러실행한다. 실행후하단에실행결과메시지를확인할수있다. 134

135 ADO.NET ( 데이터베이스 ) DB 명령어 member_table 의자료조회 : SELECT SELECT 컬럼 1, 컬럼 2 ( 또는 *) FROM 테이블명 WHERE 조건문 member_table 의모든자료를조회하는구문은아래두개의구문과같다. SELECT * FROM member_table SELECT user_id, user_password, user_name, user_regdate FROM member_table hems 컬럼의정보를출력하려면 * 또는모든컬럼명을나열한다. 해당컬럼만결과를얻고자할경우해당컬럼명만입력한다. SELECT 쿼리문에조건을주고자할경우 WHERE 키워드를입력하고뒤에조건문을입력한다. 조건문의형식은 컬럼명 [ 연산자 ] 값 형식이다. (P95 참고 ) 135

136 ADO.NET ( 데이터베이스 ) DB 명령어 member_table 의자료수정 : UPDATE UPDATE 테이블명 SET 컬럼명 = 컬럼값 1, 컬럼명 2= 컬럼값 2. WHERE 조건문 WHERE 조건문이없다면테이블전체가수정된다. 일반적으로 UPDATE 문은 WHERE 절이들어가게된다. UPDATE member_table SET user_name= 김철수 WHERE user_id= test_id UPDATE member_table SET user_password= 1234, user_name= 손님 WHERE user_id= test_id 136

137 ADO.NET ( 데이터베이스 ) DB 명령어 member_table 의자료삭제 : DELETE DELETE FROM 테이블명 WHERE 조건문 UPDATE 쿼리문처럼 DELETE 문도 WHERE 조건문이없다면테이블전체가삭제된다. DELETE FROM member_table WHERE user_id= test_id ; DELETE FROM member_table WHERE user_name= 홍길동 OR user_name LIKE 김 % 관리도구에서 DB 에명령을내리기위한기본적인 4 개의쿼리문형식을알아보았다. 137

138 ADO.NET ( 데이터베이스 ) ASP.NET 에서 DB 연동하기 ASP.NET 은닷넷 (.NET Framework) 중웹어플리케이션개발을위한것이다. 닷넷에서 DB 연동은 ADO.NET 이라불리기도하는 System.Data 네임스페이스를이용한다. 닷넷플랫폼을이용하는 DB 연동방법은모두동일하다. 개발자가 DB 와연동하기위해다음사항은알아두자. 1. 어떤 DBMS 인가? SQL Server, MySQL, Oracle 2. DB 서버는어디에있으며접속을어떻게구성하였나? 도메인서비스방식연결, IP 연결방식. 3. 접속하는 DB 명은무엇인가? aspnet 4. 해당 DB 의권한 ID/PW 는무엇인가? sa, 1234 DB 연결을위해 ADO.NET 을이용한다고했다. ADO.NET 을이용한다는것은 System.Data.XXX 를사용한다고생각하면된다. DB 연동시에는기본적으로 System.Data 를참조한다. SQL Server 연동에해당되는클래스를이용하기위해 System.Data.SqlClient 네임스페이스도참조한다. 138

139 ADO.NET ( 데이터베이스 ) Visual Studio 2010 에서새로운프로젝트를생성해보자. [ 새프로젝트 ASP.NET 웹어플리케이션 이름 : AspNet] 프로젝트를생성후솔루션탐색기를살펴보면해당프로젝트의구성파일들이자동생성되어있다. [ 솔루션탐색기 추가 새항목 WebForm db1.aspx] 를지정한다. 139

140 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet - ASP.NET 에서 DB 연동하기 작성순서 <%@ Page Language= C# runat= server %> <%@ Import Namespace= System.Data %> <%@ Import Namespace = System.Data.SqlClient %> <script language= C# runat= server > void Page_Load(). </script> aspx 파일에서 namespace 참조는상단코드에서처럼 import 키워드를사용하여선언한다. <html> </html> 등의디자인관련태그는필요하지만프로그래밍코드부분과의혼돈을배제하기위해예제해서는생략한다. 140

141 ADO.NET ( 데이터베이스 ) DB 연결 우선 DB 서버에연결을해야할것이고쿼리문을이용해 DB 에명령을내려서자료를넣거나지우거나수정하거나가져올수있을것이다. 그리고 DB 연결을끊어준다. 1. DB 연결 2. 명령 ( 쿼리문수행 ) 3. DB 연결끊기 141

142 ADO.NET ( 데이터베이스 ) DB 연결명령 ( 쿼리문수행 ) 에해당하는부분이쿼리문에해당된다. 1. SELECT FROM [ 테이블명 ] 결과가 1 개인것, 결과가 2 개이상인것 2. INSERT( 입력 ), UPDATE( 수정 ), DELETE( 삭제 ) 결과가없다. 크게결과가있는 SELECT 와그외결과가없는쿼리문으로나뉘어진다. SELECT 문을쓰는이유는조회하기위함이니결과가존재한다. 그외결과가없는 INSERT, UPDATE, DELETE 처럼데이터를넣거나수정, 삭제하는쿼리들은결과가없지만해당쿼리에의해적용된레코드수는알수있다. ADO.NET 에서는이런 DB 연동시에입출력되는자료의종류에따라몇가지의메서드를제공한다. 결과가 1 개밖에없다고예상되면단일값을리턴하는메서드를이용하고, 결과가여러개인것은좀더규모가큰결과를리턴하는메서드를이용해야한다. 142

143 ADO.NET ( 데이터베이스 ) 프로그래밍코드로 DB 접속하기사용할 DB 는생성한 aspnet 데이터베이스의 member_table 테이블을이용한다. DB 에연결하는클래스이름은 SqlConnection 이다. SQL Server 용의클래스는앞에 Sql 이붙는다고생각하자. 다른 DB 는 Ole.. 명령을위한클래스이름은 SqlCommand 이다. SqlCommand 로명령을내린결과물이있을경우 1 개의결과를리턴하는경우와여러개의결과를리턴하는경우가있다고했다. 여러개의결과가넘어오는 DataSet 이라는것으로리턴되는데이것은 Data Adapter 에의해만들어진다. 각각의클래스이름은 DataSet, SqlDataAdapter 이다. 1. DB 연결 2. 명령 3. DB 연결끊기 먼저 1.DB 연결과 3.DB 연결끊기코드를작성해보자. 143

144 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet\db1.aspx - ASP.NET 에서 DB 연동하기 (DB 연결과 DB 연결끊기 ) 작성순서 <%@ Page Language= C# runat= server %> <%@ Import Namespace= System.Data %> <%@ Import Namespace = System.Data.SqlClient %> <script language= C# runat= server > void Page_Load() string str_conn = server=notebook-pc\\study;user id=sa;password=1234;database=aspnet ; SqlConnection conn = new SqlConnection(str_conn); Response.Write( before : + conn.state + <hr> ); conn.open(); Response.Write( before : + conn.state + <hr> ); conn.close(); Response.Write( before : + conn.state + <hr> ); </script> 144

145 ADO.NET ( 데이터베이스 ) 설명 DB 서버에연결하기위한클래스인 SqlConnection 을 str_conn 이름의스트링변수로지정하였다. SqlConnection conn = new SqlConnection(string 연결문자열 ) 연결문자열의상수가지정된 str_conn 변수를살펴보자. server=notebook-pc\\study; user id=sa password=1234; database=aspnet server, user id, password, databse 이렇게 4 가지로지정하여연결문자열을구성할수있다. conn.open(); conn.close() 부분이 DB 와연결을하고 (Open), 연결끊기 (Close) 할때의연결상태를출력해본다. Close() 메서드로명시적으로연결을끊어주지않으면웹서버와 DB 서버의연결이일정시간동안유지될것이다. 그시간동안불필요한자원을낭비하게된다. 그러므로열었으면꼭끊어주도록한다. 145

146 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet\db2.aspx - ASP.NET 에서 DB 연동하기 ( 쿼리문 ) 작성순서 <%@ Page Language= C# runat= server %> <%@ Import Namespace= System.Data %> <%@ Import Namespace = System.Data.SqlClient %> <script language= C# runat= server > void Page_Load() string str_conn = server=notebook-pc\\study;user id=sa;password=1234;database=aspnet ; SqlConnection conn = new SqlConnection(str_conn); conn.open(); //DB 연동작업시작 //DB연동작업끝 conn.close(); </script> 146

147 ADO.NET ( 데이터베이스 ) 결과값이없는 INSERT, DELETE, UPDATE 쿼리문 INSERT 문실행쿼리문을담당하는클래스는 SqlCommand 클래스이다. MSDN 에서 System.Data.SqlClient 내의 SqlCommand 클래스를살펴보자. 메서드를보면여러가지메서드들이있는데 ExecuteReader, ExecuteNonQuery, ExecuteScalar 이렇게 3 개의메서드가필요하다. ExecuteNonQuery() 메소드 : 결과물이없는쿼리문을실행할때사용하는메서드 결과가없는쿼리문을실행할때 ExecuteNonQuery() 메서드사용결과가있는쿼리문을실행할때 ExecuteScalar(), ExecuteReader() 메서드사용 147

148 ADO.NET ( 데이터베이스 ) DB 관리도구를실행시켜 aspnet DB 에있는테이블의자료를확인해보자. SELECT * FROM member_table db2.aspx 코드내에 INSERT 문으로 member_table 에자료를넣는코드를추가 INSERT INTO member_table VALUES( aspnet, 1234, 닷넷초보 getdate()) //DB 연동작업시작 string QUERY = INSERT INTO member_table VALUES( aspnet, 1234, 닷넷초보,getdate()) ; SqlCommand cmd = new SqlCommand(QUERY, conn); cmd.executenonquery(); //DB 연동작업끝 db2.aspx 파일을저장하고한번실행하고 DB 관리도구에서 F5 를눌러자료가잘입력되었는지확인해본다. 리턴이없는 INSERT, DELETE, UPDATE 쿼리문의실행방법은모두동일하게사용하면된다. 148

149 ADO.NET ( 데이터베이스 ) 결과값이있는 SELECT 문 (1 개의결과값을리턴하는 ExecuteScalar() 메서드 ) SELECT 문실행 ExecuteScalar() 메서드는딱하나의값만결과값으로읽어온다. 레코드가 1 개인값이라도컬럼이 2 개라면 ExecuteScalar() 메서드를사용할수없다. 오직한개만가능하다. ExecuteScalar() 메서드의리턴형은 object 형이다. object 형은어떤자료인지알수없는특정클래스형이자닷넷의모든자료형을일컫는다. 자료를리턴하는형은왜 object 형일까? DB 서버에보낸 SELECT 쿼리의결과를예상할수없기때문이다. 닷넷입장에서어떤자료형의값을넘겨받을지알수없기때문이다. 그러므로 ExecuteScalar() 메서드는개발자가받아서따로자료를실제 DB 의컬럼에해당하는자료형으로바꾸어주어야한다. 149

150 ADO.NET ( 데이터베이스 ) DB 관리도구를실행시켜 aspnet DB 에있는테이블의자료를확인해보자. SELECT count(*) FROM member_table SELECT user_name FROM member_table db2.aspx 코드내에 SELECT 문으로 member_table 에서해당데이터가져오기 SLECT user_name FROM member_table WHERE user_id= aspnet //DB 연동작업시작 string QUERY = SLECT user_name FROM member_table WHERE user_id= aspnet ; SqlCommand cmd = new SqlCommand(QUERY, conn); object result = cmd.executescalar(); Response.Write(result); //DB 연동작업끝 일반적으로 ExecuteScalar 메서드는 WHERE 절이들어가는경우가많다. 목적상 1 개의레코드에 1 개의컬럼을가져오기위한메서드이기때문이다. 150

151 ADO.NET ( 데이터베이스 ) SELECT 의결과로리턴되는값이 member_table 의 user_regdate 컬럼일경우 user_regdate 컬럼은 datetime 데이터형식을가지므로다음과같은작업을해서닷넷 DateTime 을출력한것처럼활용할수도있다. //DB 연동작업시작 string QUERY = SELECT user_regdate FROM member_table WHERE user_id= aspnet ; SqlCommand scmd = new SqlCommand(QUERY, conn); //object result = scmd.executescalar(); DateTime result = (DateTime)scmd.ExecuteScalar(); //Response.Write(result); Response.Write(result.ToString( yyyy 년 MM 월 dd 일 )); //DB 연동작업끝 151

152 ADO.NET ( 데이터베이스 ) 결과값이있는 SELECT 문 (2 개이상의결과값을리턴하는 ExecuteReader() 메서드 ) SELECT 문실행 ExecuteReader() 메서드는 2 개이상의결과값을리턴한다. 테이블의모든자료를가져오는쿼리의경우 ExecuteReader() 메서드로가능하다. ExecuteScalar() 메서드의리턴형은 SqlDataReader 클래스형이다. 그러므로결과값은 SqlDataReader 클래스형으로받으면된다. SqlDataReader 클래스는아직생소하다. MSDN 에서 SqlDataReader 클래스의멤버들을살펴보자. SqlDataReader 클래스에서눈여겨봐야할메서드는 Read() 메서드이다. MSDN 에보면 Read() 메서드는 SqlDataReader 를다음레코드로이동합니다. 라고적혀있다. 152

153 ADO.NET ( 데이터베이스 ) 결과값이있는 SELECT 문 (2 개이상의결과값을리턴하는 ExecuteReader() 메서드 ) SqlDataReader 의 data 를가리키는현재위치는아래그림과같다. 이위치에서는데이터를읽을수없다. data.read() 를 1 회실행하면 SqlDataReader 는결과값의첫번째레코드로이동한다. 빨간동그라미하단의화살표가위치한레코드의각각의컬럼인 user_id, user_regdate 등의데이터를읽을수있다. 그런이후 Read() 를다시한번실행하면다음레코드로이동하여읽을수있다. MSDN 에설명되어있는 Read() 메서드의리턴은 bool 이다. 읽을수있는행 ( 레코드 ) 가있으면 true, 없으면 false 의값을리턴한다. 그러므로모든데이터를읽기위해서는 SqlDataReader.Read() 가 false 일때까지루프를돌면된다. 153

154 ADO.NET ( 데이터베이스 ) 결과값이있는 SELECT 문 (2 개이상의결과값을리턴하는 ExecuteReader() 메서드 ) SqlCommand.ExecuteReader() 메서드는모든자료를읽기는하는데정방향 (Forward) 전용이다. 한번읽은자료는되돌아가서다시읽을수없다는의미이다. Read() 메서드는다음레코드로이동할뿐이다. 154

155 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet\db2.aspx - ASP.NET 에서 DB 연동하기 ( 쿼리문 ) 작성순서 <%@ Page Language= C# runat= server %> <%@ Import Namespace= System.Data %> <%@ Import Namespace = System.Data.SqlClient %> <script language= C# runat= server > void Page_Load() string str_conn = server=notebook-pc\\study;user id=sa;password=1234;database=aspnet ; SqlConnection conn = new SqlConnection(str_conn); conn.open(); //DB 연동작업시작 //ExecuteReader 코드작업 //DB연동작업끝 conn.close(); </script> 155

156 ADO.NET ( 데이터베이스 ) 작성순서 //DB 연동작업시작 string QUERY = SELECT * FROM member_table ; SqlCommand scmd = new SqlCommand(QUERY, conn); SqlDataReader data = scmd.executereader(); while(data.read()) Response.Write( String.Format( 사용자 : 0 ( 이름 : 1, 비밀번호 : 2)<hr> data[0], data[ user_name ], data[1], data[3]) ); //DB 연동작업끝 156

157 ADO.NET ( 데이터베이스 ) 결과값이있는 SELECT 문 (2 개이상의결과값을리턴하는 ExecuteReader() 메서드 ) 자료의출력방법은위의예처럼 SqlDataReader 컬렉션을사용하면된다. 컬럼순서에따라 data[0] 에서 data[3] 까지이용하거나컬럼명을 data[ 컬럼명 ] 형식으로지정하면된다. 이자료는 object형이기때문에따로가공하려면해당자료형으로변환을하여사용해야한다. String user_name = data[ user_name ]; String user_name = (string)data[ user_name ]; string user_name = data[ user_name ] + 님 ; // 오류발생, object 형을가지고있음 157

158 ADO.NET ( 데이터베이스 ) ASP.NET 과 DB 연동에관한정리 닷넷프로그래밍에서 DB 연동을위해 ADO.NET 을이용한다. ADO.NET 을이용하려면 System.Data 네임스페이스에들어있는클래스들을이용한다. 연결하기위해서는 (1)SqlConnection 클래스를이용하고해당연결정보를 SqlCommand 클래스에서참조하게된다. (2)SqlCommand 는실제 DB 서버에쿼리문을날리는역할을한다. SqlCommand 로 ExecuteNonQuery, ExecuteScalar, ExecuteReader 의세가지메서드를이용해서쿼리문의성격에맞게적용할수있다. 158

159 ADO.NET ( 데이터베이스 ) ADO.NET 에서 SqlDataAdapter 클래스사용하기 게시판서비스를보면게시물들을데이터베이스의테이블내자료를가져와서뿌려주는기능을한다. SqlCommand.ExecuteReader() 메서드로 SqlDataReader 클래스형식을만들어출력하면되겠지만 Read() 한이후다시돌아갈수없다는단점이있다. 가장큰문제점은연결지향방식이기때문에자료를처리하는동안 DB 와연결을끊을수없다. 그말은즉, DB 서버와연결되는자원을계속사용하고있다는말도일치한다. 이런단점을위해 ADO.NET 에서는 SqlDataAdapter 는쿼리의결과를 DataSet 클래스에담아주는역할을한다. DBMS 의 DB 의모습을그대로옮겨왔다고생각하면쉽다. 159

160 ADO.NET ( 데이터베이스 ) ADO.NET 에서 SqlDataAdapter 클래스사용하기 DataSet 클래스가 DB 와유사한모습을하고있다. DataSet 은 DataTable 클래스의묶음이고, DataTable 클래스는 DataRow 를가지고있다. DataRow 는 DataColumn 을가지고있게된다. 이들은각각해당컬렉션으로동작한다. DataSet 에쿼리문의결과값을 SqlDataAdapter 클래스를이용하여 DataSet 에그대로넣을수있다. SqlDataReader 대신 DataSet 을이용하는이유는데이터를 DataSet 에넣은후바로 DB 연결을끊을수있기때문에단지자료를보여주기위한기능으로서는매우적합하다. 160

161 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet\db3.aspx - ADO.NET 에서 SqlDataAdapter 클래스사용하기 작성순서 //DB 연동작업시작 string QUERY = SELECT * FROM member_table ; SqlDataAdapter da = new SqlDataAdapter(QUERY, conn); DataSet ds = new DataSet(); da.fill(ds); Response.Write( 1.DataTable : + ds.tables[0] + <br> ); Response.Write( 2.DataTable.Rows.Count : + ds.tables[0].rows.count + <br> ); Response.Write( 3.DataTable.Rows : + ds.tables[0].rows + <br> ); Response.Write( 4.DataTable.Rows[0] : + ds.tables[0].rows[0] + <br> ); Response.Write( 5.DataTable.Columns.Count : + ds.tables[0].columns.count + <br> ); Response.Write( 6.DataTable.Columns : + ds.tables[0].columns + <br> ); Response.Write( 7.DataTable.Columns[0] : + ds.tables[0].columns[0] + <br> ); //DB 연동작업끝 161

162 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet\db3.aspx - ADO.NET 에서 SqlDataAdapter 클래스사용하기 작성순서 //DB 연동작업시작 string QUERY = SELECT * FROM member_table ; SqlDataAdapter da = new SqlDataAdapter(QUERY, conn); DataSet ds = new DataSet(); da.fill(ds); //DB 연동작업끝 conn.close(); DataTable dt = ds.tables[0]; for(int i=0; i<dt.rows.count;i++) Response.Write( String.Format( 사용자 : 0 ( 이름 : 1, 비밀번호 : 2)<br> 등록일 :3<hr>, dt.rows[i][0], dt.rows[i][ user_name ], dt.rows[i][1], dt.rows[i][3]) ); 162

163 ADO.NET ( 데이터베이스 ) 설명 DB 서버에연결하여쿼리를날린결과를 DataSet 클래스의객체인 ds 에채웠다. 데이터를채운후바로 DB 연결을끊었다. 이미결과는 DataSet 인 ds 에담겨져있기때문에 DB 연결은더이상필요가없다. DataTable 은 DataTable.Rows 라는컬렉션이있기때문에모든자료를가져오는방법은 dt.rows.count 로가지고있는레코드수만큼루프를돌리면된다. dt.rows[2][3] : 세번째레코드의네번째컬럼 :53:02 dt.rows[0][1] : 첫번째레코드의두번째컬럼 testpwd dt.rows[1][ user_password ] : 두번째레코드의 user_password 컬럼 1234 상단내용교재 P117 내용정정 163

164 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet\db4.aspx - ADO.NET 에서 SqlDataAdapter 클래스사용하여 DataGrid 컨트롤에바인딩하기 작성순서 - 코드부분 (C# Script 부분 ) //DB 연동작업시작 string QUERY = SELECT * FROM member_table ; SqlDataAdapter da = new SqlDataAdapter(QUERY, conn); DataSet ds = new DataSet(); da.fill(ds); //DB 연동작업끝 conn.close(); //DB 연동작업끝 164

165 ADO.NET ( 데이터베이스 ) 작성순서 - 디자인부분 <form runat= server > <ASP:DataGrid id= dg1 runat= server /> </form> - 코드부분추가.. dg1.datasource = ds.tables[0]; dg1.databind(); 165

166 ADO.NET ( 데이터베이스 ) 설명 SELECT 쿼리결과를 SqlDataAdapter 로 DataSet 을만들어데이터를보관하고있다가해당컨트롤에서 DataSource 를지정하고 DataBind 를해주면지정한컨트롤에서 DataSet 내의자료를이용할수있다 ASP.NET 에서 DB 연동시 DataSource 즉, DataTable 형식을이용하여데이터를연결할수있는웹폼이여러개존재한다. DataList, DataGrid, GridView, Repeater 등등의정보는 MSDN 을참고하자. 여러웹폼중 Repeater 컨트롤만예제와함께살펴보도록하자. 166

167 ADO.NET ( 데이터베이스 ) 예제 - c:\dotnetcsharp\aspnet\db5.aspx - ADO.NET 에서 SqlDataAdapter 클래스사용하여 Repeater 컨트롤에바인딩하기 작성순서 - 코드부분 (db5.aspx.cs) using System.Data; using System.Data.SqlClient; protected void Page_Load(object sender, EventArgs e) string str_conn = server=notebook-pc\\study + user id=sa;password=1234;database=aspnet ; SqlConnection conn = new SqlConnection(str_conn); conn.open(); string QUERY = SELECT * FROM member_table ; SqlDataAdapter da = new SqlDataAdapter(QUERY, conn); DataSet ds = new DataSet(); da.fill(ds); conn.close(); 167

168 ADO.NET ( 데이터베이스 ) 작성순서 - 디자인부분 (db5.aspx) <form id= form1 runat= server > <div> <asp:repeater ID= rpt1 runat= server > <ItemTemplate> <%# Eval( user_name ) %> <br/> 가입일 : <%# Eval( user_regdate ) %> <hr/> </ItemTemplate> </asp:repeater> </div> </form> - 코드부분추가 (db5.aspx.cs) Page_Load 이벤트내하단에추가한다. rpt1.datasource = ds.tables[0]; rpt1.databind(); 168

169 ADO.NET ( 데이터베이스 ) Web.Config DB Connection String 정의 <configuration> <connectionstrings> <add name= applicationservices connectionstring=. providername=. /> <add name= dbconnectteststring connectionstring= Data Source=MISOYA-PC\study; Initial Catalog=aspnet;User ID=sa;Password=1234 providername= System.Data.SqlClient /> </connectionstrings> </configuration> 기존.cs 파일에서 string strconn = server=misoya-pc\\study;user id=sa;password=1234;database=aspnet ; 대신 string strconn = ConfigurationManager.ConnectionStrings[ dbconnectteststring ].ConnectionString; 169

170 ADO.NET ( 데이터베이스 ) Database.cs 클래스생성 170

171 ASP.NET( 웹프로그래밍 ) 웹프로그래밍 PHP, JSP 등모든웹어플리케이션의결과물은 HTML 이다. javascript, css, html 태그등은웹브라우저가해석하는결과물로출력될뿐닷넷자체로는많은연관성을가지고있는것은아니다. ASP.NET 은 [ 서버컨트롤 ] 이라는큰특징을가지고있다. 프로그래머가서버컨트롤을이용하여웹프로그램을만들게되면닷넷에서서버컨트롤을웹브라우저가해석할수있도록태그등으로렌더링하게된다. 응용어플리케이션처럼닷넷의모든기능을사용할수있으나플랫폼특징상제한이있다. 171

172 ASP.NET( 웹프로그래밍 ) 예제 - c:\dotnetcsharp\aspnet\ex1.aspx - 입력한문자뿌려주기 작성순서 - 디자인부분 (ex1.aspx) form 태그내에 3 개의컨트롤을삽입한다. <asp:textbox ID= TextBox1 runat= server ></asp:textbox> <asp:button ID= Button1 runat= server Text= 클릭 /> <br/><br/> <asp:label ID= Label1 runat= server Text= - 출력 - ></asp:label> - 코드부분 (ex1.aspx.cs) 디자인부분에서추가한컨트롤중버튼컨트롤을더블클릭한다. protected void Button1_Click(object sender, EventArgs e) Label1.Text = String.Format( 어서오세요!0 님, 환영합니다., TextBox1.Text); 172

173 ASP.NET( 웹프로그래밍 ) 예제 - c:\dotnetcsharp\aspnet\ex2.aspx - 카운터구현 ( 파일처리관련클래스 ) 작성순서 - 디자인부분 (ex1.aspx) form 태그내에 3 개의컨트롤을삽입한다. 총 <asp:label1 ID= Label1 runat= server >/asp:label1> 회방문하였습니다. - 코드부분 (ex1.aspx.cs) 디자인부분에서추가한컨트롤중버튼컨트롤을더블클릭한다. using System.IO; protected void Page_Load(object sender, EventArgs e) // 카운터코드작성 173

174 ASP.NET( 웹프로그래밍 ) 작성순서 - 코드부분 (ex1.aspx.cs) // 카운터코드작성 string count_path = Server.MapPath( count.txt ); // 물리파일경로 int new_count = 1; if(file.exists(count_path) == false) StreamWrite sw = File.CreateText(count_path); // 파일이없으면 : 맨처음접속자 sw.writeline( 1 ); sw.close(); else StreamReader sr = File.OpenText(count_path); string now_count = sr.readline(); sr.close(); // 방문객 +1 new_count = Int32.Parse(now_count) + 1; StreamWriter sw = File.CreateText(count_path); sw.writeline(new_count); sw.close(); Label1.Text = new_count.tostring(); 174

175 175

176 WCF 서비스제작 WCF 는 XML 웹서비스 (Web Service) 기반의차세대서비스통신프레임워크이다. WCF 는통신에사용되는것이며서로통신하고자하는두프로그램이 WCF 를이용하여통신을할수있다 WCF 를통해클라이언트와서비스가통신을하며 WCF 는클라이언트와서비스사이에서상호작용하며둘사이의통신을보다쉽고강력하게해주는역할을한다. 클라이언트와서비스는 XML 메시지를주고받으며클라이언트가서비스에게요청을하고서비스가요청에처리결과를클라이언트에게반환해주는것이다. WCF 를메시징프레임워크라고부르는것도클라이언트와서비스가 XML 메시지를주고받는데사용되는통신프레임워크이기때문이다. 176

177 WCF 서비스제작 어떤기능을제공하는프로그램으로서호출을받는피호출자를서비스 (Service, 서버 ) 라하고기능을제공받기위해호출을수행하는호출자를클라이언트라한다. WCF 서비스는 XML 기반의 SOAP(Simple Object Access Protocol) 메시지를주고받음으로원격호출을수행한다. 실제로 WCF 는 SOAP 메시지뿐아니라 POX 나 JSON 과같은 REST 스타일의메시지를주고받을수있다. WCF 서비스의주요구성요소 : Contract, Address, Binding Address( 주소 ) 클라이언트가서비스를호출하기위해서비스가되고있는인터넷주소. 이주소는바인딩이어떤프로토콜을사용하는가에따라약간다른형태이다. Contract( 계약 ) WCF 서비스가제공하는기능들에대한인터페이스를말한다. WCF 서비스가제공하는메소드들은무엇이며어떤타입의매개변수를취하고그반환타입이무엇인지를기술하는인터페이스를말한다. 177

178 WCF 서비스제작 WCF 서비스의주요구성요소 : Contract, Address, Binding Binding( 바인딩 ) WCF 서비스를네트워크를통해호출할때고려해야할다양한요소들의집합. 1. 어떤프로토콜을사용할것인가? TCP? HTTP? FTP? 2. 데이터포맷은어떤방식을사용할것인가? 바이너리? 텍스트?MIME? 3. 네트워크보안을적용할것인가? 적용할경우보안방식은? SSL? 암호화? Endpoint WCF 서비스의핵심구성요소인주소, 계약, 바인딩이세가지요소를합쳐서비스의종점 (endpoint) 라부르며 WCF 서비스는반드시하나이상의종점을갖는다. WCF 에서클라이언트는반드시서비스의종점을통해서만서비스를호출할수있다. 실제 WCF 클라이언트가 WCF 서비스를호출하기위해서는서비스에대한종점객체를생성해야만가능하며이종점객체는서비스의인터넷주소가무엇인지, 어떤바인딩구성을사용하는지, 서비스의계약은어떠한지를모두명시해야한다. WCF 서비스는 2 개이상의종점을가질수있다. 하나의서비스가 HTTP 기반의바인딩과 TCP 기반의바인을각각사용하는 2 개의종점을가질수있다. 178

179 WCF 서비스제작 서비스가복수개의종점을제공할수있다는것은이전닷넷기반통신기술들인 ASP.NET 웹서비스 (ASMX), 닷넷리모팅, COM+ 이따라올수없는 WCF 만의장점. WCF 서비스를구현하면이서비스는 WCF 호스트에의해호스팅이되어야만클라이언트의호출을받을수있게된다. WCF 가제공하는호스트는다중쓰레드풀을지원하기때문에개발자가여러클라이언트의동시호출도염려없다. 호스트객체 (ServiceHost 클래스 ) 를생성하고 Open() 메서드를호출하면 WCF 런타임이네트워크포트 (port) 나 HTTP 프로토콜을구성하여클라이언트메시지를수신할것이고수신된클라이언트호출은쓰레드풀의쓰레드중한쓰레드에의해 WCF 서비스가호출된다. WCF 클라이언트는서비스의계약으로부터서비스가어떤메서드를제공하며그메서드의매개변수, 반환값에대한정보를얻을수있다. WCF 런타임과유틸리티는서비스의계약정보로부터서비스에대한프록시클래스를생성할수있으며이프록시클래스는웹서비스호출을마치로컬메서드호출과도같은간단한작업으로만들어줄수있다. 179

180 180

181 기본문법참고 클래스와구조체구조체 C 언어에서부터내려온기능으로새로운데이터타입을만드는역할을담당한다. 여러개의변수를묶어새로운데이터타입을만들수있다. 기본구조가클래스와유사하게필드 ( 변수 ) 와메서드를가진다. 하지만클래스와구조체의가장핵심이자큰차이점은클래스는참조타입이지만구조체는값형식이라는것이다 구조체를사용하는이유는클래스가객체를참조하는것은장점이지만클래스가작다면그클래스의객체를위해참조때문에발생하는시간적인낭비가발생할수있다. 이에반해구조체는값형식이므로직접적으로메모리에접근하기때문에낭비를막을수있다. 따라서 C# 에서는크기가작고단순한함수들을포함하고잇는선, 컬러등의요소들은구조체로정의해두고있다. 구조체는상속할수없으며상속해줄수도없다. new 연산자를사용할수있다. 구조체는기본생성자는재정의해서사용할수없다. 이유는값타입의변수를선언함과동시에메모리에생성되기때문이다. 181

182 기본문법참고 인터페이스클래스와유사하지만인터페이스의멤버요소들은구현부분이없는프로토타입만가지고있다. 인터페이스의모든멤버의접근한정자는 public 을기본으로한다. abstract, public, protected, internal, private, virtual, override, static 과같은키워드는사용할수없다. 클래스는하나의클래스만을상속받을수있다. 이때여러개로부터상속받고자할경우하나의클래스로부터상속을받고나머지는인터페이스로부터상속을받는다. 이때인터페이스에설계된되어있고구현되지않은멤버요소는구현처리를하게되면다중상속이가능해진다. class ChildClass : ParentClass, I1Interface, I2Interface 만약위와같이 ChildClass 가하나의클래스와 2 개의인터페이스로부터상속을받았는데같은이름의메서드를포함하고있다면문제가발생한다

183 기본문법참고 대리자직접메소드를호출하여처리하는것이아닌대리자를통해메서드를호출하고자할때대리자 (Delegate) 를사용할수있다. 이럴때한번호출로한개또는여러개의메서드를동시에실행가능하다. 또하나이벤트를만들기위한중간역할또한대리자 (Delegate) 가담당한다. 183

184 감사합니다. 김명정 Microsoft BizSpark Network Partner 184

Title of Presentation

Title of Presentation Visual Studio 2010 을이용한웹애플리케이션개발 (ASP.NET) 웹애플리케이션개발 (ASP.NET) 과정 2013 김명정 Microsoft MVP(Visual C#) Microsoft BizSpark Network Partner kmjrabbit@live.com 웹애플리케이션 (ASP.NET) 개발과정 ASP.NET 살펴보기 ASP.NET 프로그래밍

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E > 6. ASP.NET ASP.NET 소개 ASP.NET 페이지및응용프로그램구조 Server Controls 데이터베이스와연동 8 장. 데이터베이스응용개발 (Page 20) 6.1 ASP.NET 소개 ASP.NET 동적웹응용프로그램을개발하기위한 MS 의웹기술 현재 ASP.NET 4.5까지출시.Net Framework 4.5 에포함 Visual Studio 2012

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft PowerPoint - CSharp-2-기초문법

Microsoft PowerPoint - CSharp-2-기초문법 2 장. C# 기초문법 자료형 제어문 배열 연산자 순천향대학교컴퓨터학부이상정 1 자료형 순천향대학교컴퓨터학부이상정 2 CTS CTS(Common Type System) 닷넷기반의여러언어에서공통으로사용되는자료형 언어별로서로다른자료형을사용할때발생할수있는호환성문제를해결 값 (Value) 형과참조 (Reference) 형을지원 CTS가제공하는모든자료형은 System.Object를상속받아구현

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

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

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

한국 컴퓨터그래픽스(디지털컨텐츠)의 현황과 미래 위기인가? 기회인가?

한국 컴퓨터그래픽스(디지털컨텐츠)의 현황과 미래 위기인가? 기회인가? Chapter 14 ADO.NET 학습목표 ADO.NET 은데이터베이스사용의편의를위해, MS 사가만든표준데이터베이스인터페이스이다. 프로그램을한다는것에있어서빠질수없는부분이데이터베이스부분이다. ADO.NET 의 C# 에서활용을학습하도록한다. 2 ADO.NET 의개요 ADO.NET.NET 에서데이터베이스조작에관련된.NET 클래스들의집합 다양한방법으로데이터베이스를검색,

More information

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - Chapter 6.ppt 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; // 컴파일오류 3 C 의 const (1)

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074> 객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

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

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

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

초보자를 위한 C# 21일 완성 C# 21., 21 C#., 2 ~ 3 21. 2 ~ 3 21.,. 1~ 2 (, ), C#.,,.,., 21..,.,,, 3. A..,,.,.. Q&A.. 24 C#,.NET.,.,.,. Visual C# Visual Studio.NET,..,. CD., www. TeachYour sel f CSharp. com., ( )., C#.. C# 1, 1. WEEK

More information

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

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 왜생겼나요..? : 절차지향언어가가진단점을보완하고다음의목적을달성하기위해..! 1. 소프트웨어생산성향상 객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를 가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임. 2. 실세계에대한쉬운모델링 실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사. 캡슐화 메소드와데이터를클래스내에선언하고구현

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

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

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 HTML5 웹프로그래밍입문 부록. 웹서버구축하기 1 목차 A.1 웹서버시스템 A.2 PHP 사용하기 A.3 데이터베이스연결하기 2 A.1 웹서버시스템 3 웹서버의구축 웹서버컴퓨터구축 웹서버소프트웨어설치및실행 아파치 (Apache) 웹서버가대표적 서버실행프로그램 HTML5 폼을전달받아처리 PHP, JSP, Python 등 데이터베이스시스템 서버측에데이터를저장및효율적관리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

제 1장 C#의 개요

제 1장 C#의 개요 C# 프로그래밍언어 MS사의앤더스헬스버그 (Anders Hejlsberg) 가고안.NET에최적화된언어컴포넌트지향프로그래밍언어자바의단점을보완 실행방법 : 자바 : 인터프리테이션, C#: 컴파일방법자바언어를대체할수있는언어 C# 의특징 객체지향언어 : 자료추상화델리게이트와이벤트멀티스레드, 예외처리연산자중복, 제네릭 C 계열의언어 C++ 와자바로부터영향을받았음. C:

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 메소드의구조자주반복하여사용하는내용에대해특정이름으로정의한묶음 반환형메소드이름 ( 매개변수 ) { 실행문장 1; : 실행문장 N; } 메소드의종류 Call By Name : 메서드의이름에의해호출되는메서드로특정매개변수없이실행 Call By Value : 메서드를이름으로호출할때특정매개변수를전달하여그값을기초로실행하는메서드 Call By Reference : 메서드호출시매개변수로사용되는값이특정위치를참조하는

More information

Infinity(∞) Strategy

Infinity(∞) Strategy 반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

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

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

슬라이드 1

슬라이드 1 UNIT 08 조건문과반복문 로봇 SW 교육원 2 기 학습목표 2 조건문을사용핛수있다. 반복문을사용핛수있다. 조건문 3 조건식의연산결과에따라프로그램의실행흐름을변경 조건문의구성 조건식 실행될문장 조건문의종류 if switch? : ( 삼항연산자 ) if 조건문 4 if 문의구성 조건식 true 또는 false(boolean 형 ) 의결과값을갖는수식 실행될문장

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

슬라이드 1

슬라이드 1 Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

슬라이드 1

슬라이드 1 UNIT 6 배열 로봇 SW 교육원 3 기 학습목표 2 배열을사용핛수있다. 배열 3 배열 (Array) 이란? 같은타입 ( 자료형 ) 의여러변수를하나의묶음으로다루는것을배열이라고함 같은타입의많은양의데이터를다룰때효과적임 // 학생 30 명의점수를저장하기위해.. int student_score1; int student_score2; int student_score3;...

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

3ÆÄÆ®-14

3ÆÄÆ®-14 chapter 14 HTTP >>> 535 Part 3 _ 1 L i Sting using System; using System.Net; using System.Text; class DownloadDataTest public static void Main (string[] argv) WebClient wc = new WebClient(); byte[] response

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information