윈도우즈프로그래밍#11
LeeMir, 22 April 2021
고급 프로그래밍 기법
제네릭
- 변수의 형을 매개변수로 하여 클래스나 메소드의 알고리즘을 자료형과 무관하게 기술하는 기법
- 형 매개변수
- 클래스 내의 필드나 메소드 선언 시 자료형으로 사용
- ’<’과 ‘>’ 사이에 형 매개변수의 이름을 기술
- 제네릭의 장점
- 알고리즘의 재사용성을 높임
- 자료형에 따른 프로그램의 중복을 줄임
- 프로그램의 구조를 단순하게 만듦
제네릭 클래스
- 형 매개변수(type parameter)를 가지는 클래스
- 형 매개변수를 이용하여 필드나 지역변수에 사용
- 실제 형 정보는 객체 생성 시에 전달받음
- 형식 매개변수 형(formal parameter type)
- 제네릭 클래스를 선언할 때 사용한 형 매개변수
class SimpleGeneric<T> {...}
- 실제 형 인자(actual type argument)
- 제네릭 클래스에 대한 객체를 생성할 때 주는 자료형
new SimpleGeneric<Int32>(10);
제네릭 인터페이스
- 형 매개변수를 가지는 인터페이스
- 형 매개변수의 선언 외에 일반 인터페이스를 구현하는 과정과 동일
제네릭 메소드
- 형 매개변수를 갖는 메소드
- 형 매개변수의 중첩
- 제네릭 메소드의 형 매개변수의 이름과 제네릭 클래스의 형 매개변수 이름이 같은 경우
- 서로 독립된 형 매개변수의 개념을 가짐
- 제네릭 클래스는 객체 생성 시에 형 매개변수를 전달받음
- 제네릭 메소드는 호출 시에 유추하여 형 매개변수가 결정됨
형 매개변수
-
형 매개변수의 범위
- 프러그램의 유연성 <=> 신뢰성
-
프로그램의 신뢰성을 증진하기 위해 제네릭에 전달 가능한 자료형의 범위를 제한할 필요가 있음
-
제네릭 클래스를 작성시 한정
-
where 키워드 사용
-
where T : struct // T는 값형이어야 함
where T : class // T는 참조형이어야 함
where T : new() // T는 매개변수가 없는 생성자가 있어야 함
where T : MyClass // T는 MyClass의 파생 클래스이어야 함
where T : IMyInterface // T는 IMyInterface를 구현한 클래스이어야 함
where T : U // T는 U로부터 파생된 클래스이어야 함
-
-