기본적인 컴포넌트의 제작

Size: px
Start display at page:

Download "기본적인 컴포넌트의 제작"

Transcription

1 기본적인컴포넌트의제작 (Creating Basic Components) 델파이는가장잘된윈도우용 OOP 개발환경이라고말할수있다. 이러한델파이의가장핵심부분은누가뭐라해도델파이의튼튼한컴포넌트라고말할수있다. 컴포넌트란 OOP 의기본개념을충실하게지원하는델파이의객체로, 이러한컴포넌트를개발하는방법이야말로, 델파이개발자에게는가장중요한기술이라고말해도과언이아니다. 이번장에서는컴포넌트가동작하는방법을이해하고실제로컴포넌트를제작하는방법에대해서알아보기로한다. 컴포넌트의구조 컴포넌트는크게나누어필드, 메소드, 프로퍼티라는세가지의파트로나뉘어있다. 필드는 객체내부의데이터변수이며, 메소드는객체에속한프로시저와함수를말하고, 프로퍼티 란객체에속한데이터와코드에접근하는방법을제공하는엔티티이다. 간단한컴포넌트의제작 컴포넌트를만드는가장간단한방법은 Component New Component... 메뉴를선택해서 Component Expert 를시작하는것이다. 여기에서앞에서와같이새로만들컴포넌트가상속할클래스의이름과컴포넌트클래스의

2 이름, 그리고컴포넌트가위치할컴포넌트팔레트페이지를지정하면뼈대가되는코드가 만들어진다. 만들어진코드는다음과같다. unit ExamButton; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TExamButton = class(tbutton) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } procedure Register; implementation procedure Register; RegisterComponents('Samples', [TExamButton]); end. 이렇게뼈대가만들어지면, 프로퍼티나메소드등을추가해서간단하게확장된새로운컴포

3 넌트를제작할수있다. TExamButton 컴포넌트를클릭하면간단한메시지박스를표시할 수있도록수정해보자. 이를구현하려면 protected 섹션에서 Click 메소드를다음과같이 오버라이드하면된다. protected procedure Click; override; 그리고, 다음과같이구현한다. procedure TExamButton.Click; inherited Click; ShowMessage( 클릭! ); inherited 키워드는오버라이드한과거의메소드를실행하도록하는키워드이다. 이렇게만들어진컴포넌트는파일로저장하고, Component Install Component 메뉴를통해서실제로인스톨할수있게된다. 참고 : 오버라이드할메소드알아내기컴포넌트를제작할때특정이벤트에서다른동작을하도록만들고싶을때가있다. 이럴때에는보통오브젝트인스펙터에서관찰할수있는이벤트이름에서 On 을뺀이름의메소드를오버라이드하면된다. 앞의예제에서는 OnClick 이벤트에대해서조작을가하기위해 On 을뺀 Click 메소드를오버라이드하였다. 상속 (Inheritance) 의활용 상속이란부모클래스에속해있는메소드와프로퍼티를재사용하거나 override 해서사용할수있는특성을말하는것이다. 이를이용하면부모클래스의기능을유지한채, 새로운기능을추가해서향상된클래스를쉽게만들어낼수있다. Protected 프로퍼티의노출 델파이에는많은수의 TCustomXxxx 클래스가있는데, 이들의모든프로퍼티는 protected 로정의되어있다. 이들은컴포넌트팔레트에는나타나지않지만실제로사용되는컴포넌트클래스의기초가되는것들이다. 예를들어, TCustomEdit 는 TCustimMaskEdit,

4 TCustomMemo, TDBLookupCombo, TEdit, TSpinEdit 컴포넌트의공통된부모클래스이다. 또한, TCustomMaskEdit 컴포넌트는 TDBEdit, TMaskEdit 의공통된부모클래스가된다. 이렇게기초가되는부모 TCustomXxxx 클래스를상속받아서이들의 protected 프로퍼티, 이벤트를오브젝트인스펙터에나타나게하려면이들을 published 섹션에재선언만해주면된다. 예를들어, TSpeedButton 클래스는 Align 프로퍼티가없는데, 이프로퍼티를추가하려면다음과같이 Align 프로퍼티를 published 섹션에재선언해주는컴포넌트를만들면된다. unit AlignBtn; inteface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus, Buttons; type TAlignSpeedButton = class(tspeedbutton) published property Align; // 원래는 protected 섹션에선언되어있었음 procedure Register; implementation RegisterComponents( Samples, [TAlignSpeedButton]); end. 상속받은프로퍼티감추기 위의경우와는반대로, 상속받아만든컴포넌트의프로퍼티나이벤트를사용자가오브젝트인스펙터를통해접근하지못하도록하고싶을때가있다. 이럴때에는기존의프로퍼티와같은이름의프로퍼티를재선언하고, 이를 read-only 로설정하면된다. 다음의코드는 TPanel 컴포넌트에서 Left, Top, Height, Width 프로퍼티를없앤컴포넌트이다.

5 TSnapPanel = class(tpanel) private FDummyProperty: Byte; // 프로퍼티를숨기기위해사용되는필드 ( 중략 ) published property Height: Byte read FDummyProperty; property Left: Byte read FDummyProperty; property Top: Byte read FDummyProperty; property Width: Byte read FDummyProperty; 가상메소드의 override 메소드를 override 하는것이클래스의기능을확장하는가장빠른방법이다. 델파이로컴포넌트를다룰때에는각각의컴포넌트가 publish 하는다양한이벤트에익숙해져야한다. 새로운컴포넌트를상속받을때에가장흔히하는실수는상속받은컴포넌트의생성자에서이벤트핸들러를동적으로생성하고, 여기에값을대입하는것이다. 이렇게하면, 사용자가해당이벤트에해당되는핸들러를사용하게되면, 생성자에서만든이벤트핸들러는절대로호출되지않는다. 그러므로, 해당컴포넌트가이벤트에반응해야한다면이벤트핸들러를만들지말고처리해야할이벤트와대응되는가상메소드를 override 하도록한다. 문제는가상메소드와연결된이벤트에대한정보를찾기가어렵다는것인데, 이를알기위해서는본래소스코드를봐야알수있겠지만, 일반적으로 VCL 에서는이벤트이름의 On 부분을뺀이름이가상메소드의이름이다. 예를들어, OnClick 이벤트에해당하는가상메소드는 Click 이다. 다음컴포넌트는버튼컴포넌트의 Click 메소드를 override 해서버튼을클릭할때마다소리를나게하는것이다. unit SountBtn; interface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrols;

6 type TSountButton = class(tbutton) private FSoundFile: string; protected public constructor Create(AOwner: TComponent); override; procedure Click; override; published property SoundFile: string read FSoundFile write FSoundFile; procedure Register; implementation uses MMSystem; procedure TSoundButton.Click; sndplaysound(@fsoundfile, snd_async or snd_nodefault); inherited Click; constructor TSoundButton.Create(AOwner: TComponent); inherited Create(AOwner); FSoundFile := *.wav ; procedure Register; RegisterComponents( Samples, [TSoundButton]);

