 메소드 오버로딩

Size: px
Start display at page:

Download " 메소드 오버로딩"

Transcription

1 객체지향언어로서의오브젝트파스칼 (Object Pascal As A OOP) 오브젝트파스칼의객체지향성을몰라도델파이어플리케이션을쉽게만들수있다. 단순히폼을하나만들고, 거기에여러가지컴포넌트들을추가하고, 이벤트핸들러에적당한내용의코드들을추가하면그걸로충분한것이다. 그렇지만, 이것을이해하면델파이가어떤방법으로작업을처리하는지이해할수있고, 자신만의컴포넌트를만들어내거나, 비교적커다란프로젝트를진행할때에커다란도움을받게될것이다. OOP 의기본개념 프로그램은데이터와이를처리하는알고리즘으로구성되어있다고하는유명한말이있다. 그렇기때문에, 프로그래밍언어의구조를가만히살펴보면대부분의경우데이터를다루는데필요한각종정의들과, 이들을제어하기위한여러가지문법으로구성되어있다는것을알수있다. 기본적으로데이터의표현은 데이터형 (data type) 이라는개념으로표현되는데, 이데이터형의개념이발전하면서언어들이다른모습을띠게된다. 초기의프로그래밍언어는정해진데이터형을이용하였으며, 그이후의프로그래밍언어 ( 파스칼등 ) 에서는레코드나배열등의개발자가정의해서사용할수있는데이터형을도입하였다. 그러다가, 이러한데이터형에그데이터를다룰때쓰이는작업과결부시키게되었는데, 이와같이기본적인데이터와이를다루기위한메쏘드로이루어진데이터형인클래스가 OOP 의기초가되는개념이다. 데이터형과함께가장중요한프로그래밍언어의구성요소인제어구조를보면, 초기의프로그래밍언어는점프 (goto) 와분기문 (if-then, case 등 ), 순환문 (for, while 등 ) 으로이루어진제어문을가지고있었다. 여기에서브루틴의개념이추가되어일반적인프로그래밍언어의전반적인구조를가지게되었다. OOP 에서는이러한서브루틴을데이터와마찬가지로추상화하여, 이들을클래스로관리하게된다. OOP 에있어서가장중요한 3 가지개념은캡슐화, 상속, 다형성으로아래에간단하게설명하였다. 캡슐화 (Encapsulation) OOP 의가장핵심적인요소라고할수있는것이캡슐화개념으로, 데이터와서브루틴을 추상화한것이다. 이개념은클래스로구현되는데, 클래스란특정객체그룹을추상적으로 정의해놓은것이라고생각하면된다. 클래스는일종의형 (type) 의정의로서필드 ( 클래스의

2 객체상태를나타내는데이터 ) 가있고, 이에대한작업을정의하는메소드가있다. 여기서혼동하지말아야할것은클래스란일종의데이터형이고, 객체는클래스라는데이터형인하나의구체적인예 ( 인스턴스 ) 라는것이다. 예를들어설명하면클래스란객체를만들기위한주형이며, 객체란클래스라는주형에서만들어진병과같은것이다. 상속 (Inheritance) 상속은클래스를처음부터만들지않고, 기존의클래스를기반으로해서새로운클래스를정의하는것이다. 이때기반이되는클래스를부모클래스, 만들어진클래스를서브클래스라고하며서브클래스는부모클래스로부터필드와메소드를상속한다. 상속개념이실제로쓰일때에는다음과같은특징을가지고있다. 1. 상속은일반적인클래스의특수한경우를나타낼때쓰인다. 즉, 자동차라는부모클래스에서기본적인자동차의필드와메소드를표현했다고하면, 여기에서상속받은티코라는서브클래스는기본적인자동차클래스의필드와메소드외에자신만의필드와메소드를정의할수있다. 2. 반대로여러가지로특화된클래스들의공통점을가진부모클래스를만들수도있다. 에를들어, 기존에학생이라는클래스와선생이라는클래스를가지고있는경우이들의공통적인필드와메소드를정의하는사람이라는부모클래스를만들고, 공통의요소를공유하게할수있다. 3. 실제로상속개념이쓰일때에는중복되는코드를막을수있으며 ( 공통부분을가지는부모클래스가사용되므로 ), 복잡한데이터의개념을쉽게이해할수있게된다. 다형성 (Polymorphism) 다형성이란하나의프로그램변수를가지고서로다른클래스객체를참조하는것을말한다. 즉, 어떤객체에대해작업을할때객체의 type 에적절하게반응할수있다는의미이다. 클래스와객체 (Classes and Objects) 델파이 OOP 에대한문법적인고찰 구체적인예제에들어가기전에, 델파이의 OOP 에서나오게되는중요한개념들과문법적 인특징에대해서알아보도록하자. 1. 필드 (Fields)

3 필드는객체에속해있는일종의변수라고이해하면된다. 필드는클래스형을포함해서어떤데이터형으로도선언해사용할수있다. 필드를선언하려면단순히변수를선언하듯이하면된다. 예를들어, 다음의선언부는 TNumber 라는컴포넌트를선언하는데, 여기에는 Int 라는정수필드만을가지고있다. type TNumber = class Int: Integer; 2. 메소드 (Methods) 메소드는클래스와연관되어있는프로시저나함수를말한다. 메소드를호출할때에는반드시객체를지정해야하며, 메소드는그객체위에서동작한다는점이일반적인프로시저나함수와의차이점이다. 예를들어다음의코드를살펴보자. SomeObject.Free; 이코드는 SomeObject 라는객체의 Free 메소드를호출한다. 3. Inherited 키워드 메소드를구현할때 inherited 라는키워드를사용하면클래스의조상이가지고있던메소드를호출하게된다. 보통메소드를오버라이드할때, 그메소드의기능을추가하기위해일단은조상클래스의메소드를호출하고나서부가적인기능을수행하거나, 사전작업을지정한후마지막에조상클래스의메소드를 inherited 키워드를이용하여호출하는것이전형적인방법이다. 4. Self 지시어 메소드의구현부분에 Self 라는지시어를사용하면, 이지시어는메소드가실행되는객체를지칭하는것이다. 예를들어, 다음의코드는 TCollection 클래스의 Add 메소드를구현한부분이다. function TCollection.Add: TCollectionItem;

