블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday

'프로그래밍'에 해당되는 글 156건

  1. 2007.11.16 ASP.NET AJAX ControlToolkit 간단 설명 2
  2. 2007.11.16 [C#의 객체지향] - Overloading(오버로딩) 1
  3. 2007.11.16 인터페이스(interface)



ASP.NET AJAX ControlToolkit은 Microsoft에서 기존에 코드명 "Atlas"로 불리어졌으며, 편리한 사용자 인터페이스를 자기고 웹 페이지의 빠른 처리가 가능해지게 하는 새로운 도구입니다. 그리고 ASP.NET AJAX는 클라이언트 스크립트 라이브러리와 서버 컴포넌트의 구성으로 이루어져 있으며, 사용하기 위해서는 ASP.NET AJAX ControlToolkit을 이용하면 됩니다.

아래의 그림은 ASP.NET AJAX의 서버와 클아이언트의 구조도 입니다.

사용자 삽입 이미지


Ajax 기술은 정말 많이 들어 왔을 것입니다.

ASP.NET AJAX 은 Visual Studio에서 개발하기 편리한 도구들을 많이 제공하고 있기 때문에 우리가 기존에 어렵게 코딩했던 스크립트를 손 쉽게 코딩이 가능해졌다는 것입니다.


그럼 각각의 컨트롤들이 어떻게 적용이 되는지 한번 살펴 보도록 하겠습니다!





Posted by happydong
, |



ㅁ 오버로딩(Overloading)


 오버로딩의 특징은 다음과 같습니다.


 ☞ 하나의 클래스 내에서 다른 기능을 가지면서 같은 이름을 가진 메서드입니다.

   . 오버로딩(Overloading)은 같은 이름을 가진 여러 개의 메서드를 말합니다.
   . 다중정의, 중복메서드라고 부르며 일반적으로 오버로딩(Overloading)이라고 합니다.
   . 오버로딩은 클래스의 사용자를 편하게 하기 위해서 사용하는 객체지향의 기법이다.


 ☞ 메서드들의 구별은 메서드의 매개변수의 개수와 매개변수의 형에 의해서 구분됩니다.


 ☞ 리턴타입(Return Type)으로 구별하지 않습니다.


오버로딩을 이용하여 두 수를 합하는 예제 코드를 보도록 하겠습니다.

////////////////////////////////////////////////////////////////////////////////////////////

using System;

public class OverloadCalc

{

// int형 값을 반환함

public int Plus(int a, int b)

{

return (a+b);

}

// float형 값을 반환함

public float Plus(float a , float b)

{

return (a+b);

}

// double형 값을 반환함.

public double Plus(double a, double b)

{

return (a+b);

}

public static void Main()

{

//인스턴트 생성

OverloadCalc oc = new OverloadCalc();

//각각 parameter값을 대입.

int i = oc.Plus(3,5);

float j = oc.Plus(0.1f,0.2f);

double k = oc.Plus(0.5,0.7);

// return 값을 화면에 출력

Console.WriteLine("int : {0}",i);

Console.WriteLine("float : {0}",j);

Console.WriteLine("double : {0}", k);

}

}

////////////////////////////////////////////////////////////////////////////////////////////


위 코드를 실행해 보면 아래와 같은 그림으로 나타날 것입니다. (Ctrl + F5)


사용자 삽입 이미지


위 예제 코드는 같은 이름을 가진 3개의 메소드가 존재합니다.

오버로딩 메소드를 살펴보면 아래와 같습니다.

☞  public int Plus(int a, int b){ }

public float Plus(float a , float b){ }

public double Plus(double a, double b){ }

 

 메서드를 만들 때 메서드의 매개변수 형, 매개변수의 개수 그리고 리턴형이 다르면 메서드의 이름을 다르게 해서 만들어야 겠다고 생각했을 것입니다. 저 또한 오버로드가 몬지 몰랐을땐 그렇게 했었지요. 하지만 그럴필요가 없다는 것입니다.

하나의 메서서드의 이름으로 다양한 매개변수를 받아 들일 수 있는 메서드를 지원하기때문이지요. 이것을 오버로딩(Overloading)이라고 합니다.

 

그럼 컴파일러는 이 3개의 메서드를 어떻게 구분을 할까요!?

이름은 같고 매개변수의 형, 매개변수의 개수 그리고 리턴값이 틀릴 수 있기 때문에 구분할 수 있는 방법은 이세가지 중의 있겠죠. 리턴타입은 각각의 형에 따라 틀려질 수도 있으며 같아 질 수도 있기 때문에 리턴타입으로는 구분하지 않습니다. 그렇다면 남아 있는 것은 매개변수의 형과 매개변수의 개수입니다. 정확하게 내부적으로 사용자가 plus라는 중복메서드를 호출 했을 때 매개변수의 형과 매개변수의

개수로 구분합니다.

 자 그럼 위의 내용의 핵심적인 부분만 요약해 보자면 아래와 같습니다.

 

  ------ 중복메서드를 구분할 때의 규칙 --------

  ★ 매개변수의 개수와 타입이 달라야 한다.

  ★ 매개변수의 개수와 타입 중 하나만 달라도 중복메서드의

     조건으로써 성립 됩니다.

  ★ 메서드의 리턴타입은 중복메서드 구분할 때 사용하지 않습니다.

 

 오버로딩(Overloading)의 개념은 일반 메서드, 생성자메서드, Static메서드에 이르기까지 메서드가 활용되는 곳이면 어디서든 등장합니다. 그러니 Overloading의 개념을 숙지하는 것이 공부하는데 많은 도움이 될지 않을까 싶습니다!

 


참고 서적 : 소설같은 C#

Posted by happydong
, |



인터페이스(interface)

 

 - class가 제공하는 서비스를 명시하는데 사용되는 행위(method/property/indexer/event)의 집합

 - 세부적인 구현은 하지 않고, 단지 실제 class에서 해야 할 행동을 정의

   . 각 멤버의 signature만 정의

   . method,property,event,indexer를 하나로 묶어주는 역할

 - 실제 세부적인 구현은 interface를 상속받는 class에서 구현

 - class 가 다중상속을 지원하지 못하는 것을 보완하는 기능


인터페이스의 특징

 

  - method, property,indexer,event 만 포함될 수 있다.

    . const,field,constructor,destructor,static member 등은 포함될 수 없다.

  - 기본적으로 public member

  - 인터페이스에 대한 객체(인스턴스)를 생성할 수 없다.

  - interface 에서 정의된 모든 member는 파생 class에서 반드시 모두 구현되어야 한다.

  - 인터페이스의 이름은 I로 시작하는 것이 일반적이다.

  - 하나의 class를 다른 class가 상속받을 수 있듯이 인터페이스도 다른 인터페이스가 상속을    

    수 있다.


인터페이스의 정의

 

 - interface를 구현하는 class의 해당 method 에는 접근자(public,private,protected등)와 abstract,

  virtual , override, new등의 수식자를 저정할 수 없다.

 - System.Collections namespace 의 IEnumerator

////////////////////////////////////////////////////////////////////////////////////////

 interface IEnumerator{

          //member property

       object Current { get; } // 모든 member는 default로 public


         // member method

       bool MoveNext(); // interface의 모든 member는 정의만 있고 구현은 없다.

       void Reset();

}

////////////////////////////////////////////////////////////////////////////////////////

이렇게 member의 정의만 있고 구현은 없다.

이렇게 interface에서 상속을 받는 class 에서는 구현을 해줘야 한다.

///////////////////////////////// 예 제 /////////////////////////////////////////////////

class CustomEnumerator : IEnumerator

{

           public bool MoveNext()

           {

                 //...구체내용

                 return false;

           }

           public void Reset()

           {

                   pos = 0;

           }

           public object Current{

                  get{ return carArray[pos]; }

           }

}

////////////////////////////////////////////////////////////////////////////////////////


인터페이스의 사용


 - 인터페이스는 직접 객체를 생성할 수 없고, 인터페이스를 상속받은 class의 객체를 통해 사용된다.

///////////////////////////////////예  제//////////////////////////////////////////////////

         CustomEnumerator ce = new CustomEnumerator();

         bool bMove = ce.MoveNext();

         ce.Reset();

////////////////////////////////////////////////////////////////////////////////////////



참고 서적 : 소설같은 C#

Posted by happydong
, |