7 end. 윈도우메시지핸들러 전통적인윈도우프로그래밍에서가장중요한것중의하나가윈도우에전달된메시지를처 리하는것이다. 델파이는많은부분을처리해준다. 그렇지만, 델파이가처리하지못하는 메시지는개발자가직접처리해주어야한다. 메시지 - 처리시스템의이해 모든델파이클래스는메시지를처리하기위한기본적인방법으로메시지-처리메소드나메시지핸들러와같은방법을사용한다. 메시지핸들러의기본적인아이디어는메시지를받은클래스가메시지종류에따라특정메소드세트를호출하는것이다. 이때, 지정된메소드가없을경우에는디폴트핸들러가실행된다. 다음그림은메시지-디스패치 (message-dispatch) 시스템에대한다이어그램이다. VCL 은메시지 - 디스패치시스템을모든윈도우메시지를특정클래스의메소드호출로처 리한다. 개발자가할일은메시지 - 처리메소드를생성하는것이다. 1. 윈도우메시지 델파이에서의윈도우메시지는몇개의필드로이루어진데이터레코드이다. 그중에서도가장중요한것은메시지를확인할수있는정수값이다. 윈도우는많은메시지를정의하고있다. 그리고, 이런메시지들은 Messages.pas 유닛에선언되어있으며이들은정수값으로구별된다. 그리고, 메시지레코드에는 2 개의파라미터필드와 1 개의결과필드를포함하고있다. 하나의파라미터는 16 비트이며, 다른하나는 32 비트값이다. 이를 Win32 에서의표현방법을이용하면각각 wparam, lparam 에해당하며, lparam 값의경우순서를나누어 lparamhi, lparamlo 와같이접근하는것이가능하다. 처음윈도우를이용해서프로그래밍을할때에는 API 를사용할때, 개발자가각각의파라미터의내용을찾아봐야했다. 그런데, 지금은메시지크래킹 (message cracking) 이라고하는명명된파라미터를사용하기때문에이해하는것이간단해졌다. 예를들어, WM_KEYDOWN 메시지의파라미터는 nvirtkey, lkeydata 이다.

8 2. 메시지의디스패칭 (Dispatching Message) 어플리케이션이윈도우를생성할때, 윈도우프로시저를윈도우커널에등록하게된다. 이때윈도우프로시저는윈도우로넘어오는메시지를처리하는루틴을말한다. 전통적으로윈도우프로시저는각각의메시지에대한커다란 case 문으로작성했었다. 여기에서꼭기억해두어야할것은윈도우핸들을가진모든윈도우가메시지를처리한다는것이다. 즉, 새로운윈도우를생성할때마다, 이들은반드시완전한형태의윈도우프로시저를각각가지고있어야하는것이다. 델파이는메시지디스패칭을다음과같은방법으로단순화하였다. - 각각의컴포넌트는완전한메시지-디스패칭시스템을상속한다. - 디스패치시스템은디폴트처리가된다. 그러므로, 개발자는디폴트처리와다른부분 만핸들러를만들어주면된다. - 메시지처리를할때에도, 일부내용만수정하고나머지처리부분을상속해서처리하 면된다. 3. 메시지흐름의추적 델파이는어플리케이션에있는각각의컴포넌트에대한윈도우프로시저로 MainWndProc 라는메소드를등록한다. MainWndProc 메소드에는예외처리블록을포함하고있으며, 메시지구조체를윈도우에서 WndProc 라는가상메소드로넘겨주고, 예외처리는클래스의 HandleException 메소드를호출하여수행된다. MainWndProc 메소드는특별히메시지를처리하지는않는다. 실제로, 처리하는부분은필요에의해메소드를오버라이드할수있는 WndProc 에서이루어진다. WndProc 메소드는메시지를처리할때영향을미칠수있는특별한조건들을검사해서, 원하지않는메시지를처리할수있다. 예를들어, 드래그를하고있을때컴포넌트는키보드이벤트를무시한다. 그러므로, TWinControl 클래스의 WndProc 메소드는드래그를하지않을때에만키보드이벤트를처리한다. 결국에는 WndProc 가 TObject 객체에서상속받은 Dispatch 메소드를호출하게되며여기에서메시지를처리할메소드가어떤것인지를결정하게된다. Dispatch 메소드는메시지구조체의 Msg 필드를이용하여, 특정메시지를어떻게디스패치할것인지를결정한다. 컴포넌트가특정메시지에대한핸들러를정의한다면 Dispatch 는그메소드를호출하며, 해당메시지에대한메소드가없으면 DefaultHandler 를호출한다. 메시지처리방법의변경

9 컴포넌트에대한메시지처리방법을변경하기전에, 실제하려고하는것이무엇인지를분명히해야한다. 델파이는대부분의윈도우메시지를컴포넌트의이벤트로번역해서처리하므로많은경우에는직접메시지를처리하기보다는이벤트를처리하는것으로해결이된다. 메시지처리방법을변경하기위해서는메시지를처리하는메소드를오버라이드해야한다. 1. 메시지핸들러메소드의오버라이드 컴포넌트가특정메시지를처리하는방법을변경하려면, 메시지를처리하는메소드를오버라이드해야한다. 컴포넌트에메시지를처리하는메소드가없는경우라면, 새로운메시지처리메소드를선언해야한다. 메시지처리메소드를오버라이드하기위해서는, 메소드가오버라이드하고있는것과같은메시지인덱스를이용해서새로운메소드를선언하면된다. override 지시어를사용하는것이아니라, 동일한메시지인덱스를이용하여 message 지시어를사용한다는것에주의한다. 예를들어, WM_PAINT 메시지를처리하는메소드인 WMPaint 메소드를다음과같이선언하여사용할수있다. type TMyComponent = class(...)... procedure WMPaint(var Message: TWMPaint); message WM_PAINT; 2. 메시지파라미터의활용 메시지핸들러에넘겨진파라미터는 var 형이므로, 핸들러에서파라미터의값을변경할수있다. Message 파라미터의데이터형은처리할메시지에따라다양하다. 그러므로, 이를잘알기위해서는윈도우메시지에대한문서를참고해야한다. 만약, 과거스타일로 WParam, LParam 등으로메시지파라미터를표현한경우에는이를 TMessage 데이터형으로형전환해서사용한다. 3. 메시지트래핑 어떤경우에는컴포넌트가메시지를무시하도록하고싶을때가있다. 이렇게메시지를트 랩하도록하려면 WndProc 메소드를오버라이드한다. WndProc 메소드는앞에서설명했듯

