일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 공공 데이터 포털
- sqlite3
- 객체지향
- NUnit
- TDD
- 디자인 패턴
- 시
- solid
- DrawRectangle
- Json.NET
- eventhandler
- DrawEllipse
- WPF
- 경기도 버스정보시스템
- eventargs
- delegate
- Winform
- C# MDB Handle
- MVC
- C# 파일 암/복호화
- GDI+
- C# MDB
- 경기도 버스
- c#
- Cell Border Style
- MDB Select
- Excel Cell Format
- 버스 API
- MDB Connect
- JSON
- Today
- Total
목록분류 전체보기 (169)
White Whale Studio
SOLID 원칙 중 2번째인 개방 폐쇄 원칙입니다. OCP : Open Closed Principle 이 원칙은 다음과 같습니다. - 기능을 변경하거나 확장은 할 수 있으면서 - 그 기능을 사용하는 코드는 수정하지 않는다. 첨엔 이게 뭔 소린가 싶습니다. 풀이를 해보면 Entity(클래스, 메서드, 모듈 등)는 Interface와 같은 추상화 클래스에 대해 개방 되어 있어야 하지만변경에는 폐쇄되어 있어야 한다는 말입니다. 즉, Interface를 통해 기능을 변경하거나 확장을 하는 것은 가능하나, 외부에서 참조하는 코드는 수정하지 않는다는 것입니다. 아래의 그림에서 보시면 Interface를참조하는 Plus, Minus의 메서드가 있는데, 이러한 메서드에 추가적으로 곱하기나 나누기가 기능이 추가가 되야 ..
SOLID 설계 원칙은 객체 지향 프로그래밍을 할 때 중요한 원칙들입니다. 단일 책임 원칙 : Single Responsibility Principle - SRP 개방 폐쇄 원칙 : Open-Closed Principle - OCP 리스코프 치환 원칙 : Liskov Substitution Principle - LSP 인터페이스 분리 원칙 : Interface Segregation Principle - ISP 의존역전 원칙 : Dependency Inversion Principle - DIP 위에서 보시는 바와 같이 총 5개의 원칙들의 앞 자만을 따서 SOLID라고 합니다.각 원칙들에 대해서 찬찬히 살펴보겠습니다. 우선 해당 포스팅에서는 단일 책인 원칙에 대해서 살펴보겠습니다.단일 책임원칙은 다음과 같습..
이전에 포스팅한 Delegate에 이어 Event에 대해서 살펴보겠습니다. Event와 함께 밀접한 관계에 있는 EventHandler 또한 함께 다루어보겠습니다. 문법적인 Event의 사용법에 들어가기에 앞서 이벤트를 살펴보면이벤트는 동작의 발생을 알리기위해 개체에서 보내는 메시지입니다. 예를 들면, 마우스 클릭, 키보드 입력등의 사용자 입력으로 인해발생하여 다른 프로그램논리에 의해 트리거 될수 있는 거죠. 이벤트를 발생시키는 개체는 이벤트 전송자, 이벤트를 캡쳐하고 응답하는 개체를 이벤트 수신자라고 합니다. 이벤트 통신에서 이벤트 전송자 클래스와 수신자 사이에 어떤 대상이 되는지를 서로 확인하기 위해 C의 포인터 같은 매커니즘이 필요한데이것이 바로 delegate 입니다. delegate에서 설정하는..
Delegate는 대리, 위임이라는 뜻을 가집니다. 언뜻 뜻과는 잘 부합시키기가 어렵네요. Delegate와 관련하여 제가 정리한 항목들을 우선 나열해보겠습니다. 1. Delegate는 메서드를 매개인자(Parameter)로 전달할 수 있다. 2. Delegate 자체를 매개인자로 전달할 수 있다. 3. 복수의 메서드를 등록하여 사용가능하다. (등록은 +=, 해제는 -=) 4. Event는 특수한 형태의 delegate 이다. 4.1 Delegate와 Event의 차이점은 delegate는 클래스 외부에서 호출가능하나 event는 불가 4.2 Event는 메서드 할당 연산자(=) 사용불가 오직 등록은 +=, 해제는 -= 로만 가능 Delegate의 정의에서 중요한 것은 Parameter와 Return T..
Delegate에 대한 내용을 찾다가 Event를 찾게되고;;; 좀더 상세하게 파보다보니 여기까지왔네요.관련된 내용부터 해서 최종적으로는 Delegate와 Event를 알아보겠습니다. EventArgs (Event Arguments) : 이벤트에 사용되는 데이터를 저장하기 위해 참조하는 기본 클래스입니다.MSDN의 설명을 보면이 클래스에는 이벤트 데이터가 없으므로 이벤트가 발생할 때 이벤트 처리기에 대한 상태 정보를 전달하지 않는 이벤트에서 사용됩니다. 이벤트 처리기에 상태 정보가 필요한 경우, 응용 프로그램에서는 이 클래스에서 클래스를 파생시켜 해당 데이터를 보관해야 합니다. This class contains no event data; it is used by events that do not pas..
StyleCop은 Visual Studio 에서 코딩시에 코딩 가이드 라인을 잡아주는 코드 분석기 입니다. DOWNLOAD는 아래의 경로에서 http://stylecop.codeplex.com/ 다운로드 받으시고 그냥 설치하시면 됩니다. 물론 Visual Studio도 설치되어 있어야겠죠? 사용법을 살펴보겠습니다. 우선 코딩을 한 후 코드 작성창이나 솔루션 탐색기의 프로젝트에서 우측 클릭을 하게되면 Run styleCop 이라는 없던 버튼이 생깁니다. 요놈을 눌러줍니다. 눌러주면 화면 하단의 오류 목록창에 쫘악 뜨게 됩니다. 출력 창에서도 가이드를 위반한 갯수가 뜨게 됩니다. 막상 보게 되면 이 룰 위반사항들이 고개가 끄덕여질만큼 타당한것도 있는가하면 이건 너무 한거 아닌가 싶은것들도 있습니다.상황에 따..
이전에 포스팅 했었던 MVC Pattern을 활용하여 Winform으로 구현한 예제가 있어 살펴보도록 하겠습니다. 원본 소스는 아래의 링크를 참조하시기 바랍니다. http://www.codeproject.com/Articles/613682/Your-first-program-using-MVC-pattern-with-Csharp-W 혹시나 링크가 잘리는 경우를 대비하여 아래의 원본 소스파일을 첨부했습니다. 실행 화면은 아래와 같습니다.프로그램의 기능은 단순합니다. 버튼을 클릭하면 텍스트박스에 숫자를 1 증가시켜줍니다.사용자가 직접 텍스트박스에 숫자를 입력하는 경우에는 입력한 숫자를 기준으로 1을 증가시킵니다. Controller - View - Model 순서로 알아보고 관련된 소스 및 Form의 소스를 보..
MVC 패턴은 소프트웨어 공학에서 사용되는 아키텍쳐 페턴입니다. Model - View - Controller의 약자이며잘 사용하는 경우 사용자 인터페이스와 로직을 분리해서 유지보수가 쉽도록 구현할 수 있다고 합니다. WPF의 경우 MVVM (Model - View - ViewModel) 의 패턴을 가지는데 저는 뭣도 모르고 그냥 개발했었네요;; MVC 패턴을 활용하여 Winform의 예제까지 살펴볼 예정입니다. 우선 개념적으로 MVC 패턴에서 각 요소들을 알아보겠습니다. Model : 뷰와 컨트롤러 사이에서 전달되는 데이터만을 나타나는 단순한 뷰 모델(View Model)일 수도 있고, 데이터 및 데이터에 대한 작업, 규칙을 가지고 있는 도메인 모델(Domain Model)일 수도 있습니다. 데이터 변..
Facade Pattern 파사드, 퍼사드, 파사아드 등등 Facade 는 정면, 앞면, 표면을 뜻합니다. 은닉성을 표현한 패턴이라고도 하더군요. 개념상으로 은닉성과 의미를 같이하며 하위 메서드들을 숨기고 표면에 나서서 다른 요청 메서드들에게 기능을 제공한다고 보시면 되겠습니다. 위에서 보시는 클래스 다이어그램을 예시로 살펴보겠습니다. 주제는 다른 블로그에서 Facade 패턴을 설명하면서 예시를 든 내용인데 제가 이해하는 과정에서 설명을 더했습니다.SmartManager는 그림상으로는 일반 클래스입니다만, 다이어그램을 그리기 위해서 표현한 것이고 실제로는 추상화합니다. (인터페이스) 우선 기본 데이터인 PictureItem이 있고해당 객체에 직접 접근하는 PictureManager와 Compensator..
이 패턴은 처음에는 이해하기가 난해했던 패턴입니다. 객체에 추가적인 요건을 동적으로 첨가합니다.데코레이터는 서브 클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공합니다.라고 하는데 이름에서 어느정도 유추를 할 수 있는것처럼 Decorate : 꾸미다. 장식하다. 라는 의미를 가집니다. 즉, 특정 객체가 있으면 데코레이터를 통해 기능을 추가하는(장식하는) 것이 가능합니다.위임/상속으로 구현되어 감싸는 데코레이터의 개수에는 제한이 없습니다. 간단한 예를 들어볼까요.크리스마스가 되면 집집마다 분위기를 내기 위해 크리스마스 트리를 장식합니다.이 크리스마스 트리를 장식하는 것을 빗대어 보면 객체는 크리스마스 트리, 데코레이터는 트리에 장식을 달기 위한 규칙(추상 클래스), 트리에 달기 위한..