일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NUnit
- WPF
- 디자인 패턴
- 시
- C# MDB Handle
- 공공 데이터 포털
- 경기도 버스정보시스템
- sqlite3
- Json.NET
- C# 파일 암/복호화
- delegate
- Winform
- DrawRectangle
- 경기도 버스
- solid
- MDB Connect
- MVC
- 객체지향
- MDB Select
- 버스 API
- c#
- Excel Cell Format
- JSON
- Cell Border Style
- eventargs
- GDI+
- eventhandler
- TDD
- DrawEllipse
- C# MDB
- Today
- Total
목록객체지향 (5)
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라고 합니다.각 원칙들에 대해서 찬찬히 살펴보겠습니다. 우선 해당 포스팅에서는 단일 책인 원칙에 대해서 살펴보겠습니다.단일 책임원칙은 다음과 같습..
이 패턴은 처음에는 이해하기가 난해했던 패턴입니다. 객체에 추가적인 요건을 동적으로 첨가합니다.데코레이터는 서브 클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공합니다.라고 하는데 이름에서 어느정도 유추를 할 수 있는것처럼 Decorate : 꾸미다. 장식하다. 라는 의미를 가집니다. 즉, 특정 객체가 있으면 데코레이터를 통해 기능을 추가하는(장식하는) 것이 가능합니다.위임/상속으로 구현되어 감싸는 데코레이터의 개수에는 제한이 없습니다. 간단한 예를 들어볼까요.크리스마스가 되면 집집마다 분위기를 내기 위해 크리스마스 트리를 장식합니다.이 크리스마스 트리를 장식하는 것을 빗대어 보면 객체는 크리스마스 트리, 데코레이터는 트리에 장식을 달기 위한 규칙(추상 클래스), 트리에 달기 위한..
객체지향 개발을 위해서는 캡슐화를 잘 하라고 합니다. 캡슐화는 내부적으로 기능 구현을 어떻게 한건지 숨기는 것을 말합니다.메서드 내부에 기능구현이 변경되더라도 해당 메서드를 호출하는 코드에서는 영향을 받지 않도록 또는 최소화하기 위함입니다. 절차지향적 구현방법과 객체지향적 방법으로 살펴보겠습니다. 123456789101112 // 절차지향 // item.getExpiryDate() => 만료 일자 데이터를 가져옴 if (item.getExpiryDate() != null && item.getExpiryDate().getDate()
인터페이스(Interface)에 대한 탐구를 진행합니다. 인터페이스는 많이 들어보기는 했습니다만, 실제적으로 사용하기에는 개념자체가 접근하기가 어렵고 작은 프로젝트로 구현되는 프로그램에서 굳이 사용하지 않아도 되었기에 주먹구구식으로 진행되는 개발시에는 굳이 사용하지 않았습니다. 그러나 객체지향프로그래밍(OOP)을 위해서 이것저것 학습을 하던 차에 인터페이스에 대한내용을 재확인하고 그 유용성에 대해 깨닫게 되었습니다.우선 인터페이스의 장점은 여러가지가 있다고 하는데부끄럽게도 제가 알고 있는 장점은 겨우 2가지 정도입니다.1. 개발자들간의 개발 규약2. 인터페이스를 상속받는 클래스는 형식이 무엇이 되든간에 인터페이스 형식으로 타입 캐스팅이 되어서 클래스 사용하기가 엄청 쉽다. 우선 인터페이스의 특징을 살펴보..