총 삽질들 514

#032_닷넷(.NET)_.Net Framework 기본 - Boxing & Unboxing

안녕하세요 삽잡이입니다. 이번 시간에는 boxing, unboxing에 대해서 알아보겠습니다. int, double 과 같은 내장 타입 역시 object를 부모로 가지고 있는 자식들입니다.따라서 이와 같은 구조는 성립될 수 있습니다. 모든 형식은 object 이기 때문에 가능합니다.물론, interface를 제외하고 말입니다.하지만, 여기에는 아직 설명하지 않은 부분이 있습니다...잠시후에 설명하도록 하지요... 그런데, 이처럼 값 복사가 아닌 참조 복사일 때는요?똑같습니다. 형식은 성질을 뜻하는 것일 뿐입니다.따라서 object로 참조를 하면 object만큼의 기능을 수행할 수 있는 것이고,Rect를 참조하면 Rect만큼의 기능을 참조할 수 있는 것입니다. 반대로 object에서 변환한 값을 Rect로..

#031_닷넷(.NET)_.Net Framework 기본 - Up Cast & Down Cast

안녕하세요 삽잡이입니다. 이번 시간에는 형식 변환인 cast에 대해서 알아보고자 합니다. 자식에서 부모로의 Up Casting은 자동으로 수행됩니다.하지만, 부모에서 자식으로 Down Casting은 명시를 해줘야합니다. 이렇게 형식 변환이 되는 이유는 바로 '다형성' 때문입니다.이 다형성은 '실 객체의 것이 호출되는 메커니즘'입니다. 구조를 한번 살펴볼까요? Shape형 클래스를 Rect가 상속 받는 코드입니다.따라서 Shape의 Draw() 메서드가 오버라이드 되서Draw() 메서드의 것을 호출할 수 있지요... Shape의 부모는 Object Class 아니겠습니까...따라서 object에 자식인 Shape 형태의 객체를 담을 수도 있습니다. 오버라이드를 하지 않으면 부모의 것을 출력하지만오버라이드..

#030_닷넷(.NET)_.Net Framework 기본 - 생성자 주의 사항

안녕하세요 삽잡이입니다. 이번 시간에는 생성자를 구현할 때에 주의해야할 점에 대해서 알아보고자합니다. 생성자는 클래스를 인스턴스화 할 때 한번 호출되는 메서드입니다.그리고 클래스는 필요한 곳이면 어디든지 가져다 쓰기 위해서 만든 정의 묶음이지요...즉, 객체지향 측면에서 바라볼 때이미 만들어놓은 클래스를 다른 곳에서 가져다 쓸 일이 비일비재하다는 것입니다. 따라서 가져다 쓸 사용자의 입장을 바라볼 때누구나 범용적으로 사용할 수 있도록 명확한 클래스를 정의해야합니다. 또한, 생성자에서는 분명 명확한 코드만을 포함시켜야합니다.생성자가 호출된다는 것은 물리적으로 메모리에 객체를 생성하고 생성자를 호출해서 그 메모리의 값들을 초기화하는 것입니다. 생성자를 이야기할 때에는 생성자를 호출해야 객체가 만들어지는 것이..

#029_닷넷(.NET)_.Net Framework 기본 - class & struct 응용

안녕하세요 삽잡이입니다. 이번 시간에는 Class와 Struct를 응용해서 더욱 깊이(?) 알아보려합니다. List는 그저 클래스 형식입니다.t는 타입 이름을 말하는 것이구요...t[]와 다를 바가 없습니다. 아무튼... 예를 들어 이와 같은 코드라면 int형 n에 들어있는 '100'이라는 값을 100번 저장하는 꼴입니다. 그런데, 만약 값, 참조를 List에 저장하게 되면 어떨까요??Point형식의 x, y 필드를 담는 구조체, 변수에 대해서 생각해보겠습니다. 구조체라면, 값을 저장하게됩니다.따라서 pt 값을 100번 저장하게 된다면, 이처럼 stack 영역에 100개의 객체가 생성되게 됩니다... 하지만, 클래스는 참조 값을 통해 객체를 가리키게 됩니다.따라서 100개의 pt 요소들이 new Poin..

#028_닷넷(.NET)_.Net Framework 기본 - 클래스와 구조체의 용도

안녕하세요 삽잡이입니다. 이번 시간에는 클래스와 구조체에 대해서 알아보겠습니다. 클래스는 자동 속성이 되지만 구조체는 자동 속성을 만들 수 없습니다... 뭐... 원래 이렇게 약속을 해뒀기 때문입니다... struct의 의미는 '값 형식'이라는 의미를 가지고 있습니다.class는 '참조 형식'이라는 의미를 가지고 있지요... 값 이라 하면 '어떤 데이터를 표현하기 위해 만들어 놓은 형식'을 말하는 것입니다.어떤 데이터를 표현하기 위해서... 즉, 값의 표현을 목적으로 하는 것이 구조체라는 것입니다.데이터 중심적이지요... 따라서 struct는 데이터 표현을 위해 사용합니다. 그런데 class는 참조 형식이지요.... 서비스 즉, 클라이언트가 서버에게 어떤 기능을 요청했을 때서비스를 수행, 제공하기 위한 ..