4 Result := FItemClass.Create(Self); 여기에서 Add 메소드는 FItemClass 필드에의해참조되는 Create 메소드를호출하는데, 이필드는항상 TCollectionItem 의자손이다. TCollectionItem.Create 메소드는 TCollection 형의파라미터를하나가지기때문에, Add 가호출될때 TCollection 인스턴스객체를넘겨준다. 5. 프로퍼티 (Properties) 프로퍼티는필드와마찬가지로, 객체의속성을정의하는것이다. 그렇지만필드가단지내용이변경되거나, 검사할때사용되는단순한저장소의역할을하는데비해프로퍼티는데이터를읽고, 쓰는특별한동작과연관되어있다. 프로퍼티는객체의속성에접근할수있는제어권을제공한다. 프로퍼티에대한보다자세한내용은제 4 부의내용을참고하기바란다. 클래스의선언, 생성, 파괴 클래스는사용자가정의한데이터형이다. 클래스는내부적인데이터와메소드를가지고있으며, 유사한많은객체들의전반적인특징과행동들을정의한다. 이에비해객체는클래스의구체적인변수로, 실제로메모리를차지하게되는인스턴스이다. 오브젝트파스칼에서새로운클래스데이터형을선언하는구문은다음과같다. type TPerson = class Name, ID: string; 위의코드는 TPerson 이라는클래스를선언하고, 이클래스의필드인 Name, ID 를정의했다. 델파이에서는일반적으로모든클래스의이름앞에는 T 자를붙이도록되어있다. 이것은강제사항이아니지만관습을따르는것이아무래도좋을것이다. 위의선언문을보면마치레코드선언과비슷하다는것을알수있을것이다. 클래스의상속을하는구문은 class 키워드옆에괄호를치고이안에상속받을클래스의이름을적어넣으면된다. TPerson = class(tobject)

5 라는구문은 TObject 라는클래스에서상속받는 TPerson 클래스를선언하는구문이다. 이들에접근하기위해서는다음과같은방법을이용하면된다. var Person: TPerson; Person.Name := 정지훈 ; Person.ID := ttolttol 그러나, 위의코드는실제로실행되지않는다. 이는 TPerson 이라는클래스의변수인 Person 을선언했지만, 실제이클래스의인스턴스가생성되지않았기때문이다. cf. 오브젝트파스칼에서는클래스형으로선언된각변수들이각각의객체의값을가지고있는것이아니라, 객체에대한참조값 (reference), 즉그객체가저장된메모리위치의포인터를가지고있는것이다. 이러한패러다임을 객체참조모델 (object reference model) 이라고한다. 그러므로아래와같이변수를선언하면, var Person: TPerson; 메모리에객체가만들어지는것이아니라그저객체에대한메모리의위치가정해지고, 여기에대한참조값이 Person 변수에저장되는것이다. 그러므로, 실제로객체의인스턴스를사용하려면인스턴스를직접만들어야한다. 폼에추가하는컴포넌트의인스턴스는델파이에의해자동으로만들어진다. 객체의인스턴스를만들기위해서는그객체의생성자 (constructor) 인 Create 메소드를사용하면된다. 생성자는새로운객체를위해메모리배치를하고초기화시키는특수한프로시저이다. 이러한생성자는델파이의객체모델의가장기본적인클래스인 TObject 에서상속받게되므로, 개발자들은아무걱정없이이를사용할수있다. 아래의코드를보자. var Person: TPerson;

6 Person := TPerson.Create; Person.Name := 정지훈 ; Person.ID := ttolttol ; TPerson.Create 구문에의해실제객체가생성된다. 이 Create 메소드는 TObject 클래스의 constructor 로서, 모든클래스가이를상속하게된다. 그러므로, TPerson = class 와 TPerson = class(tobject) 는같은의미이다. 이렇게일단객체를생성했으면이를결국에는삭제해야한다. 이때에는 Free 메소드를호출하면된다. Free 메소드역시 TObject 클래스의메소드이다. 이와같이필요할때객체를만들어서사용하고일이끝나면없애버리는식으로사용하면된다. 그럼, 이를이용해서간단한예제를만들어보도록하겠다. 다음과같이에디트박스 2 개와버튼 4 개를폼위에올려놓고, 각버튼의 Name 프로퍼티를 btncreate, btnfree, btnassign, btnshow 로설정하자 ( 그림 5-1). 그리고, Caption 프로퍼티를 생성, 해제, 대입, 보기 로설정한다. 각에디트박스의 Text 프로퍼티는지운다. 유닛의 type 문장에 TPerson 클래스를선언하고, 전역변수 Person 을선언한다. 그리고, 각버튼의 OnClick 이벤트핸들러를아래와같이작성한다. type ( 중략 ) TPerson = class // 클래스선언부 Name, ID: string; var Form1: TForm1; Person: TPerson; // 전역변수선언 procedure TForm1.btnCreateClick(Sender: TObject); Person := TPerson.Create; // 인스턴스생성 procedure TForm1.btnAssignClick(Sender: TObject); Person.Name := Edit1.Text; // 에디트박스의값을대입

