'c#'에 해당되는 글 1건

  1. 2011.05.24 추상 클래스(abstract class) & 인터페이스 (interface)
1. 추상 클래스(abstract class)
1) 정의 : 하나 이상의 추상함수를 갖고 있는 클래스 
  ※ 추상함수 : 함수의 정의부만 선언되어 있고 구현부는 선언되어 있지 않음 함수

2) 사용목적 
   ㄱ) 종속적인 부분과 공통적인 부분을 구분하기 위하여 사용.  
   ㄴ) 반드시 상속 클래스가 구현해야하는 메소드를 지정하기 위함 
   ㄷ) 설계단계에서 실제 구현을 뒷단으로 미루기 위함.

3) 주요 특징
   ㄱ) 추상 클래스를 직접 new로 객체를 생성할 수 없음. 
   ㄴ) 추상 클래스를 상속받은 클래스가 추상 메소드를 구현해야 인스턴스를 생성할 수 있음.


  [C# 사용예]
//define abstract class
public abstract class GeoObject
{
protected int id; 
double* pVertex;
public abstract double calculateArea();  // define abstract function empty
}

//define child class
public class Polygon : GeObject
{
public override double calculateArea()  // define abstract function as override
{
      ......   
}
}


  [C++ 사용예]  추상함수 == 순수 가상함수 
//define abstract class
public class GeoObject
{
protected int id; 
double* pVertex;
public virtual double calculateArea() = 0;  // define abstract function empty
}

//define child class
public class Polygon : GeObject
{
....
public override double calculateArea()  // define abstract function as override
{
      ......   
}
...
}


2. 인터페이스 (Interface) for C#
1) 정의
   ㄱ) 내부 멤버는 전부 추상임 (public abstract가 자동으로 붙음 : 구현없이 선언만 이루어짐) 
   ㄴ) method, property, indexor, event만을 멤버로 갖을 수 있음. 
   ㄷ) 인터페이스에서 상속받은 클래스들은 반드시 모든 멤버들을 재 정의해서 사용해야 함.

2) 주요 특징
   ㄱ) 다중 상속이 가능
   ㄴ) 자식 클래스에는 별도의 "override" keyword를 붙이지 않아도됨.

  [사용예 for C#]
//define interface
public interface INode
{
void disp(); // abstract method 
int Y { set; get;}  // property
}

//define child class
public class MyNode: INode
{
int y;

 
public void disp()
{
.....
}
public int Y     // property
{
set { y = value;}
get { return y;}
}
}

Posted by 꿈을펼쳐라
,