10 이 Dispatch 메소드가메시지처리메소드를호출하기전에메시지를처리할수있기때문 에, 여기에서디스패치를하기전에메시지를거를수있다. TWinControl 에서상속한컨 트롤의 WndProc 를다음과같이오버라이드하여사용할수있다. procedure TMyControl.WndProc(var Message: TMessage); inherited WndProc(Message); WndProc 메소드를오버라이드하면메시지의범위를거를수있고, 메시지를디스패치하 지않도록할수있기때문에핸들러는호출되지않는다. 다음의코드는 TControl 에대한 WndProc 메소드의일부이다. procedure TControl.WndProc(var Message: TMessage);... if (Message.Msg >= WM_MOUSEFIRST) and (Message.Msg <= WM_MOUSELAST) then if Dragging then // 드래그를하고있다면, DragMouseMsg(TWMMouse(Message)) // 마우스드래그에해당하는메시지처리를... else... // 아니면, 정상적인처리를한다.... 새로운메시지핸들러의작성 델파이는대부분의윈도우메시지에대한핸들러를제공하기때문에, 메시지핸들러를새로 작성할필요가있는경우는사용자정의메시지를정의해서여기에대한메시지핸들러를 작성할때가많다. 1. 메시지의정의 많은수의표준컴포넌트들이내부적인사용을위해메시지를정의한다. 이렇게메시지를 정의하는이유로가장흔한것이표준윈도우메시지로처리할수없는정보나, 상태의변 경을알리기위한것이다.

11 메시지 identifier 는정수형으로, 윈도우는특정번호이하만사용하기때문에사용자정의메시지에나름대로번호를부여해서사용할수있다. WM_APP 상수는사용자정의메시지의시작번호를대표한다. 그러므로, 메시지를정의할때에는 WM_APP 를바탕으로하여 identifier 를결정해서사용한다. 그런데, 주의해야할것은표준윈도우컨트롤중에서도사용자정의메시지범위에들어가는메시지를사용하는경우가있다는점이다. 이런컴포넌트에는리스트박스, 콤보박스, 에디트박스와버튼등이있다. 이런컴포넌트를이용해서새로운메시지를정의할때에는 Messages.pas 유닛을참고하여컨트롤이이미사용하고있는윈도우메시지와겹치지않도록주의해야한다. 사용자정의메시지는다음과같이정의하면된다. const WM_MYFIRSTMESSAGE = WM_APP + 400; WM_MYSECONDMESSAGE = WM_APP + 401; 메시지레코드는메시지처리메소드로전송되는파라미터의데이터형이다. 만약메시지의파라미터를사용하지않거나, 과거와같이 wparam, lparam 을사용한파라미터를사용할경우에는디폴트메시지레코드인 TMessage 를사용하면된다. 메시지레코드데이터형을선언하기위해서는다음과같은규칙을따라야한다. - Msg 레코드의첫번째필드는 TMsgParam 데이터형으로선언한다. - 그다음의 2 바이트를 Word 파라미터로설정하고다음 2 바이트는사용하지않거나, 4 바이트를 LongInt 파라미터를설정한다. - 마지막으로 LongInt 형의 Resut 필드를추가한다. 예를들어, 모든마우스메시지를처리하는 TWMMouse 메시지레코드의선언부를여기에 소개한다. 가변형레코드를사용하여, 같은파라미터를 2 개의세트로정의해서사용한다. type TWMMouse = record Msg: TMsgParam; Keys: Word; // 메시지 ID //wparam 에해당 case Integer of //lparam 을해석하는방법이 2 가지! 0: ( XPos: Integer; //x, y 좌표로접근 YPos: Integer);

12 1: ( Pos: TPoint; Result: Longint); // 위치 // 결과필드 2. 새로운메시지 - 처리메소드의선언 새로운메시지-처리메소드는컴포넌트가표준컴포넌트에의해처리되지않는윈도우메시지를처리하거나, 자신의메시지를정의해서사용할경우에필요하다. 다음의코드는 CM_CHANGECOLOR 라는사용자정의메시지에대한메시지핸들러를선언한것이다. const CM_CHANGECOLOR = WM_APP + 400; type TMyComponent = class(tcontrol)... protected procedure CMChangeColor(var Message: TMessage); message CM_CHANGECOLOR; procedure TMyComponent.CMChangeColor(var Message: TMessage); Color := Message.lParam; inherited; 그러면, VCL 에서 TControl 컴포넌트에 OnClick 이벤트를처리할수있도록하는부분의 소스코드를살펴보자. 다소복잡하지만기본적인방법은동일하게사용되고있다. TControl = class(tcomponent) private FOnClick: TNotifyEvent; ( 중략 )

13 procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP; ( 중략 ) protected ( 중략 ) procedure Click; dynamic; property OnClick: TNotifyEvent read FOnClick write FOnClick; ( 중략 ) ( 중략 ) procedure TControl.Click; if Assigned(FOnClick) then FOnClick(Self); procedure TControl.WMLButtonUp(var Message: TWMLButtonUp); inherited; if cscapturemouse in ControlStyle then MouseCapture := False; if csclicked in ControlStyle then Exclude(FControlState, csclicked); if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click; // 이벤트핸들러를호출하게되는가상메소드를호출한다. DoMouseUp(Message, mbleft); end 컴포넌트에서그래픽이용하기 델파이는윈도우 GDI 를여러가지레벨로캡슐화하고있다. GDI 함수를직접호출할때에

14 는디바이스컨텍스트에대한핸들을사용하게된다. 일단그래픽이미지를그리고나면, 반드시디바이스컨텍스트를원래의상태로복귀시키고이를처리해야한다. 10 장에서이미그래픽에대한내용을다룬바있지만, 컴포넌트를제작하기위해서는여기에대해서잘알고있어야한다. 델파이는컴포넌트에 Canvas 프로퍼티를제공함으로써복잡한 GDI 함수를직접호출해서사용하는것을대신한다. 캔버스는리소스를관리하고, 선택하고, 사용하는등의모든작업을도맡아하게된다. 델파이를사용할때의장점으로는이밖에도리소스를캐쉬하기때문에나중에다시사용하거나, 반복적인작업을할때속도의증진을기대할수있다. 캔버스의활용 Canvas 클래스는윈도우그래픽을여러가지레벨에서캡슐화한다. 즉, 도형을그리거나라인을그리고, 텍스트를그릴수있는고수준함수에서부터, 윈도우 GDI 에접근하는저수준함수까지지원한다. 다음에캔버스에대한내용을정리하였다. 레벨작업메소드와프로퍼티 High Intermediate 라인과도형그리기텍스트디스플레이와측정영역채우기텍스트와그래픽정의픽셀처리이미지복사와병합 MoveTo, LineTo, Rectangle, Ellipse TextOut, TextHeight, TextWidth, TextRect FillRect, FloodFill Pen, Brush, Font 프로퍼티 Pixels 프로퍼티 Draw, StretchDraw, BrushCopy, CopyRect 메소드 CopyMode 프로퍼티 Low GDI 함수호출 Handle 프로퍼티 Picture 객체작업하기 델파이는캔버스에직접그림을그리는것이외에, 비트맵이나메타파일, 아이콘등과같 은그래픽이미지를처리할수있는 Picture 객체를제공한다. 1. Picture, graphic, canvas 델파이가그래픽을처리하는클래스에는 3 가지가있다. 이들을구별하고잘사용하는것이중요하다. 앞에서도간단히설명했지만, 캔버스는폼이나, 그래픽컨트롤, 프린터또는비트맵의표면에그릴수있는객체이다. 다시말해서, 실제로화폭에그림을그리는화가를연상할때