7 Person.ID := Edit2.Text; procedure TForm1.btnShowClick(Sender: TObject); ShowMessage (' 안녕하세요? '+Person.Name+ ' 씨, 당신의 ID 는 '+Person.ID+' 입니다.'); procedure TForm1.btnFreeClick(Sender: TObject); Person.Free; ( 그림 5-1) 예제폼그림 4 개의버튼에대한이벤트핸들러를이와같이작성하면 생성 버튼을클릭하면 TPerson 클래스의인스턴스가생성되어 Person 변수에대입되고, 대입 버튼을클릭하면 Person 객체의 Name, ID 필드에에디트박스의내용이대입된다. 보기 버튼을클릭하면 Person 객체의 Name, ID 필드를이용해다음 ( 그림 5-2) 과같은메시지박스가뜬다. 이때 TPerson 클래스의인스턴스가생성되지않았다면 Access violation 에러메시지가나타날것이다 ( 그림 5-3). 마찬가지로 생성 버튼을클릭한후, 해제 버튼을클릭하면생성되었던 TPerson 클래스의인스턴스가파괴되므로, 이때 대입, 보기 버튼을클릭하면역시 Access violation 에러가발생한다. ( 그림 5-2) 에디트박스이름 ( 정지훈 ) 과 ID(ttolttol) 를입력한후 생성, 대입, 보기 버튼을클릭하

8 면나타나는메시지박스 ( 그림 5-3) Create 하지않았거나, Free 를호출한후 대입, 보기 버튼을클릭해서인스턴스에접근 하려하면이와같은에러메시지가나타난다. 메소드와생성자 (constructor), 파괴자 (destructor) 의추가 이제 TPerson 클래스에몇가지메소드를추가해서조금은쓸모가있는클래스로만들어보자. 현재가지고있는 Name 필드는그대로두고, ID 필드대신, 주민등록번호를저장할수있는 RegID 필드를만들자. 이때필드임을나타내기위해각필드의앞에접두어로 F 를붙이도록한다. 그리고, 주민등록번호필드값을가지고이값이유효한지알아보는 IsValid 함수와나이와성별을알수있는 GetAge, GetSex 라는함수를추가한다. 또한, 이클래스의객체가생성될때값을초기화시키기위해생성자를추가하자. 생성자 (constructor) 는특별한형태의프로시저로, 이것을클래스에적용하면자동적으로그클래스의객체를위해메모리를할당하게되며, 초기화작업을지정할수있다. 단순히 constructor 라는예약어로선언하면되며, 클래스메소드로사용할때에는객체에대한메모리할당작업을하게되지만, 이미인스턴스화된객체에서사용될때에는메모리할당작업은하지않고, 정의된초기화작업만하게된다. 여기서만드는클래스에는생성자로 Create 라는프로시저를정의하는데, 파라미터로 FName, FRegID 필드를채울수있도록선언한다. 마찬가지로파괴자 (destructor) 도정의할수있으며 destructor 라는예약어로선언하면된다. 이프로시저는객체가파괴되기전에시스템자원을 release 하는작업을주로하게되는데, 여기서는특별히추가하지않는다. 따로파괴자를추가하지않아도모든클래스는 TObject 에서파생되기때문에기본적인 Free, Destroy 프로시저는정의되어있다.. 이렇게확장한클래스의선언부는다음과같다. type TSex = (smale, sfemale); //GetSex 함수에서쓰임 TPerson = class(tobject) FName: string;

9 FRegID: string; constructor Create(Name, ID: string); function IsValid: Boolean; function GetSex: TSex; function GetAge: integer; 이제각함수를구현해보도록하자. 먼저생성자를구현해보자. 생성자에서는 Name, ID 를파라미터로받아서이값을필드에 적용하여초기화한다. constructor TPerson.Create(Name, ID: string); FName := Name; FRegID := ID; 다음으로 FRegID 필드에저장된주민등록번호가잘못된것이아닌지검사하는 IsValid 함수를구현하도록하자. 주민등록번호를검증하는방법은주민등록번호의 13 자리중마지막자리를제외한 12 자리에각각 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 를곱한뒤전체를더한다. 예를들어, 이라는주민등록번호가있다고하면, (7*2) + (0*3) + (1*4) + (2*5) + (0*6) + (3*7) + (1*8) + (0*9) + (7*2) + (9*3) + (7*4) + (2*5) = 136 이다. 이값을 11 로나눈나머지값을 11 에서뺀다. 위의경우에는나머지가 4 이므로 11-4=7 이된다. 이값이마지막주민등록번호값과일치하면일단유효한번호인것이다. 일종의해싱함수 (hashing function) 이다. 이를이용해서 IsValid 함수를구현해보자. function TPerson.IsValid: Boolean; Result := False; if ((Length(FRegID) = 13) and ( < FRegID) and ( > FRegID)) then if (11 - ((StrToInt(FRegID[1]) * 2 + StrToInt(FRegID[2]) * 3 + StrToInt(FRegID[3]) * 4 + StrToInt(FRegID[4]) * 5 + StrToInt(FRegID[5]) * 6 + StrToInt(FRegID[6]) * 7 + StrToInt(FRegID[7]) * 8 + StrToInt(FRegID[8]) * 9 + StrToInt(FRegID[9]) * 2 + StrToInt(FRegID[10]) * 3 + StrToInt(FRegID[11]) * 4 + StrToInt(FRegID[12]) * 5) mod 11)) =

