총 삽질들 514

#050_닷넷(.NET)_.Net Framework 기본 - 제네릭(Generic) 소개

안녕하세요 삽잡이입니다. 이번 시간에는 제네릭에 대해서 알아보려고 합니다. Collection은 일반적으로 자료구조라고 부릅니다.개념적으로 클래스나 실질적으로 객체를 일컷는 용어이지요.Generic은 일반적으로 위의 뜻에서 '일반화'가 붙은 것입니다. 왜 일반화가 들어갈까요? 일반적으로 좌측은 collection, 우측은 제네릭이라고 합니다. 둘 다 자료구조 클래스이니 collection입니다.제네릭도 collection입니다.하지만, 가 붙어있죠...즉, 일반화 기능이 추가되어있는 것입니다. Array가 만약, int[] 형식을 담고있다면 이는 int형 Array입니다.하지만, 제네릭을 사용하게 되면 T형 Array로써 사용자가 타입을 결정할 수 있게 됩니다.T를 결정할 수 있다 이겁니다. 뭐.. 별거..

#049_닷넷(.NET)_.Net Framework 기본 - IComparable & IComparer

안녕하세요 삽잡이입니다. 이번 시간에는 닷넷에서 많이 사용하는 인터페이스의 형식중IComparable 과 IComparer 에 대해서 알아보려고합니다. IComparable은 '나랑 너랑' 비교입니다.그리고 IComparer는 '제 3자'끼리 비교하는 인터페이스입니다. IComparable 인터페이스에는 int형을 반환하고, object형식의 인자를 받는 CompareTo() 메서드가 있습니다. 즉, 나와 상대 객체와 비교를 하겠다는 것입니다.보통 반환 형은 내가 크면 1, 상대가 크면 -1, 같으면 0을 반환합니다. IComparer은 int형을 반환하며, object형 인자를 두개 받는..즉, 두개의 object형식을 비교하는 Compare() 메서드가 있습니다. 두 인터페이스는 모두 같이 비교를 하..

#048_닷넷(.NET)_.Net Framework 기본 - ICloneable

안녕하세요 삽잡이입니다. 지난 시간까지 열나게... 깊은 복사와 얕은 복사에 대해서 알아봤었지요...이번 시간에는 복사가 가능하도록 기능을 제공해주는 ICloneable 인터페이스에 대해서 알아보도록 하겠습니다. ICloneable 인터페이스는 딱 하나의 인터페이스를 가지고 있습니다.바로, object형을 반환해주는 clone()이라는 메서드를 가지고 있지요...달랑 그거 하나입니다... 아무튼.. 왜 가지고 있을까요? 수 없이 많은 종류의 객체들 중에서 복사에 대해 필요성을 가지고 있는 객체들은 몇개가 될까요? class 외부에서 봤을 때..즉, Client 입장에서 봤을 때 어떤 객체가 복사가 가능한지에 대해서 그 유무를 파악할 수 있어야되지 않습니까? 따라서 복사할 수 있는 객체만 복사를 하도록, ..

#047_닷넷(.NET)_.Net Framework 기본 - 구조체와 클래스에서 복사 (Shallow ,Deep Copy)

안녕하세요 삽잡이입니다. 이번 시간에는 struct, class의 경우를 비교해보며각 참조를 가졌을 때, 값을 가졌을 때 어떻게 복사가 되어가는지 알아보겠습니다.하... 힘든 시간이 될 수 있지만 힘차게 달려가봅시다! 필자는 Point와 Rect라는 형식을 가지고 비교를 진행해보도록 하겠습니다. 시작 전에 복사의 진리(?)를 다시 한번 곱씹어보고 가시겠습니다...값 형식과 참조 형식이 뭡니까?값 형식은 왜 값 형식이라고 부를까요?변수 자체가 값이고 모든 복사가 값으로 되기 때문입니다.참조형식은 그렇다면?객체 자체가 참조입니다. 객체는 따로 있고 참조자를 통해 가리킬 뿐이지요.참조형식일 경우 복사할 때 참조가 복사되니 참조 복사라고 부를 수 있습니다. 본격적으로 시작해볼까요? Case 1. Class 안에..

#046_닷넷(.NET)_.Net Framework 기본 - 얕은 복사와 깊은 복사의 필요성

안녕하세요 삽잡이입니다. 이번 시간에는 복사에 대해서 알아보려고합니다.깊은 복사, 얕은 복사 모두 다 다루려고 했지만,글이 길어지면 여러분도 지루해하실터이니... (맞습니다... 원래 맨날 길죠...)이번 시간은 Shallow Copy와 Deep Copy의 필요성에 대해서 중점적으로 다루려고 합니다. 시작해보겠습니다. Shallow Copy, Deep Copy 모두 다 복사입니다.그런데 만약, 복사할 대상이 Class형 참조자라면, 이를 논할 수 없습니다.단지 참조를 복사한 것일 뿐이지요...하지만, struct형 객체일 경우 Shallow Copy, Deep Copy를 논할 수 있습니다. 무슨 말인지 감이 안잡히시지요? 지금부터 시작하겠습니다. Shallow Copy, Deep Copy는 사실 이름만 ..

#045_닷넷(.NET)_.Net Framework 기본 - IEnumerable & IEnumerator