15 화폭에해당되는것이캔버스이다. 보통캔버스는독립적인클래스로사용하지않고, 컨트롤의프로퍼티로제공된다. 그래픽은파일이나리소스의형태로접근할수있는그래픽이미지를대표한다. 델파이는 TGraphic 클래스를상속한 TBitmap, TIcon, TMetafile 등의클래스를제공한다. TGraphic 클래스는여러가지다른종류의그래픽에서공통적으로사용하는표준인터페이스를정의하고있다. Picture 는그래픽의컨테이너로, 어떤그래픽클래스도담을수있다. 그리고, 어플리케이션은이들에게똑같은방법으로접근할수있는방법을제공한다. 예를들어, Image 컨트롤은 Picture 프로퍼티를제공하는데이를이용하여여러종류의그래픽이미지를표시할수있다. 2. 팔레트다루기 256 색상의비디오모드처럼팔레트에기초한디바이스를사용할때에델파이는자동으로팔레트의 realization 을지원한다. 대부분의컨트롤은팔레트가필요없다. 그렇지만, 그래픽이미지를표시하는컨트롤은이미지를제대로표시하기위해서는윈도우와스크린디바이스드라이버와상호작용해야한다. 윈도우는이런작업을팔레트의 realization 이라고한다. 다시말해, 팔레트를 realize 하는것은현재의윈도우에모든팔레트를사용하도록하고, 배경윈도우는가능한팔레트를가장가까운색상과맞도록표시하는작업이다. 그러므로, 활성화된윈도우가바뀔경우에윈도우는팔레트를 realize 해야한다. 컨트롤에대한팔레트를지정하기위해서는컨트롤의 GetPalette 메소드를오버라이드하여팔레트의핸들을반환하도록한다. 컨트롤이 GetPalette 메소드를오버라이드하여팔레트를지정하면, 델파이는자동으로윈도우의팔레트메시지에반응한다. 팔레트메시지를처리하는메소드는 PaletteChanged 이다. PaletteChanged 메소드의주목적은컨트롤의팔레트를 realize 하는것이다. 윈도우가팔레트를 realization 할때에는활성화된윈도우에 foreground 팔레트를가지도록하고, 다른 background 팔레트를가지도록한다. 델파이는여기에서추가적으로윈도우내에있는컨트롤들의탭순서에따라팔레트를 realize 한다. 그러므로, 디폴트핸들러를오버라이드하여팔레트를관리할필요가있는경우는탭순서에서첫번째가아닌컨트롤에 foreground 팔레트를적용하고자할경우이외에는거의없다. Off-screen 비트맵 복잡한그래픽이미지를그릴때윈도우프로그래밍에서공통적인테크닉은 off-screen 비 트맵을생성하고, 비트맵에이미지를그리고, 스크린에비트맵을복사하여붙여넣는작업이 있다. Off-screen 이미지를사용하면, 스크린에반복적인그리기작업을할때처럼깜빡이

16 는현상을줄일수있다. 델파이의비트맵클래스역시 off-screen 이미지로작업할수있 다. 변화에반응하기 모든그래픽객체는객체의변화에반응하는이벤트를가질수있다. 이런이벤트를이용하여컴포넌트가이미지를다시그릴때반응하도록할수있는것이다. 그래픽객체의변화를반영하는것은그래픽객체를디자인-타임인터페이스로사용할때에더욱중요하다. 그래픽객체의변화에반응하려면, 클래스의 OnChange 이벤트에메소드를대입해야한다. 예를들어, TShape 컴포넌트는펜, 브러쉬등의객체를프로퍼티로제공하는데, 컴포넌트의 constructor 에서메소드를 OnChange 이벤트에대입하여컴포넌트가펜이나브러쉬가변경되면이미지를 refresh 하도록한다. type TShape = class(tgraphiccontrol) public procedure StyleChanged(Sender: TObject);... implementation... constructor TShape.Create(AOwner: TComponent); inherited Create(AOwner); Width := 65; Height := 65; FPen := TPen.Create; FPen.OnChange := StyleChanged; //OnChange 이벤트에메소드대입 FBrush := TBrush.Create; FBrush.OnChange := StyleChanged; //OnChange 이벤트에메소드대입 procedure TShape.StyleChanged(Sender: TObject); Invalidate(); // 컴포넌트를다시그린다.

17 그래픽컴포넌트의제작 순수한그래픽컨트롤은포커스를가질수없기때문에, 윈도우핸들을필요로하지않는다. 사용자들은컨트롤을마우스로조작할수는있지만, 키보드인터페이스는가질수없다. 여기에서는 Additional 페이지에있는 TShape 와거의동일한 TSampleShape 라는컴포넌트를만들어볼것이다. 컴포넌트시작하기 먼저컴포넌트를 TGraphicControl 에서상속받도록하고, 이름을 TSampleShape 라고한 다. 이컴포넌트는 Samples 페이지에등록하도록한다. 이렇게설정하면다음과같은뼈 대코드가만들어질것이다. unit Shapes; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TSampleShape = class(tgraphiccontrol) private protected public published procedure Register; implementation procedure Register; RegisterComponents('Samples', [TSampleShape]);

18 end. 먼저, TGraphicControl 에서 protected 섹션에정의된여러프로퍼티를 published 섹션에사용하도록선언한다. 많은프로퍼티들은이미 TGraphicControl 클래스의 published 섹션에선언되어있으므로, 마우스이벤트와드래그-드롭을지원하는이벤트만 publish 하면된다. published property DragCursor; property DragMode; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnMouseDown; property OnMouseMove; property OnMouseUp; 그래픽기능의추가 1. Shape 프로퍼티의추가 그래픽컨트롤은사용자입력을포함한동적조건을반영하여형태를바꿀수있다. 일반적으로그래픽컨트롤의형태는이들의조합이라고할수있다. 예를들어, TGauge 컨트롤의경우형태와방향을결정하고, 숫자와그림을보여줄것인지여부등을프로퍼티에서결정할수있다. TSampleShape 컨트롤에도어떤것을그릴것인지여부를결정할수있도록 Shape 라는프로퍼티를제공하도록한다. 이를위해먼저, 프로퍼티로사용할열거형 (enumerated type) 을정의하도록하자. TSampleShapeType = (sstrectangle, sstsquare, sstroundrect, sstroundsquare, sstellipse, sstcircle); 이제다음과같이프로퍼티를선언한다.