10 StrToInt(FRegID[13]) then Result := True else Result := False; 즉, 일단 FRegID 필드값이 13 자리이고, 숫자로이루어졌는지확인하고, 각자리의값을 정수형으로바꿔서위에서설명한공식에따라적절한지알아보고적절하면 True, 그렇지 않으면 False 를반환한다. Cf. 1. 파스칼의문자열은일종의배열로생각할수있기때문에, 이런형태의코드가가능한것이다. 예를들어 Name 이라는문자열변수의값이 Sample 이라고할때, Name[1], Name[2], Name[3], Name[4], Name[5] 의값은각각 S, a, m, p, l, e 이다. 2. Length 함수문자열의길이를구하는함수이다. 델파이 1.0 까지는문자열의 0 번째요소, 즉위의예를들면 Name[0] 값에문자열의길이가저장되어있었으나, 2.0 부터는 Length 함수를사용하여길이를구한다. 3. StrToInt, IntToStr 함수정수와문자열의형전환을해주는함수이다. 예를들어 IntToStr(123) 의결과값은 123 이고, StrToInt( 123 ) 의결과값은 123 이다. 마지막으로 GetSex 와 GetAge 를구현해보자. function TPerson.GetSex: TSex; if IsValid then if FRegID[7] = '1' then Result := smale else Result := sfemale; function TPerson.GetAge: integer; var Date: string; if IsValid then

11 Date := DateToStr(Now); Result := StrToInt(Copy(Date, 1, 2)) - StrToInt(Copy(FRegID, 1, 2)); if (Copy(Date, 4, 2) + Copy(Date, 7, 2)) < Copy(FRegID, 3, 4) then Result := Result - 1; GetSex 함수는주민등록번호의 7 번째자리가 1 이면남자, 2 이면여자이므로쉽게이해가될것이다. GetAge 함수는일단 System 의날짜를얻을수있는 Now 함수를사용한후이를문자열로변환한다. 그리고, 여기서연도만을뽑아정수로변환한후, 주민등록번호의첫두자리가태어난해를가리키게되므로이를정수로변환해서뺀다. 여기에생일이지나지않았으면 1 을빼야만으로계산한나이가된다. 생일을비교할때, 입력받은주민등록번호상의생일은 0301 과같이연속된 4 개의문자로구성되지만, DateToStr 로변환된 Date 변수의값은 과같은형식으로저장되기때문에이를동등하게비교하기위해 Copy 함수를이용하여주민등록번호상의생일처럼연속된 4 개의문자로만드는루틴이추가되었다. 그럼, 이클래스를활용하는프로그램을만들어보자. 두번째예제에 TPerson 의구현부분을추가하고, 폼을다음 ( 그림 5-4) 과같이디자인한다. 여기서도첫번째예제와마찬가지로에디트박스를 2 개추가한다. 여기에는이름과주민등록번호를입력받을것이다. 그리고, 버튼을 2 개추가한후 Name 프로퍼티를 btnassign 과 btnexecute 로설정하고, Caption 을각각 대입 과 실행 으로설정한다. ( 그림 5-4) 두번째예제의폼디자인 그리고, 각버튼의이벤트핸들러를다음과같이작성한다. procedure TForm1.btnAssignClick(Sender: TObject); if Assigned(Person) then Person.Destroy; Person := TPerson.Create(Edit1.Text, Edit2.Text);

12 procedure TForm1.btnExecuteClick(Sender: TObject); var Sex, Age: string; if not Assigned(Person) then ShowMessage(' 클래스가생성되지않았습니다!'); Exit; if not Person.IsValid then ShowMessage(' 주민등록번호가유효하지않습니다 '); Exit; end else if Person.GetSex = smale then Sex := ' 남자 ' else Sex := ' 여자 '; ShowMessage(Person.FName + ' 씨, 당신은 ' + Sex + ' 이며, 만 ' + IntToStr(Person.GetAge) + ' 세입니다.'); 그렇게어렵지않은코드이므로자세한설명은생략하도록하겠다. 참고로제대로된주민등록번호를입력했을때와그렇지않았을때의메시지박스는다음과 같다. ( 그림 5-5) 예제실행결과 이런클래스의사용방법은델파이에서 TComponent 를클래스를상속해서더욱재사용성이뛰어난컴포넌트로개발할수있다. 이를위해서는프로퍼티에대한이해와델파이가제공하고있는컴포넌트모델에대한이해가필요한데, 여기에대해서는제 4 부에서자세

13 하게다룰것이다. 상속성과델파이폼 새로운프로젝트를생성하면, 델파이는새로운폼을보여준다. 코드에디터의새로운프로젝트의내용을살펴보면, 델파이가폼에대한새로운객체클래스를선언하고새로운폼객체를생성하는코드를만들어낸다는것을알수있다. 그러면초기에생성되는델파이의코드를살펴보자. unit Unit1; interface uses Windows, Classes, Graphics, Forms, Controls,... ; type TForm1 = class(tform) { 폼에대한새로운클래스선언 } private { Private declarations } public { Public declarations } { 클래스선언부는여기서종료된다.} var Form1: TForm1; implementation { 구현부분의시작 } {$R *.DFM} end. { 구현부분과유닛의끝 } 새로운객체데이터형인 TForm1 은 TForm 에서상속받는다는것을알수있다. 객체에 는데이터필드와메소드를가진다는것은이미설명한바있다. 그런데, TForm1 에는아