안녕하세요 삽잡이입니다. 이번 시간에는 닷넷에서 제공하는 BCL에 있는 인터페이스를 살펴보려고합니다.우리가 살펴보고자 하는 인터페이스는바로, 'IEnumerable', 'IEnumerator' 입니다. 우리는 이미 BCL에서 제공하는 이 인터페이스들을 사용했었습니다.foreach 문에서 사용을 하고 있었지요... foreach 문에서는 배열 타입의 각 항목을 반복할 수 있다는 사실을 알고 있었습니다.왜 배열 타입의 항목만을 반복할 수 있다 했을까요?사실, arr은 '약속'을 지키고 있었기 때문입니다. foreach 문은 일반 객체가 아닌 배열이나 리스트의 컬렉션에서만 사용이 가능합니다.따라서 일반 객체도 '약속'을 지킨다면 foreach문을 실행시킬 수 있습니다. 컴파일러는 IEnumerable을 구현했..

#044_닷넷(.NET)_.Net Framework 기본 - 인터페이스(일반적인 구현 & 명시적 구현)

안녕하세요 삽잡이입니다. 이번 시간에는 C#의 인터페이스 사용법 중,일반적인 구현과 명시적인 구현에 대해서 알아보려고합니다. 인터페이스를 구현하는데에는 두가지의 방법이 있습니다.'인터페이스를 구현하되 그 인터페이스를 자신의 메서드로 만드는 방법','인터페이스 명시적 구현' 이라고 해서 오직 인터페이스 메서드만 구현하능 방법이 있지요... 즉, 인터페이스를 구현하면서, 소유를 내것으로 하는 방법과오직 인터페이스를 구현하면서 내 인터페이스는 아니게하는 방법이 있다 이겁니다. 왜 이런 이야기를 했을까요... 예를 들어서 동일한 Draw() 메서드가 있다고 해보겠습니다.인터페이스를 세개 다 구현한다고 할경우각 인터페이스가 다른데 누구의 Draw()를 호출하는지 할 수 있을까요?따라서 이 때에는 '명시적인 구현'..

#043_닷넷(.NET)_.Net Framework 기본 - 인터페이스 (2)

안녕하세요 삽잡이입니다. 이번 시간에는 지난시간에 이어 인터페이스를 알아보려고합니다.지난 시간부터 이어서 쓰는 글인 만큼시간이 나신다면 이전 글도 참고해주시길 바랍니다. 시작하겠습니다. Interface는 암묵적으로 abstract, public 형식입니다.그 이유는 인터페이스는 '서로 소통하려고 만든 약속'이기 때문입니다.그래서 인터페이스는 하나의 타입이지만,클래스와 관련성이 없는 '독립적인 타입'이라는 것입니다. 예를 들어서 Eat이라는 인터페이스는Eat 인터페이스를 가지고 있는 객체들이라면, 모두 구현할 수 있습니다.그런데 사람만 밥먹습니까? 동물도 밥 먹습니다...그렇다면 이 동물객체들도 Eat이라는 기능을 가질 수 있는데Eat 인터페이스를 가지고 있게 되면 동물객체이지만 Eat 메서드를 구현할 ..

#042_닷넷(.NET)_.Net Framework 기본 - 인터페이스 (1)

안녕하세요 삽잡이입니다. 이번 시간에는 진짜로 인터페이스에 대해서 알아보도록하겠습니다... interface는 굉장히 중요합니다.모든 것들의 핵심은 interface라고 해도 과언이 아닐정도이지요... 객체가 상속, 다형성, 캡슐화를 통해 구현되는 이유를 아시겠습니까?바로, '왠만한 것은 다 감추기 위해서'입니다.최선의 것만 알고, 나머지는 내부에서 알아서 할것이니 구체적인 것은 알 필요 없고 사용하고자 하는 클라이언트가 요구하는 메시지만 던질 수 있도록하자는 것이지요...이것이 핵심입니다.그런데 이 모든 내용들은 모두 interface를 내포하고 있습니다. 어마어마하군요... 객체지향에서 객체는 메시지를 통해 서로 간에 주고 받는 일을 합니다.이 의미는 수 많은 객체들이 서로 객체들과 메시지를 통해 대..

#041_닷넷(.NET)_.Net Framework 기본 - 인터페이스 Intro

안녕하세요 삽잡이입니다. 이번 시간에는 인터페이스에 대해서 알아보려고 합니다.이~전 시간에 인터페이스에 대해서 알아본 감이 있지만,다시 한번 정리하는 겸 보다 꼼꼼하게(?) 알아보도록 하지요... /*글을 쓰다보니... interface는 못나갔습니다... 혹여나 이 글이 관심 없으신 분들은...다음 글에서 interface를 다루겠으니... 그 글을 참고하시길 바랍니다...*/ 객체지향의 중심축을 생각해봅시다.하나의 단위를 만들어내는 묶음의 기능과 보호의 기능(은닉)을 담당하는'캡슐화'는 알고자하는 것은 알고 감추고자하는 것은 감추기 위한 객체지향의 핵심입니다. 캡슐화는 클라이언트에게 '최소한의 것'만을 알려줄 수 있도록 합니다.많이 알면 알수록 신경써야할 일들이 많고, 복잡해지는 일도 비일비재하니 이..