19 private FShape: TSampleShapeType; procedure SetShape(Value: TSampleShapeType); published property Shape: TSampleShapeType read FShape write SetShape; 그리고, SetShape 메소드를다음과같이구현한다. procedure TSampleShape.SetShape(Value: TSampleShapeType); if FShape <> Value then FShape := Value; Invalidate; 2. 디폴트프로퍼티의변경 그래픽컨트롤의디폴트크기는매우작다. 그러므로, 이를수정하려면다음과같이프로 퍼티를선언할때 default 값을변경하고 constructor 에서수정할필요가있다. public constructor Create(AOwner: TComponent); override published property Height default 65; property Width default 65; constructor TSampleShape.Create(AOwner: TComponent); inherited Create(AOwner);

20 Width := 65; Height := 65; 3. 펜과브러쉬의 publish 펜과브러쉬를변경할수있게하려면, 내부적으로사용할객체를 private 섹션에필드로 선언해야한다. private FPen: TPen; FBrush: TBrush;... 이들을프로퍼티로접근할수있게하기위해 Set 메소드와프로퍼티를 published 섹션에 추가한다. private procedure SetBrush(Value: TBrush); procedure SetPen(Value: TPen); published property Brush: TBrush read FBrush write SetBrush; property Pen: TPen read FPen write SetPen; 그리고, SetBrush 와 SetPen 메소드를다음과같이구현한다. procedure TSampleShape.SetBrush(Value: TBrush); FBrush.Assign(Value); procedure TSampleShape.SetPen(Value: TPen); FPen.Assign(Value);

21 또한, 이들을 constructor 에서생성해야런타임에서사용할수있다. 또한, destructor 에 서는이객채들을해제해야한다. public destructor Destroy; override; constructor TSampleShape.Create(AOwner: TComponent); inherited Create(AOwner); Width := 65; Height := 65; FPen := TPen.Create; FBrush := TBrush.Create; destructor TSampleShape.Destroy; FPen.Free; FBrush.Free; inherited Destroy; 마지막으로펜과브러쉬가변경되었을때, 그려진도형을다시그릴필요가있다. 펜과브러쉬객체는모두 OnChange 이벤트를가지고있으므로, 이들이벤트를설정해서사용하면된다. published procedure StyleChanged(Sender: TObject);... constructor TSampleShape.Create(AOwner: TComponent);

22 inherited Create(AOwner); Width := 65; Height := 65; FPen := TPen.Create; FPen.OnChange := StyleChanged; FBrush := TBrush.Create; FBrush.OnChange := StyleChanged; procedure TSampleShape.StyleChanged(Sender: TObject); Invalidate; 컴포넌트이미지그리기 마지막으로스크린에그리는부분을구현할차례이다. 그리는부분은 TGraphicControl 클 래스의추상메소드인 Paint 를오버라이드해야한다. 여기에서선택된펜과브러쉬를가지 고선택된도형을그린다. protected procedure Paint; override;... Paint 메소드는도형의형태에따라좌표를사용하는방법을달리해서구현해야한다. Paint 메소드는다음과같이구현하도록한다. procedure TSampleShape.Paint; var X, Y, W, H, S: Integer; with Canvas do Pen := FPen;

23 Brush := FBrush; W := Width; H := Height; if W < H then S := W else S := H; case FShape of sstrectangle, sstroundrect, sstellipse: X := 0; Y := 0; sstsquare, sstroundsquare, sstcircle: X := (W - S) div 2; Y := (H - S) div 2; W := S; H := S; case FShape of sstrectangle, sstsquare: Rectangle(X, Y, X + W, Y + H); sstroundrect, sstroundsquare: RoundRect(X, Y, X + W, Y + H, S div 4, S div 4); sstcircle, sstellipse: Ellipse(X, Y, X + W, Y + H); 객체결합 (Object Composition) 객체결합이란여러개의컴포넌트를하나로묶어서새로운컴포넌트를만드는것을의미한다. 이테크닉을이용하면각각의요소가되는컴포넌트의이벤트와프로퍼티에사용자가함부로접근하지못하도록보호할수있다. 비주얼컴포넌트의결합에는컨테이너컴포넌트 (TPanel, TCustomPanel, TWinControl) 등이요구되며, 이들은서브-컴포넌트의부모윈도우가된다.

24 이테크닉은복잡한컴포넌트를그룹화하거나컴포넌트간의유기적인관계가필요한경우에유용하게사용될수있다. 다음의예제컴포넌트는 OK, Cancel 의 2 개의버튼을가지고있으며, 각각의컴포넌트에대한 OnClick, Caption 프로퍼티를제공한다. 참고로, 각각의버튼이 Caption 프로퍼티를가지므로앞에서설명한프로퍼티숨기기를이용하여 OKCancel 버튼자체의 Caption 프로퍼티는없애버린다 (FDummyProperty 를이용 ). unit OKCancel; interface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus, Buttons; type TOKCancelButton = class(twincontrol) // 여기에서브-컴포넌트들을선언한다. OKButton: TBitBtn; CancelButton: TBitBtn; private FOnClick_OKButton: TNotifyEvent; FOnClick_CancelButton: TNotifyEvent; FDummyProperty: string; procedure SetCaption_OKButton(Value: TCaption); function GetCaption_OKButton: TCaption; procedure SetCaption_CancelButton(Value: TCaption); function GetCaption_CancelButton: TCaption; protected procedure Click_OKButton(Sender: TObject); virtual; procedure Click_CancelButton(Sender: TObject); virtual; public constructor Create(AOwner: TComponent); override; published property Caption_OKButton: TCaption read GetCaption_OKButton write SetCaption_OKButton; property Caption_CancelButton: TCaption read GetCaption_CancelButton

25 write SetCaption_CancelButton; property OnClick_OKButton: TNotifyEvent read FOnClick_OKButton write FOnClick_OKButton; property OnClick_CancelButton: TNotifyEvent read FOnClick_CancelButton write FOnClick_CancelButton; property Caption: string read FDummyProperty; procedure Register; 참고로, 여기까지선언부를작성하고 Ctrl+Shift+C 키를누르면다음과같은구현부분에대한뼈대코드가모두자동으로만들어진다. 이기능이바로클래스완료 (Class Completion) 이다. 컴포넌트를제작하는사람들에게는허드렛일을많이줄여줄수있는기능이다. 어쨌든구현부분은다음과같이구현한다. implementation procedure TOKCancelButton.SetCaption_OKButton(Value: TCaption); OKButton.Caption := Value; function TOKCancelButton.GetCaption_OKButton: TCaption; Result := OKButton.Caption; procedure TOKCancelButton.SetCaption_CancelButton(Value: TCaption); CancelButton.Caption := Value; function TOKCancelButton.GetCaption_CancelButton: TCaption; Result := CancelButton.Caption;