14 직메소드나데이터필드를지정하지않았다. 다만 TForm 클래스에서상속받은메소드와프로퍼티를가지게될것이다. 개발자는 TForm1 의선언부분에마음대로메소드나프로퍼티등을추가할수있다. 또한, 컴포넌트를폼에추가하는동작에의해델파이가메소드나데이터필드를추가해준다. 그렇지만, 이어플리케이션을실행시켜보면간단한폼이생성되는것을볼수있다. 이것이의미하는것은무엇인가? 즉, 기본적으로 TForm 클래스의모든메소드와기능을상속받아서사용할수있다는것이다. 변수선언부에서는새로운변수인 Form1 을 TForm1 으로선언한다. 이렇게선언함으로써 TForm1 클래스의인스턴스가될수있다. 클래스의인스턴스는여러개생성될수있다는것은이미알고있을텐데, 만약 TForm1 클래스를여러인스턴스로생성하면그것이바로 MDI(Multiple Document Interface) 어플리케이션이되는것이다. 그러면, 폼에버튼을하나추가하고그버튼의 OnClick 이벤트핸들러를다음과같이작성하자. procedure TForm1.Button1Click(Sender: TObject); Form1.Color := clgreen; 이렇게이벤트핸들러를작성하고나면, 폼의유닛의코드는다음과같이바뀌어있을것이 다. unit Unit1; interface uses Windows, Classes, Graphics, Forms, Controls,...; type TForm1 = class(tform) Button1: TButton; { 새로운데이터필드 } procedure Button1Click(Sender: TObject); { 새로운메소드 } private { Private declarations } public { Public declarations }

15 var Form1: TForm1;... ( 후략 ) TForm1 의선언부에새로운 Button1 이라는필드가추가되었음을알수있다. 이렇게새로운컴포넌트를폼에추가할때마다새로운필드가 type 선언부에추가된다. 또한, 델파이에서작성하는모든이벤트핸들러는폼객체의메소드로선언된다. TForm1 에는이제 Button1Click 이라는새로운메소드프로시저가추가되었다. 여기서이런동작들을 OOP 의개념으로생각해보자. 델파이의폼디자이너는과연무엇인가? 결국델파이의폼디자이너는 TForm 이라는클래스를상속받은새로운형태의클래스를쉽게만들어주는일종의위저드인셈이다. 이제상속의의미를이해하기쉬운비유를들어생각해보자. 앞에서처음어플리케이션이생성되었을때의폼은기본옵션으로된자동차를한대구입한것으로가정하자. 기본옵션의자동차는자동차메이커에서항상정해진방식대로만들어지기때문에가장기본적인기능만을가지고달릴수있을것이다. 그렇지만, 이자동차를구입한사람이에어컨도달고, 파워핸들과에어백등의여러가지옵션을장착할수있다. 이를위해서자동차를구입한사람은자동차전체를새로만들필요는없는것이다. 즉, 이를상속을통해설명하자면기본적인자동차를상속받은사용자가자식클래스자동차에새로운옵션들을추가한것이다. 마찬가지로델파이의폼은상속성을설명할때가장알기쉽고, 전형적인방법을보여준다고말할수있다. 클래스의범위 (scope) 클래스의멤버들은서로다른범위를가질수있다. 이러한범위를나타내는지시어로는 private, protected, public, published 의 4 가지가있다. 참고로오브젝트파스칼에서는유닛도범위를결정하는데한몫을한다. 비록 private 로선언되었더라도같은유닛에있으면모두접근이가능하다. private 다른유닛에있는경우 private 섹션에선언된멤버에는접근할수없다. 다른사용자 가접근할필요가없는멤버들은여기에선언한다.

16 protected 이클래스에서상속받은클래스에서만접근할수있는멤버들을여기에선언한다. 즉, 현재의클래스를상속받아서새로운클래스를만들때수정이필요하다면개발자에게접근이가능해야하지만, 일반적으로사용할때에는접근할수없도록할때사용된다. public, published 다른클래스에서제한없이사용될수있는멤버들을여기에선언한다. published 는오브젝트인스펙터에서도볼수있는멤버들을선언할때사용한다. published 로선언하면멤버에대한 RTTI(runtime type information) 가생성되며, 이를이용해서다른프로그램들이런타임에서객체에대한필드, 메소드, 프로퍼티에접근하게된다. 델파이는 RTTI 를이용하여오브젝트인스펙터에프로퍼티를보여주며, 폼파일에프로퍼티의값을저장하고불러올수있다. Published 프로퍼티에사용할수있는데이터형은서수형과문자열, 클래스와메소드포인터형, 세트형, 실수형등을사용할수있다. 배열은사용할수없다. published 멤버가있는대부분의클래스는 TPersistent 클래스에서상속받는것이보통이다. 범위에대한지시어가없을때에는일단 public 으로간주한다. 그렇지만, 프로그래밍을할 때에는꼭이러한범위를지정해주는것이좋은버릇이다. 메소드 (Method) 객체의동작은메소드에의해정의된다. 메소드는프로시저나함수와비슷하지만지정한클래스와그의파생클래스만의객체를위해정의된다는점이다르다. 메소드에는보이지않는파라미터로서 Self 라는객체자신의참조자가전달된다. 메소드는또한클래스메소드로서선언될수있는데, 이런경우에는클래스참조로는호출될수있으나객체참조로서는호출되지않는다. 객체가없으므로 Self 파라미터도없다. 메소드의종류 메소드에도그동작방식과용도에따라여러가지종류가있다. 에대해설명하였다. 다음에이들각각의특징 1. 정적메소드 (Static method): 지시어 static; 아무런지시어가없을때에는디폴트로정적메소드로간주된다. 컴파일할당시에메 소드가위치한메모리주소가확정되는메소드이므로, 그만큼실행속도가빠르지만상

