본문 바로가기

DEV_STUDY/C#

[C# 제네릭] Generic 오늘은 C#에서 중요한 역할을 차지하는 제네릭에 대해서 한번 공부해보자. 그럼 이러한 제네릭이란 과연 무엇일까!? 제네릭(Generic) 이란 클래스에 사용할 타입을 디자인할 때 지정하는 것이 아니라 클래스를 사용할 때 지정한 후 사용하는 기술을 말한다. 이게 무슨말이야!??!!? public class a // 앞서 여기서 는 지정되지 않은 타입이라고 정의해준다. { private T data= default(T); public void setData(T data) { this.data = data; } public T getData() { return this.data; } } public class b { static void Main(string[] args) { string str="1234허미.. 더보기
[C# 컬렉션] Colloection 오늘은 컬렉션에대해서 알아보자. 컬렉션이란 무엇인가?! 배열과 다른점이 있다면.. 객체를 저장하는 곳이랄까!? 객체저장이라는 측면에서 컬렉션 유형을 제공하는데 이러한 유형으로는.. 1. ArrayList 2. SortedList 3. Hashtable 4. Stack 5. Queue 6. NameValueCollection 등이 있다. 이러한 컬렉션류의 특징은 메모리 차원에서 데이터를 보관할 수 있으며, 수정,삭제,삽입,검색 등의 기능이 있다. 저장이라는 점은 배열과 유사하나 가장 큰 차이점은 메모리의 동적 확장이라는 측면에 있다. ( 참 컴퓨터는 메모리 관리가 중요 합니다잉!? ) 먼저 IEnumerable 과 IEnumerator 인터페이스 에 대해서 알아보자. -사진출저 : JABOOK - IEn.. 더보기
[C# 객체지향] Delegate 대리자! 딜리게이트에 대해서 알아보자. Delegate란? - 함수의 대리자. - 함수를 보다 효율적으로 사용하기 위해서 특정 함수 자체를 캡슐화 하기 위한 도구! 한마디로 클래스안의 특정 함수만 빼와서 사용한다고 보면된다. 실전 예제를 들어서 보여주는게 더욱 쉬울것이다. delegate void show1(); delegate void show2(int a); class aaa { static void Main(string[] args) { aaa clas= new aaa(); show1 sw = new show1(clas.f1); show2 sw2 = new show2(clas.f2); sw(); sw2(232); } public void f1() { Console.WriteLine("이것은 바로 딜리게이트이.. 더보기
[C# 객체지향] Boxing & Unboxing 박싱/언박싱 오늘은 박싱과 언박싱에 대해서 알아보자. 박싱이란? 값타입을 참조타입으로 변환하는 것이다. 이게 무슨말이냐? 값 타입을 참조 타입으로 변환한다니.... 그전에 박싱/언박싱에 대해서 설명하기 위해서 구조체와 클래스의 정의에 대한 내용이 다시 등장하는데 우선 복습하고 가보자. 클래스와 구조체의 다른점?! 클래스는 참조타입이고, 구조체는 값타입이란 점! 여기서 한가지 더 집고 넘어 가야 할 부분은 메모리. 앞에서 기본적으로 공부하고 넘어가야 할 부분. 메모리가 할당되고 안되고의 차이를 집고 넘어가야 할것이다. 값타입은 변수의 이름을 선언함과 동시에 메모리가 할당되는것이며, 참조타입은 변수의 이름을 선언하고 그것을 생성해줘야 메모리가 할당되는 것이다. using System; class BoxingTest1 {.. 더보기
[C# 객체지향] 업캐스팅( 제 1 다형성 ) 가상함수 ( 제 2 다형성 ) 업캐스팅이란?! 특정 객체가 하위클래스의 형에서 상위의 클래스형으로 캐스팅 되는 것이다. 말 그대루 하위클래스가 상위클래스로 캐스팅 되는 것. 이 업캐스팅과 가상함수를 한번 생각해보자. -출저 JABOOK- 업캐스팅 된후에 메소드를 호출했을 때 Virtual 를 이용한 override를 했을 때는 하위클래스를 상위클래스형으로 캐스팅했다면 아들(하위) 클래스의 메소드를 사용 할 수 있다. 그러나 new로 오버라이딩 한다면 하위클래스를 상위클래스로 캐스팅 하더라도 자기 자신의 메소드가 호출 된다. 더보기
[C# 객체지향] 인터페이스 (Interface) 란?! 간단하게 말해서, 클래스내의 구성요소들의 구현부가 없고, 선언부의 집합으로만 이루어진 클래스이다. 일반적으로 추상 클래스는 일반클래스에 구현이 없는 추상함수로 이루어진 경우지만, 인터페이스는 내부의 멤버가 몽땅 구현이 없는 추상으로 이루어진 종합체라고 생각하면 된다. 1. 인터페이스를 이용해서 객체 생성이 되지 않는다. 2. 인터페이스 내의 멤버는 모두 몸체가 없다. 3. 인터페이스 멤버는 default로 전부 public이다. 4. 내부에 필드를 가질 수 없다. { } 가 사용될 수 없다는 말이다. 5. 어떠한 접근자, 한정자를 붙일 수 없다. - 다시말하면, 인터페이스는 구현을 목적으로 한다. 그리고 이러한 인터페이스는 C#에서는 힘든 다중상속이 가능하게 한다. 이 인터페이스와 다중상속이 어떤 연관이.. 더보기
[C# 객체지향] 추상 함수, 추상 클래스 - Abstract Mehtod, Abstract Class 추상 함수란 무엇인가?! Abstract Method .. 몸체가 없는 함수. 프로토타입만 가지고 있는 함수. 라고 읽혀지고 있다. -출저 - JABOOK 이 추상함수를 쓰려면 몸체 앞에 반드시 abstract 키워드를 붙여서 사용 한다. 그리고 이러한 추상함수를 하나라도 포함하고 있는 클래스는 앞에도 abstract를 붙여서 추상 클래스임을 명시해야 한다. 또한 이러한 추상 클래스는 반드시 상속하여 오버라이드를 통해 구현한다음 사용하여야 객체가 생성가능하다. 단 하나의 추상 함수가 구현되어 있지 않다면 상속받은 클래스 또한 추상 클래스가 되고 만다. * Abstract로 선언된 추상 함수는, 상속받은 하위클래스에서 오버라이딩 하려면 override키워드를 사용하여 오버라이딩 해준다. 그러면 이러한 추상.. 더보기
[C# 객체지향] 다형성을 위하여.. 프로그래밍의 목표는 다형성 이라고 한다. 그럼 다형성이란?! 다형성이란, 하나로 여러가지 일을 하는 것이다. 하나로 여러가지 일을 한다..?!?! 과연 무슨 말일까? 하나의 열쇠로 두 곳의 문을 열 수 있을 때 , 이것을 다형성을 지원 하는 열쇠라고 부를 수 있다. 이러한 다형성이 적용되는곳은 1. 업캐스팅 2. 오버라이딩 3. 가상함수 4. 상속 -추상클래스 -인터페이스 이다. 이러한 다형성을 지원하기 위해서 쓰이는 도구들이 있는데 C#에서는 박싱, 언박싱, 추상클래스, 인터페이스, 델리게이트, 업캐스팅, 다운캐스팅, 가삼함수 등이다. 이 모두가 다형성을 위한 도구이므로 하나하나 차근차근 공부해보도록 하자. 더보기
[C#의 객체지향] 1 -7 오버라이딩, this, base 오늘은 오버라이딩과 This. Base 키워드에 대해 알아보겠다. 오버라이딩(Overriding) : 같은 이름을 가진 변수나, 메소드를 처리하는 방식이다. 첫번째: 지역 변수와 멤버 변수 명(name) Class test { int member=0; public void show() { int member =1000; Console.WriteLine(member); } } 이렇게 하면 클래스의 멤버변수 member이 0으로 선언되었음에도 불구하고, show()메소드안의 member가 지역변수로 선 언 되었기 때문에 출력을 하면 1000이 출력되게 된다. 두번째 : 상위클래스와 하위클래스에서의 동일한 명(name) class Top { public void show() { Console.WriteLin.. 더보기
[C#의 객체지향] 1 -6 상속관계에서의 접근제한자 이번엔 접근제한자자에 대해서 알아볼 것이다. 여기서 접근제한자라는 말은, private , protected , public , default 이다. 상속에서의 private는? 상속을 했다면 아들은 아버지의 public 멤버뿐만 아니라, private 멤버까지 모두 물려받는다. 아들은 아버지의 모든 멤버의 마음대로 접근할 수 있을까? 답은 No 이다. 단, public멤버는 아들이라도 마음대로 점 찍고 접근 할 수가 있다. Father클래스안에 public int Money=50000; 이라는 public 인트형 타입의 멤버가 있다고 한다. 이 Father 클래스를 상속받은 Child : Father 클래스가 있다고 보자. 그러면 Child Imchild = new Child(); 하면 Imchild... 더보기