microsoft windows mobilekowon.dongseo.ac.kr/~dkkang/mobile2009spring/ch03.pdf · *.exe or *.dll •...

Post on 28-Sep-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Microsoft W

indows Mobile

Microsoft W

indows Mobile

Dae-Ki Kang

차례

•소

개(Introduction)

•설

치(Installation)

•헬

로(Hello, Smartphone! etc. in MFC of C++)

•헬

로(Hello, Smartphone! etc. in MFC of C++)

•배

포(Deployment (upload a program to a smart

device))

•GUI (GUI Programming in C#)

•C#의

개요

•C# 프

로그

래밍

실습(M

ore Serious Issues in C#)

소개

[1/2]

C# 프

로그

래밍

언어

MS사

의앤

더스

헬스

버그(Anders Hejlsberg)가

고안

.NET에

최적

화된

언어

컴포

넌트

지향

프로

그래

밍언

어자

바의

단점

을보

완자

바의

단점

을보

완실

행방

법: 자

바: 인

터프

리테

이션, C#: 컴

파일

방법

자바

언어

를대

체할

수있

는언

C#의

특징

객체

지향

언어: 자

료추

상화

델리

게이

트와

이벤

트멀

티스

레드, 예

외처

리연

산자

중복, 제

네릭

소개

[2/2]

C 계

열의

언어

C++와

자바

로부

터영

향을

받았

음.

C: 연

산자

와문

장등

기본

적인

언어

의기

능C++: 객

체지

향속

성, 연

산자

중복, 제

네릭(Generic)

자바: 예

외처

리와

스레

C# 언

어의

계통

도C# 언

어의

계통

콘솔/윈

폼애

플리

케이

션콘

솔애

플리

케이

션문

자기

반명

령어

프롬

프트

환경

에서

실행

키보

드를

통해

입력, 화

면에

문자

로출

윈폼

애플

리케

이션

윈도

우폼

애플

리케

이션(W

indows form

s Application)의

약어

GUI를

통해

서입

출력

을수

행이

벤트

처리

방식

을통

해실

C# 개

발환

경SDK를

이용–

편집

기, 컴

파일

러, 실

행엔

진, 클

래스

라이

브러

리통

합개

발환

경(IDE)

Visual Studio .NET

콘솔

애플

리케

이션

일반

적인

응용

프로

그램

예제

프로

그램:

[예제

1.1

–H

ello

World.cs]

usin

g S

yste

m;

clas

s H

ello

World {

pub

lic s

tatic

void

Mai

n() {

Cons

ole

.Write

Line

("H

ello

World!");

네임스페이스

실행

과정C

ons

ole

.Write

Line

("H

ello

World!");

} }

실행

결과

:H

ello

World!

출력메소드

C:\temp>cscHelloWorld.cs

C:\temp>HelloWorld

Hello World!

윈폼

애플

리케

이션

윈도

우응

용프

로그

램예

제프

로그

램:

[예제

1.2

–W

inFo

rmApp.cs]

usin

g S

yste

m;

usin

g S

yste

m.W

indow

s.Fo

rms;

clas

s W

inFo

rmApp : F

orm

{

Win

Form

App() {

Win

Form

App() {

Text

= "

Hel

lo W

orld!";

} pub

lic s

tatic

void

Mai

n() {

Applic

atio

n.Run

(new

Win

Form

App());

} }

실행

결과

:

Text

프로

퍼티

타이

틀바

에출

C# 프

로그

램실

행과

정컴

파일

과정

csc: C# compiler

실행

시스

템CLR –Common Language Runtime

실행

과정

실행

과정

기본

특징

[1/4]

•자

료형

▫변

수나

상수

가가

질수

있는

값과

연산

의종

류를

결정

▫C#의

자료

형�

값형(value type)

�참

조형(reference type)

▫숫

자형

정수

형▫

숫자

형�

정수

형�signed –sbyte, short, int, long

�unsigned –byte, ushort, uint, ulong

�실

수형–float, double, decimal

•연

산자

▫표

준C 언

어와

유사

▫형

검사

연산

자(type testing operator)

�is –

호환

가능

한지

를검

사�as –

지정

한형

으로

변환

기본

특징

[2/4]

배열

형같

은형

을갖

는여

러개

의값

을저

장할

수있

는자

료구

조.

배열

변수

선언

배열

을가

리키

는참

조변

int[]

vector;

short[,]matrix;

long[][]arrayOfArray;

object[]myArray1, myArray2;

기본

특징

[3/4]

배열

객체

생성

new 연

산자

vector = new int[100];

matrix = new short[10,100];

myArray1 = new Point[3];

배열

사용

for (int i=0; i<vector.Length; i++)

vector[i] = i;

기본

특징

[4/4]

스트

링C#에

서스

트링

은객

체System

.String

클래

스의

객체

C#의string 형

은String 클

래스

의alias

스트

링상

수이

중인

용부

호(”)로

묶인

문자

들의

나열(예

: ”I am a string.”)

스트

링초

기화

스트

링초

기화

스트

링연

결+ 연

산자: concatenation operator

string s = ”Hello”;

string s = new string(”Hello”);

string s = ”Hello”;

s += ” World”;

=> s: Hello World

주요

특징

클래

스프

로퍼

티연

산자

중복

연산

자중

복델

리게

이트

이벤

트스

레드

제네

클래

스클

래스

와객

체프

로그

래밍

언어

적인

측면

에서

객체

자료

형또

는객

체클

래스

클래

스의

구성–

클래

스멤

버필

드계

통–

상수

정의, 필

드, 이

벤트

메소

드계

통–

메소

드, 생

성자, 소

멸자,

프로

퍼티, 인

덱서, 연

산자

중복

자동

차출

발!!!

클래

스의

설계

•객

체의

속성

과행

위를

결정

▫속

성–

필드

계통

▫행

위–

메소

드계

통class CoffeeMaker{

public boolonState;

public void StartCoffeeMaker() {

CoffeeMaker

클래

스를

이용

하여StartCoffeeMaker() 메

소드

를호

출하

여보

시오.

public void StartCoffeeMaker() {

if (onState== true)

Console.WriteLine("The CoffeMakeris already on");

else

onState= true;

Console.WriteLine("The CoffeMakeris now on");

}

}

프로

퍼티

[1/2]

프로

퍼티

의개

념클

래스

의private 필

드를

형식

적으

로다

루는

일종

의메

소드.

값을

지정

하는

셋-접

근자

와값

을참

조하

는겟-접

근자

로구

성.

프로

퍼티

의정

의형

[property-modifiers] returnTypePropertyName{

[property-modifiers] returnTypePropertyName{

get{

// get-accessorbody

} set{ // set-accessorbody

}

}

프로

퍼티

[2/2]

프로

퍼티

의동

작필

드처

럼사

용되

지만, 메

소드

처럼

동작.

배정

문의

왼쪽

에서

사용

되면

셋-접

근자

호출.

배정

문의

왼쪽

에서

사용

되면

셋-접

근자

호출.

배정

문의

오른

쪽에

서사

용되

면겟-접

근자

호출.

예제1.5

Text p. 28

Value

지정

어의

의미?

연산

자중

복연

산자

중복

의의

미시

스템

에서

제공

한연

산자

를재

정의

하는

것.

클래

스만

을위

한연

산자

로써

자료

추상

화가

가능.

시스

템에

서제

공한

연산

자처

럼사

용가

문법

적인

규칙

은변

경불

가(연

산순

위나

결합

법칙

등).

연산

자중

복정

의형

예제1.6 –

교과

서29쪽

public static [extern] returnTypeoperator op(parameter1 [, parameter2]) {

// ... operator overloading body ...

}

델리

게이

트•

델리

게이

트(delegate)는

메소

드참

조기

법▫

객체

지향

적특

징이

반영

된메

소드

포인

터•

이벤

트와

스레

드를

처리

하기

위한

방법

론•

선언

형태:

[modifiers] delegate returnTypeDelegateName(parameterList);

•델

리게

이트

프로

그래

밍순

서①

메소

드정

의②

델리

게이

트정

의�

델리

게이

트형

태와

연결

될메

소드

의형

태가

일치

�반

환형, 매

개변

수의

개수

와형

③델

리게

이트

객체

생성

④델

리게

이트

객체

에메

소드

연결

⑤델

리게

이트

를통

해메

소드

호출

이벤

트[1/2]

이벤

트(event)

사용

자행

동에

의해

발생

하는

사건.

어떤

사건

이발

생한

것을

알리

기위

해보

내는

메시

지로

간주.

C#에

서는

델리

게이

트를

이용

하여

이벤

트를

처리.

이벤

트정

의형

태이

벤트

정의

형태

이벤

트-주

도프

로그

래밍(event-driven programming)

이벤

트와

이벤

트처

리기

를통

하여

객체

에발

생한

사건

을다

른객

체에

통지

하고

그에

대한

행위

를처

리하

도록

시키

는구

조를

가짐

각이

벤트

에따

른작

업을

독립

적으

로기

술프

로그

램의

구조

가체

계적/구

조적

이며

복잡

도를

줄일

수있

[event-modifier] event DelegateTypeEventName;

이벤

트[2/2]

이벤

트프

로그

래밍

순서

①이

벤트

처리

기를

작성

②이

벤트

처리

기의

형태

와일

치하

는델

리게

이트

를정

의(또

는System

.EventHandler델

리게

이트

를사

용)

③델

리게

이트

를이

용하

여이

벤트

를선

언(미

리정

의된

이벤

트인

경우

에는

생략)

(미리

정의

된이

벤트

인경

우에

는생

략)

④이

벤트

에이

벤트

처리

기를

등록

⑤이

벤트

를발

생(미

리정

의된

이벤

트는

사용

자행

동에

의해

이벤

트가

발생)

이벤

트가

발생

되면

등록

된메

소드

가호

출되

어이

벤트

를처

리미

리정

의된

이벤

트발

생은

사용

자의

행동

에의

해서

발생

사용

자정

의이

벤트

인경

우에

는명

시적

으로

델리

게이

트객

체를

호출

함으

로써

이벤

트처

리기

를작

[예제

1.8] EventApp.cs

[예제

1.8

-Ev

entA

pp.cs]

usin

g S

yste

m;

usin

g S

yste

m.W

indow

s.Fo

rms;

clas

s Ev

entA

pp :

Form

{

pub

lic E

vent

App() {

this.C

lick

+= n

ew E

vent

Han

dle

r(Clic

kEve

nt);

//

④이

벤트

처리

기등

록} vo

id C

lickE

vent

(obje

ct, s

ender

, Eve

nt a

rgs)

{

// ①

이벤

트처

리기

작성

Mes

sageB

ox.Sh

ow

("H

ello

world");

미리정의된이벤트를위한

델리게이트

Mes

sageB

ox.Sh

ow

("H

ello

world");

} pub

lic s

tatic

void

Mai

n() {

Applic

atio

n.Run

(new

Eve

ntAPP

());

} }

실행

결과

:

스레

드•

스레

드의

기본

개념

▫순

차프

로그

램과

유사

하게

시작, 실

행, 종

료의

순서

를가

짐▫

실행

되는

동안

에한

시점

에서

단일

실행

점을

가짐

▫프

로그

램내

에서

만실

행가

능�

스레

드는

프로

그램

내부

에있

는제

어의

단일

순차

흐름

(single sequential flow of control)

(single sequential flow of control)

�단

일스

레드

개념

은순

차프

로그

램과

유사

•멀

티스

레드

시스

템▫

스레

드가

하나

의프

로그

램내

에여

러개

존재

•스

레드

프로

그래

밍의

순서

①스

레드

몸체

에해

당하

는메

소드

를작

성②

작성

된메

소드

를ThreadStart

델리

게이

트에

연결

③생

성된

델리

게이

트를

이용

하여

스레

드객

체를

생성

④스

레드

의실

행을

시작(Start() 메

소드

를호

출)

[예제

1.9] ThreadApp.cs

[예제

1.9

–Thr

eadApp.cs]

usin

g S

yste

m;

usin

g S

yste

m.T

hrea

din

g;

//

반드

시포

함!!!

cl

ass

Thre

adApp {

stat

ic v

oid

Thr

eadBo

dy(

) {

/

/ --

-①

Cons

ole

.Write

Line

("In

the

thr

ead b

ody

…");

} pub

lic s

tatic

void

Mai

n() {

Thre

adSt

art

ts =

new

Thr

eadSt

art(Th

read

Body)

;

/

/ --

-②

Thre

adSt

art

ts =

new

Thr

eadSt

art(Th

read

Body)

;

/

/ --

-②

Thre

ad t =

new

Thr

ead(ts)

;

/

/ --

-③

Cons

ole

.Write

Line

("**

* St

art

of M

ain"

); t.S

tart

();

//

---

④Cons

ole

.Write

Line

("**

* En

d o

f M

ain"

); }

}

실행

결과

:**

* St

art of

Mai

n **

* En

d o

f M

ain

In the

thr

ead b

ody

제네

릭•

제네

릭의

의미

▫자

료형

을매

개변

수로

가질

수있

는개

념▫C++의

템플

릿과

유사

한개

념•

제네

릭단

위▫

클래

스, 구

조체, 인

터페

이스, 메

소드

•제

네릭

클래

스▫

범용

클래

스또

는포

괄클

래스

▫범

용클

래스

또는

포괄

클래

스▫

형매

개변

수(type parameter) -<> 안

에기

술▫

예:class Stack<StackType> {

private StackType[] stack = new StackType[100];

// ...

public void Push(StackTypeelement) { /* ... */ }

public StackTypePop() { /* ... */ }

} Stack<int> stk1 = new Stack<int>();

// 정

수형

스택

Stack<double> stk2 = new Stack<double>(); // 실

수형

스택

.NET 프

레임

워크

소개

공통

언어

스펙

CLS: Common Language Specification

공통

자료

형시

스템

공통

자료

형시

스템

CTS: Common Type System

실행

모델

공통

언어

런타

임CLR: Common Language Runtime

.NET 프

레임

워크

.NET 프

레임

워크(Framework)

마이

크로

소프

트사

가개

발한

프로

그램

개발

환경.

.NET 프

레임

워크

의구

조도

현재

지원

언어

C#, Visual Basic .NET, Managed C++, J#

CLS 만

족하

는언

공통

언어

스펙

언어

의상

호운

용성

을지

원하

기위

한스

펙CLS Common Language Specification

CLS를

만족

하는

언어

를“공

통언

어”라

부름

C#, Visual Basic .NET, J#, Managed C++

CLS를

만족

하면

서로

다른

언어

에서

만들

어진

라이

브러

리를

공유

할수

있다.

기본

클래

스라

이브

러리

.NET 프

레임

워크

에서

제공

BCL : Base Class Library

CLS를

만족

하면BCL을

사용

할수

있다.

공통

자료

형시

스템

다른

언어

와상

호운

용성

에필

요한

공통

의자

료형

CTS 형

과C# 자

료형

관계

CTS 자

료형

의미

C# 자

료형

System.Object

객체

형object

System.String

스트

링형

string

System.Sbyte

부호

있는

바이

트형(-128~127)

sbyte

System.Byte

바이

트형(0

~255)

byte

System.Byte

바이

트형(0

~255)

byte

System.Int16

16비

트정

수형

short

System.Uint16

16비

트부

호없

는정

수형

ushort

System.Int32

32비

트정

수형

int

System.Uint32

32비

트부

호없

는정

수형

uint

System.Int64

64비

트정

수형

long

System.Uint64

64비

트부

호없

는정

수형

ulong

System.Char

문자

형char

System.Single

단일

정밀

도실

수형

float

System.Double

이중

정밀

도실

수형

double

System.Boolean

부울

형bool

System.Decimal

10진

수형

decimal

실행

모델

컴파

일단

계C# Compiler

실행

단계

Common Language Runtime

Common Language Runtime

JIT 방법에의해실행

어셈

블리

와역

어셈

블리

과정

•어

셈블

리과

정▫*.il=�

*.exe or *.dll

•역

어셈

블리

과정

▫*.exe or *.dll =�

*.il

•IL 파

일▫

텍스

트형

태로

된중

간언

어파

일▫

컴파

일된

코드

를확

인할

수있

음▫

더나

아가

디버

깅하

는데

사용

할수

있음.

공통

언어

런타

임•.NET 프

레임

워크

의실

행시

스템

•자

바의JVM

과동

일한

기능

을담

당•

실행

환경

을포

함▫

필수

적인

실행

환경3가

지컴

포넌

트�

메모

리관

리기

�예

외처

리기

�스

레드

지원

�스

레드

지원

•공

통언

어런

타임

컴포

넌트

외부

링크

들•.NET Framework

▫http://en.wikipedia.org/wiki/.NET_Framework

•List of CLI languages

▫http://en.wikipedia.org/wiki/List_of_.NET_lang

uages

uages

차례

•소

개(Introduction)

•설

치(Installation)

•헬

로(Hello, Smartphone! etc. in MFC of C++)

•헬

로(Hello, Smartphone! etc. in MFC of C++)

•배

포(Deployment (upload a program to a smart

device))

•GUI (GUI Programming in C#)

•C#의

개요

•C# 프

로그

래밍

실습(M

ore Serious Issues in C#)

파일

읽기

(Files)

•파

일을

읽어

서첫

번째

라인

을레

이블

로보

인다

1.public Form

1()

2.

{3.

InitializeComponent();

4.

ReadFileToLabel();

5.

}

6.

private void ReadFileToLabel()

7.

{8.

StreamReadersr=

File.OpenText(@"\windows\pocketmsn.htm");

9.

string s = "";

10.

s = sr.ReadLine();

11.

this.label1.Text = s;

12.

}

데이

터베

이스

(Databases)

•응

용프

로그

램의

데이

터와

세팅

을.NET 컴

팩트

프레

임워

크를

이용

하여

윈도

우모

바일

기반

의스

마트

폰응

용프

로그

램에

저장

•http://m

sdn.microsoft.com/en-

us/library/m

s839432.aspx

•XML 포

맷의

데이

터▫XML Schem

a

▫XML files

▫DataSet

▫SqlCommand

•근

미래–LINQ 기

프로

세스

(Processes)

•Visual Studio.NET 2008 and .NET Compact

Framework 2.0 or higher

1.private void menuItem

1_Click(object sender,

EventArgs e)

EventArgs e)

2.

{

3.

Process.Start(@

"IExplore.exe",

@"\windows\pocketmsn.htm");

4.

}

통지(Notifications (in a m

anaged

system))

•.NET 컴

팩트

프레

임워

크에

서고

급P/Invoke

(Platform

Invoke) –

http://m

sdn.microsoft.com/en-

us/library/aa446529.aspx

us/library/aa446529.aspx

•CeSetUserNotificationEx API에

대한Wrapper

를만

듦•P/Invoke

를이

용하

여그wrapper (DLL 형

태) 와

통신

요약

및심

화이

슈들

•Reference:

▫C#.NET MOBILE PROGRAMMING –

안원

국▫Programming Windows CE.NET-Douglas Boling

▫Programming Windows CE.NET-Douglas Boling

•Windows CE 네

트워

킹•

디바

이스

간통

신•

데스

크탑

과연

결•

게임API

top related