제로의영역

11.1 일반화 프로그래밍 & 11.2 일반화 메소드 본문

C#

11.1 일반화 프로그래밍 & 11.2 일반화 메소드

아이큐제로 2019. 12. 27. 16:39

* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.

* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.

 

11.1 일반화 프로그래밍

 

1. 일반화 프로그래밍의 정의: 특수한 개념으로부터 공통된 개념을 찾아 묶는 것

 

2. 일반화 방법: 일반화하는 대상을 '데이터 형식(int, float .. 등)' 을 통해 일반화 함.

 

11.2 일반화 메소드

 

1.일반화 메소드 정의: (데이터 형식을) 일반화한 메소드

 

2. 사용방법

 

 한정자  반환형식  메소드이름  <형식 매개 변수> (매개변수 목록)

{

    ...

}

 

3. 사용 예

 

// int 버전
void CopyArray( int[] source, int[] target)
{
	for(int i=0;i< source.Length; i++)
    traget[i]=source[i];
    }
    
    //string 버전
   void CopyArray( string[] source, string[] target)
{
	for(int i=0;i< source.Length; i++)
    traget[i]=source[i];
    } 
    
    //기타 형식 등등 버전
    //....

위의 예제에서 보듯이 같은 메소드를 데이터 형식에 따라 따로 구현해야 함.

이를 '일반화' 를 통해 아래 예제와 같이 사용 가능함

void CapyArray<T>(T[] source, T[] target)
{
    for(int i=0; i< source.Length; i++)
    target[i]=source[i];
    }

<T>를 메소드 이름 과 매개변수 목록 사이에 추가해주고 매개변수 앞에 T를 붙여주면 다른 데이터 형식이어도 하나의 메소드로 활용하여 사용할 수 있음.

<T>를 형식 매개 변수라고 함.

원하는 데이터를 호출 할 때는 아래의 방식으로 호출합니다.

int[] source={1,2,3,4,5};
int[] target=new int[source.Length];

CopyArray<int>(source, target);	//형식 매개 변수 T에 int를 대입

foreach(int element in target)
Console.WriteLine(element);

위 예제처럼 형식 매개 변수에 부르고 싶은 데이터 형식을 넣어 원하는 데이터를 호출 할 수 있습니다.

 

예제)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _10._11._1
{
    class Program
    {
        static void CopyArray<T>(T[] source, T[] target)
        {
            for (int i = 0; i < source.Length; i++)
                target[i] = source[i];
        }
        static void Main(string[] args)
        {
            int[] source = { 1, 2, 3, 4, 5 };
            int[] target = new int[source.Length];

            CopyArray<int>(source, target);

            foreach (int element in target)
                Console.WriteLine(element);

            string[] source2 = { "하나", "둘", "셋", "넷", "다섯" };
            string[] target2 = new string[source2.Length];

            CopyArray<string>(source2, target2);

            foreach (string element in target2)
                Console.WriteLine(element);
        }
    }
}

실행결과

1
2
3
4
5
하나



다섯

 

하나의 일반화 메소드를 통해 int형식과 string형식을 호출 할 수 있음.

'C#' 카테고리의 다른 글

11.3 일반화 클래스  (0) 2019.12.30
10.10 foreach가 가능한 객체 만들기  (0) 2019.12.26
10.9 인덱서  (0) 2019.11.18
10.8 컬렉션을 초기화하는 방법  (0) 2019.09.19
10.6 가변 배열  (0) 2019.08.09