17 속을받은클래스에서메소드를새롭게정의하면, 그메소드만 ( 같은이름의경우 ) 사용 이가능하므로융통성이적다. 2. 가상메소드 (Virtual mehtod): 지시어 virtual; 가상메소드는실행시에 late binding 이라는과정을통해실제로호출될메모리주소가결정된다. 내부적으로가상메소드가참조되면변수에의해참조되는객체의실제클래스형이사용되는데, 이작업이가상함수테이블 (virtual method table(vmt), vtable) 에기록되어있는주소를참조하여이루어진다. 그러므로, 실제참조되는클래스형에따라서여러가지메소드가호출될수있는 다형성 이구현될수있다. 3. 동적메소드 (Dynamic method): 지시어 dynamic; 기본적인사용법이나목적은가상메소드와동일하지만, 내부적인처리방법에약간의차이가있다. 가상메소드가내부적으로 VMT 를이용해서메모리주소를참조하는데비해동적메소드는메소드를지정하는코드를이용해서메모리주소를찾게된다. 그렇기때문에가상메소드처럼테이블을직접참조하는방법보다다소느리게동작하지만메모리는덜사용하게된다. 4. 추상메소드 (Abstract method): 지시어 abstract; 일반적으로메소드를클래스에선언할때, 컴파일러는메소드프로시저가유닛의어느부분인가구현되어있을것으로간주하게된다. 그런데, 추상메소드로선언하면컴파일러는구현부분이자손클래스에있을것으로생각하고이를검사하지않는다. 그런데, 만약자손클래스에서이를구현하지않아서추상메소드가호출되면치명적인에러가발생하게되므로주의하기바란다. 메소드오버라이드 (method override) override 지시어는가상또는동적메소드를재정의할때사용된다. 재정의하는방법은다 음과같다. type TMyParent = class procedure AMethod; virtual; TMyClass = class(tmyparent)

18 procedure AMethod; override; 클래스메소드 (Class method) 보통메소드는클래스의인스턴스에대한행동을정의한다. 그런데, 어떤때에는클래스자체에대한메소드가있으면할경우가있다. 이럴때에는클래스메소드를정의해서사용한다. 클래스메소드는객체가생성되지않아도사용할수있다. 클래스메소드를선언하려면메소드정의부분에서 class 키워드를앞에붙여주면된다. 메소드오버로딩 델파이 4 에서는객체들이같은이름을가진여러개의메소드를가질수있다. 이를메소드오버로딩이라고하는데, 같은이름을가진메소드들은 argumets 의 type signature 를가지고서로를구별한다. 오버로드된메소드는키워드오버로드로표시된다. 그렇기때문에, 객체들은다음과같이다른두개의생성자를가질수있다. constructor Create(AOwner: TComponent); overload; override; constructor Create(AOwner: TComponent; Text: string); overload; 전역함수와프로시저역시오버로드가가능하다. 델파이 3 까지만해도메소드오버로딩을지원하지않았기때문에, 생성자의이름을다르게했어야했다. 예를들어모든윈도우컨트롤은 Create, CreateParented 의 2 개의생성자를공통적으로가지고있었다. 델파이 4 부터는 Create 라는메소드이름을가진여러생성자를가질수있다. 오브젝트파스칼의이전버전에서는같은이름의메소드를선언할경우조상클래스의메소드는사용되지않았다. 예를들어, Create 메소드를 Owner 파라미터를넘겨주지않고호출할경우과거에는 TObject 에선언된생성자를호출하지않고컴파일에러를발생시켰다. 메소드오버로딩으로이러한문제들이다소변경되었는데, 다음의코드를살펴보자. type A = class public procedure p(i: Integer); virtual; B = class(a)

19 public procedure p(s: string); var ab: B; ab.p('one'); { works } ab.p(1); { compile error! } 여기에서변경된메소드의파라미터를대입할경우에는동작하지만, 원본클래스의메소드 는동작하지않는다. 이를해결하기위해서는 overload 지시어를사용하면된다. 다음의 코드를살펴보자. type A = class public procedure p(i: Integer); overload; virtual; B = class(a) public procedure p(s: string); overload; var ab: B; ab.p('one'); { works } ab.p(1); { now this one works too! } 이경우에는동작하지만, 컴파일러가경고를한다. 에다음과같이 reintroduce 키워드를지정하면된다. 이를없애기위해서는상속받은메소드 type

20 A = class public procedure p(i: Integer); overload; virtual; B = class(a) public procedure p(i: Integer; S: string); reintroduce; overload; 동적바인딩 (Dynamic binding) 과다형성 (Polymorphism) 파스칼의함수와프로시저는기본적으로정적바인딩 (static binding) 을이용하고있다. 이것은메소드호출이컴파일러나링커에의해해석되며, 컴파일러나링커는이호출문을그함수나프로시저가존재하는특정메모리위치의호출로바꾸어놓는다는의미이다. 오브젝트파스칼을비롯한객체지향언어는이와다른형태의동적바인딩을지원한다. 이경우에는메소드의실제메모리주소가실행중에결정되는것이다. 이런특성을이용해다형성을지원할수있게되는데, 다형성이란어떤메소드의호출문을작성하고그것을변수에대입해도, 어느메소드가호출될지는그변수에관계된객체의데이터형에따라달라지는것이다. 다시말해, 주어진메소드에대해다수의버전이있을수있고, 그래서하나의메소드가이러한버전들각각을가리킬수있다. 정리 (Summary) 이번장에서는오브젝트파스칼의 OOP 적인특성에대해간단하게나마알아보았다. 사실오브젝트파스칼의기능을충분히활용하려면 OOP 에대한전반적인이해가필수적이다. 이책의범위가 OOP 에대해심도있게논의할수는없지만, 이책을읽는독자들은반드시따로 OOP 에대해공부해서그기법과철학을체득하길바란다. 그렇게익힌 OOP 에대한개념들은실제로델파이프로젝트를진행하게되면소중한지식으로활용될것이다. 다음장에서는 OOP 의대표적인언어인 C++ 과자바를오브젝트파스칼과비교하는시간을가지도록한다. 서로다른언어의특징에대해서알아보는것도델파이를잘이해하는데큰도움이될것이다.

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

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

JAVA PROGRAMMING 실습 08.다형성

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

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

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

PowerPoint Template

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

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

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

Microsoft PowerPoint - 2강

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