26 procedure TOKCancelButton.Click_OKButton(Sender: TObject); if Assigned(FOnClick_OKButton) then FOnClick_OKButton(Self); procedure TOKCancelButton.Click_CancelButton(Sender: TObject); if Assigned(FOnClick_CancelButton) then FOnClick_CancelButton(Self); constructor TOKCancelButton.Create(AOwner: TComponent); inherited Create(AOwner); Width := 75; Height := 60; OKButton := TBitBtn.Create(Self); with OKButton do Parent := Self; Kind := bkok; SetBounds(0, 0, 75, 30); TabOrder := 0; OnClick := Click_OKButton; CancelButton := TBitBtn.Create(Self); with CancelButton do Parent := Self; Kind := bkcancel; SetBounds(0, 31, 75, 30); TabOrder := 1; OnClick := Click_CancelButton; FDummyProperty := ;

27 procedure Register; RegisterComponents( Samples, [TOKCancelButton]); end. 이와같이컴포넌트를제작할때, 내부에서제어할수있는컴포넌트를활용하면훨씬강력하고편리한활용이가능하다. 이밖에도 private 섹션에 FComponetName 과같은형태로내부에서생성하여관리할컴포넌트를선언해서, 필드변수로활용하고프로퍼티를선언해서사용하는방법이있다. 패키지제작과컴포넌트추가 비록기본적인예제컴포넌트이긴했지만, 이번장에서제작한컴포넌트는모두 6 개이다. 이들을하나의패키지로묶어보도록하자. 먼저, File New 메뉴를선택한후객체저장소에서 Package 를더블클릭하여새로운패키지를하나생성한다. 그리고, File Save As 명령을선택하여적당한디렉토리에.DPK 파일을저장한다. 여기서는 chap22.dpk 라는이름으로저장하도록한다. 패키지에디터화면에서 Add 버튼을클릭하고다음과같이앞에서제작한 6 개의컴포넌트를차례대로추가한다. 패키지파일을저장하고, Install 버튼을누르면패키지가설치될것이다. 컴파일이끝나면

28 컴포넌트팔레트의 Samples 페이지에는 6 개의컴포넌트가추가될것이다. 그리고, 이명령에의해.BPL 파일이생성되는데이파일을따로배포할수도있다. 어떤가? 컴포넌트를만들고, 이들을자신의패키지로엮어서배포하는일이생각보다너무나쉽다고생각될것이다. 델파이 4 에서는이와같이컴포넌트를개발하고, 이를관리하는강력한수단을제공하고있다. 정리 (Summary) 이번장에서는가장기본적인컴포넌트를만드는방법과이들을이용하여패키지로묶는방법에대해서알아보았다. 컴포넌트는델파이의핵심이라고말할수있는부분이다. 다음장에서는기본적인컴포넌트에기능을추가하는방법과데이터인식컨트롤을제작하는방법과같이보다고급스러운컴포넌트제작기법에대해서알아볼것이다.

PowerPoint Template

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

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

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요 . 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,

More information

歯제작.PDF

歯제작.PDF E07 1, 2 VCL Visual Component Library, [1] TComponent VCL VCL, (Object) TStrings TCanvas VCL [ 1] 2 TObject TObject [ 1] 21 TObject TObject [ 1] TObject, TObject,,,,, (run-time type information) TObject

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

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -

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 - 09-CE-5-윈도우 핸들

Microsoft PowerPoint - 09-CE-5-윈도우 핸들 순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정

More information

트레이 아이콘 어플리케이션의 제작

트레이 아이콘 어플리케이션의 제작 트레이아이콘어플리케이션의제작 (Creating Tray Icon Application) 윈도우 95 와 NT 4.0 에는작업바의우측에작업트레이라는부분이있다. 여기에있는아이콘은현재데스크탑에서실행되고있는윈도우를가지고있는어플리케이션이라기보다는도스시절에있었던램상주프로그램과비슷한역할을하는것이많다. 이번장에서는트레이에상주하는어플리케이션을제작하는방법에대해서알아보자. Shell_NotifyIcon

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

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : ActiveX

More information

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

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

More information

쉽게 풀어쓴 C 프로그래밍

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

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

 메소드 오버로딩

 메소드 오버로딩 객체지향언어로서의오브젝트파스칼 (Object Pascal As A OOP) 오브젝트파스칼의객체지향성을몰라도델파이어플리케이션을쉽게만들수있다. 단순히폼을하나만들고, 거기에여러가지컴포넌트들을추가하고, 이벤트핸들러에적당한내용의코드들을추가하면그걸로충분한것이다. 그렇지만, 이것을이해하면델파이가어떤방법으로작업을처리하는지이해할수있고, 자신만의컴포넌트를만들어내거나, 비교적커다란프로젝트를진행할때에커다란도움을받게될것이다.

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

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

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

04장 메시지 처리 유형

04장 메시지 처리 유형 4 장 메시지처리유형 김성영교수 금오공과대학교 컴퓨터공학부 메시지처리유형 윈도우에서발생하는이벤트에대응하는윈도우메시지를처리 2 장및 3 장의실습예제 자식윈도우에서발생한이벤트를부모윈도우에서처리 WM_COMMAND 메시지처리 실습 4.2 자식윈도우에서발생한사건유형을구분하여처리 Notification code 처리 실습 4.7 Notification code 의한계를극복하여처리

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

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

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

델파이 4 프로그래밍의 이해 (Understandings of Delphi 4 Programming)

델파이 4 프로그래밍의 이해 (Understandings of Delphi 4 Programming) 델파이 4 프로그래밍의이해 (Understandings of Delphi 4 Programming) 오브젝트파스칼과심도있는델파이프로그래밍의세계로들어가기전에, 이번장에서는델파이를사용하여첫번째윈도우어플리케이션을제작하고전반적인델파이의환경에대해서알아볼것이다. 내용의수준이높지는않겠지만, 흔히알고있었던내용이라고하더라도별생각없이넘어갔던것들도많을것이다. 그러면, 델파이 4

More information

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint - CSharp-10-예외처리

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

More information

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 19 장배치관리자 이번장에서학습할내용 배치관리자의개요 배치관리자의사용 FlowLayout BorderLayout GridLayout BoxLayout CardLayout 절대위치로배치 컨테이너안에서컴포넌트를배치하는방법에대하여살펴봅시다. 배치관리자 (layout manager) 컨테이너안의각컴포넌트의위치와크기를결정하는작업 [3/70] 상당히다르게보인다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

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++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

컴포넌트 제작의 깊은 곳