#027_닷넷(.NET)_.Net Framework 기본 - Getter/Setter (속성) & 생성자

안녕하세요 삽잡이입니다. 이번 시간에는 이전 시간에도 두어번 언급한 Setter/Getter에 대해서그리고 생성자에 대해서 알아보겠습니다. 모든 필드는 private 형식으로 만들어져있습니다.즉, 외붸서 마음대로 접근하지 못하게 하려는 의도입니다.많이 알면 많이 알 수록 서로 힘들지요...그래서 조금만 알자고 '캡슐화'전략을 쓰는 것입니다. 그런데 필드 값을 업데이트, 참조를 하기 위해서는 C#에서는 property 즉, 필드를 읽을 Getter/Setter를 사용합니다. Getter와 Setter는 인터페이스입니다.객체는 클래스가 됬건 객체가 됬건 두 가지 내용물로 이루어져있지요...늘 반복해서 말씀하지만 '속성'과 '메서드'입니다. 속성은 상태, 메서드는 기능을 나타내지요...속성과 메서드는 객체의 ..

#026_닷넷(.NET)_.Net Framework 기본 - 접근 한정자

안녕하세요 삽잡이입니다. 이번 시간에는 C#에서 제공하는 '접근 한정자'에 대해서 알아보려고합니다. C#의 접근 한정자는 5가지입니다. 새로운 이 'internal', 'protected internal' 접근 한정자는 '어셈블리' 개념을 포함하고 있습니다. 어셈블리는 지금 상태에서는 쉽게 '.exe', '.dll' 을 의미한다고 보시면 됩니다.이 어셈블리는 논리적인 개념입니다.왜냐하면, '모듈'이라는 여러 파일들이 모여 하나의 어셈블리로 모일 수 있기 때문입니다.그리고 이를 다중 어셈블리라고 부르고요... 아무튼... .exe 파일 하나를 어셈블리라고 불러보도록 하겠습니다.internal은 이 '어셈블리 내'에서 라는 의미를 가지고 있습니다.protected는 '상속 구조 내'에서라는 의미를 가지고 있..

[삽잡이] 객체지향 - 상속

안녕하세요 삽잡이입니다. 이번 시간에는 상속과 다형성에 대해서 알아보겠습니다. 상속에서는 '코드 재사용'이 가장 기본적인 개념입니다. Object형 하나가 있다고 해봅시다.이 Object를 상속받아서 Car 클래스가 만들어진다고 해보겠습니다.그렇다면 Object에서 만들어졌던 기능을 Car에서 구현할 필요가 없지 않습니까...따라서, Car가 Object 코드를 '재사용'했다고 볼 수 있습니다. 또한 Object를 상속받아서 만들어진 Radio가 있다고 해보겠습니다.이 녀석도 상속을 받고 기능을 재사용할 수 있습니다. 그런데 Car의 클래스에서 Radio 클래스를 사용한다면 어떨까요?Car는 Radio의 기능을 구현하지 않고 기능을 가져다 쓴 것입니다. 이 또한 재사용입니다.하지만, 포함관계이지요... ..

#025_닷넷(.NET)_.Net Framework 기본 - 여러가지 문법 (2)

안녕하세요 삽잡이입니다. 이번시간에도 저번시간과 같이 C#에서 제공하는 여러 문법들을 알아보려고합니다. 객체지향 언어의 요소는 크게 ''속성'과 '기능' 이 두가지로 나눌 수 있습니다. C#에서는 필드, 이벤트, 속성이라는 용어를 '속성' 이라고 부릅니다.멤버 메서드, 연산자 중복등을 '기능'이라고 부르지요...즉, 원래 객체지향이란 두개로 나눌 수 있는데 이를 더 세분화를 하는 것입니다. 속성은 원래 기능이지만, 속성처럼 사용합니다.그리고 이벤트도 내부적으로 만들어진 정의 형식인데, 속성처럼 사용합니다... -this 키워드 this 키워드는 두가지 용도로 사용됩니다. 우선 첫번째 용도는 '자기 자신 참조'입니다. 이처럼 필드와 매개변수의 이름이 같다면 어떻게 될까요?이렇게 데이터 필드와 매개변수가 동..

#024_닷넷(.NET)_.Net Framework 기본 - C# 여러가지 문법 (1)

안녕하세요 삽잡이입니다. 이번시간에는 C#에서 제공하는 여러 문법들을 알아보고자합니다. - finalize()finalize()는 C#에서 '소멸자'를 의미합니다.닷넷에서는 이미 객체를 마무리하기 위해 만들어 놓은 메서드가 있는데이 메서드가 바로 'finalize()'라는 것입니다.왜 소멸자를 안만들었을까요?소멸자를 가지지 않은 언어들이 있을 수 있으니 안만든 것입니다.소멸자가 없는 언어들은 닷넷에서는 finalize() 메서드를 direct로 집어넣습니다. -nullabenullable 타입은 'NULL'이 가능한 타입을 말합니다.즉, nullable 타입은 값 타입.. 그 중에서도 내장 타입에 존재합니다.int?, double? 과 같이 물음표(?)를 붙여서 사용합니다. NULL을 가질 수 있는 타입..