More information

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

Microsoft PowerPoint - additional08.ppt [호환 모드] 8. 상속과다형성 (polymorphism) 상속된객체와포인터 / 참조자의관계 정적바인딩과동적바인딩 virtual 소멸자 Jong Hyuk Park 상속의조건 public 상속은 is-a 관계가성립되도록하자. 일반화 ParttimeStd 구체화 2 상속의조건 잘못된상속의예 현실세계와완전히동떨어진모델이형성됨 3 상속의조건 HAS-A( 소유 ) 관계에의한상속!

More information

C++ Programming

C++ Programming C++ Programming 상속과다형성 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 상속의이해 상속과다형성 다중상속 2 상속과다형성 객체의이해 상속클래스의객체의생성및소멸 상속의조건 상속과다형성 다중상속 3 상속의이해 상속 (Inheritance) 클래스에구현된모든특성 ( 멤버변수와멤버함수 )

More information

PowerPoint 프레젠테이션

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

More information

OOP

OOP 오브젝트파스칼, C++ 그리고자바의특징 (Characterisitcs of Object Pascal, C++ and Java) 자바는가장일반적인인터넷용언어이며, C++ 은아마도가장흔하게사용되는 OOP 언어일것이다. 이들과델파이에서사용되는오브젝트파스칼의언어적인측면에서의비교를해보면서 OOP 언어에대한감을조금더높여보자. OOP 언어의특징 객체지향프로그래밍 (OOP)

More information

Microsoft PowerPoint 장강의노트.ppt

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lab 4 ADT Design 클래스로정의됨. 모든객체들은힙영역에할당됨. 캡슐화 (Encapsulation) : Data representation + Operation 정보은닉 (Information Hiding) : Opertion부분은가려져있고, 사용자가 operation으로만사용가능해야함. 클래스정의의형태 public class Person { private

More information

Microsoft PowerPoint - chap11

Microsoft PowerPoint - chap11 10 장객체 - 지향프로그래밍 II 상속 상속 (Inheritance) 상속이란무엇인가? 기존의클래스로부터새로운클래스를유도하는것 자식클래스는부모클래스의메쏘드와데이터를상속 자식클래스에새로운변수나메쏘드를추가할수있다. 기존클래스 부모클래스 (parent class), 수퍼클래스 (superclass), 기반클래스 (base class) 유도클래스 자식클래스 (child

More information

Microsoft PowerPoint - java2 [호환 모드]

Microsoft PowerPoint - java2 [호환 모드] 10 장객체- 지향프로그래밍 II 창병모 1 상속 창병모 2 상속 (Inheritance) 상속이란무엇인가? 기존의클래스로부터새로운클래스를유도하는것 자식클래스는부모클래스의메쏘드와데이터를상속 자식클래스에새로운변수나메쏘드를추가할수있다. 기존클래스 부모클래스 (parent class), 수퍼클래스 (superclass), 기반클래스 (base class) 유도클래스

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

JAVA PROGRAMMING 실습 02. 표준 입출력

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

More information

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

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

More information

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

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

More information

PowerPoint Presentation

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

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

No Slide Title

No Slide Title 상속 이충기 명지대학교컴퓨터공학과 상속 Q: 건설회사는기존아파트와조금다르거나추가적인특징들을가진새아파트를지을때어떻게하는가? A: 2 상속 상속 (inheritance) 은클래스들을연관시키는자연스럽고계층적인방법이다. 상속은객체지향프로그래밍의가장중요한개념중의하나이다. 상속은 은 이다 라는관계 (is-a relationship) 를나타낸다. 이관계를적용하여클래스들을상하관계로연결하는것이상속이다.

More information

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

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

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

PowerPoint Template

PowerPoint Template 9. 객체지향프로그래밍 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 9.1 개요 9.2 객체지향프로그래밍언어 9.3 추상자료형 9.4 상속 9.5 동적바인딩 9.1 객체지향의개념 (1) 3 객체지향의등장배경 소프트웨어와하드웨어의발전불균형 소프트웨어모듈의재사용과독립성을강조 객체 (object) 란? 우리가다루는모든사물을일컫는말 예 ) 하나의점, 사각형,

More information

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

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345]) Class Class, Collections 514770-1 2017 년봄학기 3/22/2017 박경신 클래스 (Class) 객체의속성과행위선언 객체의설계도혹은틀 객체 (Object) 클래스의틀로찍어낸실체 메모리공간을갖는구체적인실체 클래스를구체화한객체를인스턴스 (instance) 라고부름 객체와인스턴스는같은뜻으로사용 클래스구조 클래스접근권한, public 다른클래스들에서이클래스를사용하거나접근할수있음을선언

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

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 객체지향프로그래밍 객체지향언어 (Object-Oriented Language) 프로그램을명령어의목록으로보는시각에서벗어나여러개의 독립된단위, 즉 객체 (Object) 들의모임으로파악

More information

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chap12-OOP.ppt 객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버

More information

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - Lect04.pptx OBJECT ORIENTED PROGRAMMING Object Oriented Programming 이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Class 와 object Class 와객체 클래스의일생 메소드 필드 String Object Class 와객체 3 클래스 클래스의구성 클래스 (l (class): 객체를만드는설계도 클래스로부터만들어지는각각의객체를특별히그클래스의인스턴스

More information

17장 클래스와 메소드

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

More information

설계란 무엇인가?

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 상속 배효철 th1g@nate.com 1 목차 상속개념 클래스상속 부모생성자호출 메소드재정의 final 클래스와 final 메소드 protected 접근제한자 타입변환과다형성 추상클래스 2 상속개념 상속 (Inheritance) 이란? 현실세계 : 부모가자식에게물려주는행위 부모가자식을선택해서물려줌 객체지향프로그램 : 자식 ( 하위, 파생 ) 클래스가부모 (

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] 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 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) 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

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

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