컴포넌트 제작의 깊은 곳 컴포넌트제작의깊은곳 (Advanced Components Writing Techniques) 그리드컴포넌트의제작 비교적복잡하면서도유용하게사용할수있는컴포넌트가그리드컴포넌트들이다. 델파이는그리드를작성하기쉽도록 TCustomGrid 라는기초컴포넌트를제공하고있다. 그러면, 이컴포넌트를바탕으로해서달력컴포넌트를하나만들어보도록하자. TCustomGrid 컴포넌트를상속하도록하고,

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

歯MDI.PDF

歯MDI.PDF E08 MDI SDI(Single Document Interface) MDI(Multiple Document Interface) MDI (Client Window) (Child) MDI 1 MDI MDI MDI - File New Other Projects MDI Application - MDI - OK [ 1] MDI MDI MDI MDI Child MDI

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

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

More information

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

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

More information

디지털영상처리3

디지털영상처리3 비트맵개요 BMP 파일의이해실제 BMP 파일의분석 BMP 파일을화면에출력 } 비트맵 (bitmap) 윈도우즈에서영상을표현하기위해사용되는윈도우즈 GDI(Graphic Device Interface) 오브젝트의하나 } 벡터그래픽 (vector graphics) 점, 선, 면등의기본적인그리기도구를이용하여그림을그리는방식 } 윈도우즈 GDI(Graphic Device

More information

제목

제목 Object-Oriented Design Agile for Software Development Story 7. 작 성 자 : 고형호 메 일 : hyungho.ko@gmail.com 홈페이지 : 최초작성일 : 2007.08.10 최종작성일 : 2007.09.05 1 Goal A Set of Contained Responsibilities 2 Content 1.

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

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

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt AWT 컴포넌트 (1) 1. AWT 패키지 2. AWT 프로그램과이벤트 3. Component 클래스 4. 컴포넌트색칠하기 AWT GUI 를만들기위한 API 윈도우프로그래밍을위한클래스와도구를포함 Graphical User Interface 그래픽요소를통해프로그램과대화하는방식 그래픽요소를 GUI 컴포넌트라함 윈도우프로그램만들기 간단한 AWT 프로그램 import

More information

4장기본프로그래밍2

4장기본프로그래밍2 4-2 마우스 (Mouse) 마우스이벤트 Click 이벤트 마우스버튼이눌렸다가떼어질때발생 DblClick 이벤트 마우스버튼이두번눌렸다가떼어질때발생 MouseDown 이벤트 마우스버튼이눌렸을때발생 MouseUp 이벤트 마우스버튼이떼어질때발생 MouseMove 이벤트 마우스가움직일때발생 DragOver 이벤트 마우스버튼을누른상태에서끌기를했을때발생 DragDrop

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다. 이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복 상속의개요

More information

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법

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

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

Javascript

Javascript 1. 이벤트와이벤트핸들러의이해 이벤트 (Event) 는웹브라우저에서발생하는다양한사건을말합니다. 예를들면, 버튼을마우스로을했다거나브라우저를닫았다거나 Enter 키를눌렀다거나등등아주다양한사건들이있습니다. 그렇다면이벤트핸들러 (Event Handler) 는무엇일까요? 이다양한이벤트들을핸들링 ( 처리 ) 해주는것입니다. 예를들면, 어떤버튼을했을때메시지창이뜨게하는등을말합니다.

More information

< 화면 1> 콤보박스 < 화면 2> 리스트박스 < 화면 4> TComboBox 의 Items 프로퍼티 객체지향프로그래밍을한마디로설명하기에는다 소무리가있습니다. 객체지향프로그래밍은지금까 지도많은사람들이연구하고있으며객체지향프로 그래밍만다루고있는단행본도많이출간될정도로 객체

< 화면 1> 콤보박스 < 화면 2> 리스트박스 < 화면 4> TComboBox 의 Items 프로퍼티 객체지향프로그래밍을한마디로설명하기에는다 소무리가있습니다. 객체지향프로그래밍은지금까 지도많은사람들이연구하고있으며객체지향프로 그래밍만다루고있는단행본도많이출간될정도로 객체 Why 왜델파이인가 2 완벽한 OOP 를지원하는 델파이 우리는델파이에서폼을비롯한모든컴포넌트가클래스로포장돼있다는것을배웠습니다. 또한델파이사용자는클래스를그리잘다루지못해도폼디자이너를통해클래스를자동으로만들어사용하게된다는것도배웠습니다. 델파이는많은양의컴포넌트를갖고있는데그컴포넌트들은모두 TObject라는클래스를시작으로여러단계를거쳐상속되고있습니다. 그렇기때문에컴포넌트라이브러리에는폼디자이너에서사용할수있는컴포넌트의

More information

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

gnu-lee-oop-kor-lec10-1-chap10

gnu-lee-oop-kor-lec10-1-chap10 어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class

More information

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우. 소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

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

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

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

More information

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

Microsoft PowerPoint - 2강

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

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

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

델파이 4 IDE의 내부 (Internals of Delphi 4’s IDE)

델파이 4 IDE의 내부 (Internals of Delphi 4’s IDE) 델파이 4 IDE 의내부 (Internals of Delphi 4 s IDE) 이번장에서는델파이의통합개발환경에대하여알아보도록한다. IDE(Integrated Development Environment) 는어플리케이션을설계하고, 실행시키고, 테스트할수있도록해주는환경을말하는것으로, 프로그램을쉽게개발할수있도록도와주는기능을한다. 과거에는개발자가통합개발환경이없이텍스트에디터로소스를편집해서,

More information

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 23 장그래픽프로그래밍 이번장에서학습할내용 자바에서의그래픽 기초사항 기초도형그리기 색상 폰트 Java 2D Java 2D를이용한그리기 Java 2D 를이용한채우기 도형회전과평행이동 자바를이용하여서화면에그림을그려봅시다. 자바그래픽데모 자바그래픽의두가지방법 자바그래픽 AWT Java 2D AWT를사용하면기본적인도형들을쉽게그릴수있다. 어디서나잘실행된다.

More information

17장 클래스와 메소드

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

More information

JDK이클립스

JDK이클립스 JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

PowerPoint Presentation

PowerPoint Presentation 데이터처리프로그래밍 Data Processing Programming 08 객체와클래스 목차 1. 객체와클래스 2. 인스턴스변수, 클래스변수 3. 클래스매직메소드 4. 클래스의상속 데이터처리프로그래밍 (Data Processing Programming) - 08 객체와클래스 3 1. 객체와클래스 객체 Object 객체란존재하는모든것들을의미 현실세계는객체로이루어져있고,

More information

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation=vertical > 4 <ImageView 7 차시이미지처리 1 학습목표 이미지뷰를사용하는방법을배운다. 비트맵을사용하는방법을배운다. 2 확인해볼까? 3 이미지뷰와이미지버튼 1) 학습하기 [ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 4

More information

<4D F736F F D20C5D7C6AEB8AEBDBA20B0D4C0D320B8B8B5E9B1E22E646F63>

<4D F736F F D20C5D7C6AEB8AEBDBA20B0D4C0D320B8B8B5E9B1E22E646F63> Chapter 0 테트리스게임만들기 본강좌의목적은테트리스게임자체보다는사용자인터페이스와논리구조를분리하여분석 / 설계하고코딩하는과정을설명하기위한것이다. 특히 BDS 2006에서새로추가된 Together for Delphi를이용하여보다쉽게객체지향적설계를실제업무에도입하는과정을설명하고자한다. 1 단계 UI 와 Logic 의분리 이번강좌에서는필자가원래사용하던문서작성법이아닌클래스다이어그램만으로기능설계와구조설계를병행하도록하겠다.

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63> SAM4S Printer Driver Installer 달리명시하지않은한, 인쇄또는복사된문서는통제하지않는문서임 목 차 1. 1. WINDOWS DRIVER INSTALLER 설치 설치...... 2 2. 프린터추가...... 5 3. 프린터제거...... 19 4. 프린터추가 / 제거선택...... 21 5. 프로그램추가 / 제거...... 21 SHC- 11-01-

More information

Microsoft PowerPoint - 04windows.ppt

Microsoft PowerPoint - 04windows.ppt Game Programming I Windows 프로그래밍 (1) March 27, 2006 목표 윈도우프로그래밍에서이용되는이벤트구동프로그래밍모델의이해 Direct3D 를이용하는윈도우어플리케이션의작성을위한최소한의코드이해 윈도우 (Win32) 어플리케이션 Direct3D API ( 어플리케이션프로그래밍인터페이스 ) 를이용하기위해필요 Win32 API 를이용해작성

More information

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

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345]) 클래스의응용 클래스를자유자재로사용하자. 이장에서다룰내용 1 객체의치환 2 함수와클래스의상관관계 01_ 객체의치환 객체도변수와마찬가지로치환이가능하다. 기본예제 [7-1] 객체도일반변수와마찬가지로대입이가능하다. 기본예제 [7-2] 객체의치환시에는조심해야할점이있다. 복사생성자의필요성에대하여알아보자. [ 기본예제 7-1] 클래스의치환 01 #include

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Win32 API Windows Programming 1 http://idb.korea.ac.kr DB & Mining LAB. Korea Univ. 최종업데이트 : 2012. 08. 14 1 컴퓨터시스템의주요구성요소 2 2 컴퓨터하드웨어구성 Fetch : 메인메모리에저장되어있는명령어를 CPU 로 Decode : 컨트롤유닛에의해분석 Execution : ALU

