본문 바로가기

c#

[C# 강좌] 라면 만들기 강좌 전편 - 데브피아 C# 마을 유경문 (lazykoder) 혹시 일본식 라면집에 가보셨나요? 저는 여자친구와 갔다가 곰탕같은 라면을 시켜먹었는데(으웩...) 그게 8년전 애기입니다. 개인적으로 라면은 우리나라, 삼양라면을 좋아합니다. 가끔 너구리도 먹어주시면 흐뭇해지고요. 그리고 일요일엔 짜파게티죠~ 오늘 이 자리를 빌어 저와같이 라면을 좋아하시는(돈이 없어 라면을 드시던간에-_-) 우리나라 프로그래머님들을 위해 저만의 비법을 알려드리겠습니다. 물론 어떤 댓가를 바라진 않습니다. 다만 응용한 결과를 저에게도 알려주시면 고마울뿐이죠. 아래는 제가 만든 첫번째 라면입니다. 소스를 보니 텅~ 빈 생성자 하나에 설명이라는 속성 그리고 가격이라는 메소드가 있군요. 설명이 무안 할 정도로 단순하지만.. 얼마나 복잡하게 될 수 있는지 보기로 하죠. 이제 이런 형태로 된장라면.. 더보기
[C# 기사풀이] 라면 만들기 강좌 후편 - 데브피아 C#마을 유경문 (lazykoder)씨의 글 웹써핑중에 라면 만들기 강좌를 활용한 좋은 예가 있어 소개해드릴까 합니다. 원래 라면 만들기 강좌 다음 버전은 어렵지 않으면서도 활용하기 좋은 다른 패턴을 쉽게 풀어보려고 했는데 한 놈만 제대로 이해한다면 다른 패턴들을 공부할때 쉽게 수긍 할 수 있는 부분이 많다고 봤습니다. 어째든.. 그냥 긁어다 붙이면 너무 성의가 없으니 기사를 적절히 끊어서 설명하겠습니다. Continuing with this idea of showing alternatives using the same example, I thought it might be interesting to show the Decorator Pattern which can be used when the Policy Injection Application .. 더보기
박준호님의 C# 강좌 - Assembly 2 (다중 파일 Assembly) 다중 파일 어셈블리 myAseembly.dll에 포함된 세 개 파일 모두 하나의 어셈블리에 속함 하지만 파일 시스템에서는 이들 파일을 세 개의 개별 파일로 인식 Util.netmodule 파일은 아무러 어셈블리 정보를 포함하지 않기 때문에 모듈로 커파일 어셈블리가 만들어질 때 MyAssembly.dll과 Util.dll및 Graphic.bmp와의 관계를 나타내도록 어셈블리 매니페스트가 MyAssembly.dll에 추가된다. 코드 디자인시 단일 파일 어셈블리로 구성할 지, 다중 파일 어셈블리로 구성할 지, 다중 파일 어셈블리로 구성한다면 어떻게 구조화할 것인지를 결정해야함. namespace와 assembly namespace : data type들을 그룹화하는 논리적 개념 하나의 네임스페이스는 여러 개의.. 더보기
박준호님의 C# 강좌 - Assembly1 (단일 파일 Assembly) COM에 대하여 이미 사용중인 검증된 코드의 재사용을 위해 COM 활용 서로 다른 언어로 작성된 바이너리의 타입을 공유하기 위한 방법으로 COM 서버 생성 버전관리의 문제 Client에서 COM 서버를 호출할 때 COM 서버의 버전을 확인할 방법이 제공되지 않는다. 때문에 새로운 버전의 COM 서버를 설치하면 타입라이브러리를 새로 수정하고, 레지스트리를 업데이트하며, 상황에 따라 Client의 코드를 수정하는 상황도 발생(DLL 지옥) 배포의 문제 COM 서버의 정보를 레지스트리에 등록하는 과정은 어렵지 않다. 하지만 COM 서버의 위치나 이름이 바뀌게 되면, 레지스트리 변경이 쉽지 않게 된다. 이 경우 이 COM 서버를 접근하는 Client의 구성정보를 모두 변경해야 한다. 어셈블리(Assembly) .. 더보기
박준호님의 C# 강좌 - Preprocessor Directive(전처리기 지시문) 전처리기 지시문(Preprocess Directive) Compile 시에만 처리되는 명령문 특정 조건에서만 Compile 되도록 처리하기 위한 여러 버전의 Apllication 생성을 위해 standard Edition Enterprise Edition 디버깅 정보를 제공하기 위해 Debug를 위한 버전(debugging을 위한 기능 추가) Release를 위한 버전(Debugging을 위한 기능 제거) #으로 시작되는 지시문을 제공 #define, #undef Compiler에게 해당 기호의 정의 및 제거를 알림 #define DEBUG // DEBUG 기호의 정의 #define ENTERPRISE // ENTERPRISE 기호의 정의 #define STANDARD // STANDARD 기호의 정의 .. 더보기
박준호님의 C# 강좌 - C# 객체 소멸과 Garbage Collection 객체의 생성과 소멸 객체의 생성 new 연산자를 사용하여 class의 instance인 객체(object)를 생성 이 때 객체가 생성되는 곳이 Managed Heap 객체의 소멸 C++ 같은 경우 소멸자(destructor)를 정의하여 메모리 관리(리소스 해제)가 가능 C# 에서는 Garbage Collector가 메모리를 관리 소멸자가 존재하지만 언제 호출되는지 예측할 수 없다. 때문에 소멸자는 사용하지 않을 것을 권장 불가피하게 객체의 소멸 작업을 해주어야 하는 경우 DB, 파일 및 네트워크 연결과 같은 것은 Unmanaged Resource 리소스 해제 시 IDisposable interface의 Dispose() 사용 Garbage Collector garbage new 연산자를 통해 객체를 생성.. 더보기
박준호님의 C# 강좌 - Exception(예외 처리) Exception(예외 처리) Exception : Application이 실행중일 때 발생하는 오류를 처리하는 것 .NET에서 제공하는 구조화된 예외처리 방법 .NET에서 exception은 하나의 object exception은 어떤 비정상적인 error 상황이 발생되었을 때, 그 문제에 대한 정보를 제공하는 객체 system이나 사용자가 정의한 모든 exception은 System.Exception에서 파생된 것 System.Exception class member property HelpLink 현재 예외와 관련된 도움말 파일에 대한 링크를 설정하거나 리턴 Message 현재 발생한 Exception을 설명하는 text를 리턴 Source Exception을 발생시킨 application이나 객체.. 더보기
박준호님의 C# 강좌 - 이벤트(Event) Event 어떤 사건이 발생했을 때 Application에 통보하는 방법 이벤트 발생기(publisher) : 이벤트 발생시 다른 객체에 이벤트 발생을 통보하는 일을 담당하는 객체 이벤트 처리기(Subscriber) : 이벤트 발생시 실제 호출될 method(이벤트 핸들러)가 등록된 객체 Event 선언 Event와 함께 사용될 delegate의 정의 확인 delegate는 호출할 method의 형식만 정의한 것이기 때문에 해당 method의 형식이 이미 지정된 delegate가 있다면 그대로 사용이 가능하다 public delegate void AnyEventHandler(object sender, EventArgs e); event 키워드를 사용하여 class에 event member 정의 publi.. 더보기