More information

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

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

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

슬라이드 1

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

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

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

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

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

슬라이드 1

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

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

(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

JVM 메모리구조

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

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 손시운 ssw5176@kangwon.ac.kr 실제세계는객체로이루어진다. 2 객체와메시지 3 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 4 객체 5 객체란? 객체 (Object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작

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

쉽게 풀어쓴 C 프로그래밍

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

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

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

<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

다른 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

Microsoft PowerPoint - CSharp-10-예외처리

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

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

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

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

쉽게 풀어쓴 C 프로그래밍

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

More information

Chapter 6 Objects and Classes

Chapter 6 Objects and Classes 11 장상속과다형성 1 강의목표 상속 (inheritance) 을이용하여기본클래스 (base class) 로부터파생클래스 (derived class) 생성 (11.2) 파생클래스유형의객체를기본클래스유형의매개변수 (parameter) 로전달함으로써일반화프로그래밍 (generic programming) 작업 (11.3) 생성자와소멸자의연쇄적처리 (chaining)

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

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

오버라이딩 (Overriding)

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

More information

제4장 기본 의미구조 (Basic Semantics)

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 15. 다형성과가상함수 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr Learning Objectives 가상함수 (Virtual Function) 기본 사후바인딩 (late binding) / 동적바인딩

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

Microsoft PowerPoint - 2-Objective-C 기초

Microsoft PowerPoint - 2-Objective-C 기초 클래스와오브젝트 메모리관리 순천향대학교컴퓨터공학과이상정 1 Objective-C 소개 C 언어에 Smalltalk 스타일의메시지전달을결합한객체지향프로그래밍언어 Objective-C 와코코아는 Mac OS X 운영체제의핵심 개발역사 1980 년대초에 Stepstone 사의 Brad Cox 와 Tom Love 가개발 1985년에 Steve Jobs가저렴한워크스테이션개발을위해

More information

No Slide Title

No Slide Title 클래스와객체 이충기 명지대학교컴퓨터공학과 들어가며 Q: 축구게임에서먼저공격하는팀을정하기위해동전을던진다. 우리는동전을던질때앞면이나오느냐아니면뒷면이나오느냐에만관심이있다. 또한동전을가지고해야할일은동전을던지는것과동전을던진후결과를알면된다. 이동전을효과적으로나타낼수있는방법을기술하라. A: 2 클래스와객체 객체 (object): 우리주변의어떤대상의모델이다. - 예 : 학생,

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

Microsoft Word - java19-1-midterm-answer.doc

Microsoft Word - java19-1-midterm-answer.doc 중간고사 담당교수 : 단국대학교응용컴퓨터공학박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호 (4자리숫자 ) 를기입하면성적공고시학번대신암호를 사용할것임. 1. 다음질문에답을하라. (55

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

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

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

More information

JAVA PROGRAMMING 실습 07. 상속

JAVA PROGRAMMING 실습 07. 상속 상속 부모클래스에정의된필드와메소드를자식클래스가물려받는것 슈퍼클래스 (superclass) 특성을물려주는상위클래스 서브클래스 (subclass) 특성을물려받는하위클래스 슈퍼클래스에자신만의특성 ( 필드, 메소드 ) 추가 슈퍼클래스의특성 ( 메소드 ) 을수정 = 오버라이딩구체화 class Phone 전화걸기전화받기 class MobilePhone 전화걸기전화받기무선기지국연결배터리충전하기

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

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

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

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

PowerPoint Template

PowerPoint Template 7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent 3

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

C++ 기본문법 정리

C++ 기본문법 정리 공학 SW 집중강좌 - 프로그래밍언어 Android Programming Chap 1. 객체지향프로그래밍 오병우 컴퓨터공학과 기술동향 프로그래밍방식의변천 기계중심의 Stored-Procedure 기계어, 어셈블리언어 구조적프로그래밍 Pascal, C 잘정의된제어구조, 코드블록, GOTO 문사용억제, 순환호출 (recursion) 과지역변수를지원하는독립형 SUB

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

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

쉽게 풀어쓴 C 프로그래밍

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

More information

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

Microsoft PowerPoint - additional06.ppt [호환 모드] 보조자료 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park 복습 : Const 키워드왜사용? C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; //

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 9 장생성자와접근제어 이번장에서학습할내용 생성자 정적변수 정적메소드 접근제어 this 클래스간의관계 객체가생성될때초기화를담당하는생성자에대하여살펴봅니다. 생성자 생성자 (contructor): 객체가생성될때에필드에게초기값을제공하고필요한초기화절차를실행하는메소드 생성자의예 class Car { private String color; // 색상

More information

쉽게

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

More information

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

Microsoft PowerPoint - additional07.ppt [호환 모드] 보충자료 7. 상속 (inheritance) 의이해 상속의기본개념 상속의생성자, 소멸자 protected 멤버 Jong Hyuk Park 상속의기본개념 Jong Hyuk Park 상속의기본개념 상속의예 1 " 철수는아버지로부터좋은목소리와큰키를물려 받았다." 상속의예 2 "Student 클래스가 Person 클래스를상속한다." 아버지 Person 철수 Stduent

More information

슬라이드 1

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

More information

유니티 변수-함수.key

유니티 변수-함수.key C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)

More information

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상 2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상  2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌 강의계획서. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 학점교 강사명교 강사전화번호 강의시간 시간강의실수강대상 E-mail. 교과목학습목표 차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌어나갈핵심기술의기초로프로그래밍에주목하고있다. 이에본교과목에서객체지향언어의기본개념을학습한후구조적프로그래밍언어와의차이점을학습한다.

More information