More information

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오. Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, 2018 1 George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오. 실행후 Problem 1.3에 대한 Display결과가 나와야 함) George 그림은 다음과

More information

歯처리.PDF

歯처리.PDF E06 (Exception) 1 (Report) : { $I- } { I/O } Assign(InFile, InputName); Reset(InFile); { $I+ } { I/O } if IOResult 0 then { }; (Exception) 2 2 (Settling State) Post OnValidate BeforePost Post Settling

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 객체지향프로그래밍응용 Chap 4. 대화상자와컨트롤 (#1) 2013.09.27. 오병우 컴퓨터공학과금오공과대학교 Control 들을가진윈도우 Dialog 개요 사용자의입력을받기위한 Object 의집합 종류 프로그램수행도중사용자의입력이필요할때다이얼로그박스출력 다이얼로그박스는사용자로부터입력받은데이터를메인루틴에넘기고소멸 Modal Dialog Parent window

More information

디지털영상처리3

디지털영상처리3 비트맵 BMP 파일의 실제 BMP 파일의 BMP 파일을 화면에 개요 이해 분석 출력 } 비트맵 (bitmap) 윈도우즈에서영상을표현하기위해사용되는윈도우즈 GDI(Graphic Device Interface) 오브젝트의하나 } 벡터그래픽 (vector graphics) 점, 선, 면등의기본적인그리기도구를이용하여그림을그리는방식 } 윈도우즈 GDI(Graphic

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

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

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

More information

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 14. 상속 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 상속의기본 파생클래스와생성자 protected: 제한자 멤버함수의재정의 상속되지않는함수들 상속을이용한프로그래밍

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

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\) Session 을이용한현재로그인한사용자의 숫자구하기 작성자 : 김성박 ( 삼성 SDS 멀티캠퍼스전임강사 ) email : urstory@nownuri.net homepage : http://sunny.sarang.net - 본문서는http://sunny.sarang.net JAVA강좌란 혹은 http://www.javastudy.co.kr 의 칼럼 란에서만배포합니다.

More information

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint 장강의노트.ppt 클래스와객체 클래스와객체 객체 : 우리주변의어떤대상의모델 - 예 : 사람, 차, TV, 개 객체 = 상태 (state) + 행동 (behavior) - 예 : 개의상태 - 종자, 이름, 색개의행동 - 짖다, 가져오다 상태는변수로행동은메소드로나타냄 객체는클래스에의해정의된다. 클래스는객체가생성되는틀혹은청사진이다. 2 예 : 클래스와객체 질문 : 클래스와객체의다른예는?

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

PowerPoint Presentation

PowerPoint Presentation Class : Method Jo, Heeseung 목차 section 1 생성자 (Constructor) section 2 생성자오버로딩 (Overloading) section 3 예약어 this section 4 메소드 4-1 접근한정자 4-2 클래스메소드 4-3 final, abstract, synchronized 메소드 4-4 메소드반환값 (return

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

[ 마이크로프로세서 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

Microsoft PowerPoint - 06-Chapter09-Event.ppt

Microsoft PowerPoint - 06-Chapter09-Event.ppt AWT 이벤트처리하기 1. 이벤트처리방식 2. 이벤트클래스와리스너 3. 이벤트어댑터 4. 이벤트의종류 이벤트 (Event) 이벤트 사용자가 UI 컴포넌트에대해취하는행위로인한사건이벤트기반프로그래밍 무한루프를돌면서사용자의행위로인한이벤트를청취하여응답하는형태로작동하는프로그래밍 java.awt.event 이벤트처리 AWT 컴포넌트에서발생하는다양한이벤트를처리하기위한인터페이스와클래스제공

More information

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå 기초통계프로그래밍 클래스, 객체, 변수, 메소드 hmkang@hallym.ac.kr 금융정보통계학과 강희모 ( 금융정보통계학과 ) 기초통계프로그래밍 1 / 26 자바구성파일 소스파일 소스파일 : 사용자가직접에디터에입력하는파일로자바프로그램언어가제공하는형식으로제작 소스파일의확장자는.java 임 컴파일 : javac 명령어를이용하여프로그래머가만든소스파일을컴파일하여실행파일.class

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information