커스텀 커스텀 조건 만들기. (사용자에게 입력 받아서 처리하기)
페이지 정보
본문
안녕하세요. 소심비형입니다. 지금까지 간단하게 커스텀 액션에 대해 알아봤습니다. 아주 기초적인 마우스 클릭과 키보드 조합이었는데요. 한 번씩 따라 해 보면서 생각보다 어렵지 않구나라고 느꼈을 겁니다. 그만큼 Visual Studio와 C#이 쉽고 빠르게 배울 수 있는 환경을 만들어주기 때문입니다. 아래 그림은 2019년 프로그래밍 언어 점유율인데요. 역시 자바가 압도적인걸 알 수 있군요~
아마도~ 국내만 집계한다면 C#은 10위권 밖일지도 모릅니다. C#으로 솔루션을 만들거나 서비스하는 회사가 그리 많지는 않거든요. 근데~ 그만큼 개발자도 적다 보니 취업이나 이직이 어렵진 않은듯합니다. 보통 개발자들이 C#, Java, Web 3가지는 기본으로 하기 때문에 크게 문제가 되진 않아요. 요즘은 angular, node, react + type script로 많이 하는 거 같네요. 사실 웹을 10년 넘게 안 하다가 요즘 다시 보고 있는데요. 트렌드가 정말 많이 바뀌었네요.
헛소리가 좀 길어졌는데요. 어쨌든~ 오늘 알아볼 조건 액션을 배우기 위해 이전에 만든 CustomAction 프로젝트를 실행하고, 새로운 클래스를 추가하세요. 아래 전체 코드를 붙여 넣기 하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CustomAction { [Serializable] public class ConditionClickModel : NGM.Models.Interface.BaseCustomConditionToolModel { public override string DisplayCategory { get { return "Condition Exemple"; } } public override string DisplayName { get { return "조건 클릭"; } } public override bool? Execute() { return true; } } } | cs |
크게 어려운 부분은 없지만, 조건의 경우 상속받는 베이스 클래스(NGM의 기본 클래스로 추상 클래스를 말함)가 다릅니다. 10 라인을 보면 이전과는 다른 클래스를 상속받고 있다는 걸 알 수 있습니다. 그렇죠? 인터페이스의 Custom Condition Tool Model입니다. 아래 그림처럼 베이스 클래스를 선택하고 F12를 눌러보세요.
소스 코드는 볼 수 없지만, 클래스의 원형을 확인할 수는 있습니다. 아래 그림처럼요. 베이스 클래스의 접근 제한자 옆에 abstract(추상, 앱스트랙트)가 있습니다. 이 키워드를 사용하면 추상 클래스가 됩니다.
추상 클래스란?
흠~ 좀 어려운 용어가 나왔는데요. 바로 추상 클래스죠. 개발자가 아니라면 대부분은 "이게 뭐지?"라고 말할 겁니다. 개발자는 대부분 무언가를 만들기 전에 내가 무엇을 개발해야 하는지 파악해야 합니다. 여기서~ 문제는 대부분의 고객이, 자신이 원하는 게 뭔지 정확하게 모른다는 것입니다. 그래서 서로 대화를 통해 조금씩 구체화시켜 나가는 작업이 필요하게 됩니다. 솔루션 업체라면 설명서와 스펙, 인터페이스 정의서가 준비되어 있고 추가로 필요한 것만 더 개발해주는 방식으로 진행하죠.
잠깐 이야기가 다른 데로 샛는데요. 만약, 자동차를 만들고 싶어 한다고 하면 그게 승용차인지 트럭인지 알아야 합니다. 물론, 벤이나 스포츠카가 될 수도 있죠. 아무튼 개발자는 고객이 원하는 아주 멋진 벤츠 e-class를 만들어줬습니다. 하지만, 고객이 보기에 너무 복잡하고 퍼포먼스가 떨어지는 것처럼 느껴졌습니다. 그래서 벤츠 cls처럼 만들어 달라고 요구를 하게 됩니다. 그렇다면 개발자는 처음부터 다시 만들어야 할까요? 물론 그렇지는 않습니다. 벤츠 e-class, cls를 비롯한 자동차라는 범주는 추상화할 수 있는 요소들이 많습니다. 바퀴 4개, 브레이크 패드, 엔진, 핸들, 사이드 미러, 룸미러 등등 말이죠. 이렇게 추상화 작업을 하고 고유한 특성이나 속성만 개발하는 것입니다. 어차피 핸들을 돌리면 바퀴가 좌우로 움직이는 건 불변이니까요. 하지만, 퍼포먼스는 엔진의 사양에 따라 달라져야 하는 부분이 있습니다. 그래서 엔진만 교체하면 되는 거죠. 복잡해지니 이쯤에서 정리하면~ 개발자들은 추상화(더불어 다형성) 작업을 통해 단순 모형(모델)을 만들고, 상속 받음으로써 변경은 막고 확장은 열어줍니다. 이런 일련의 작업을 추상화 작업이라고 말하고, 이 작업의 결과물이 추상 클래스입니다.
추상화와 다형성을 잘 이해하면 변경이 발생했을 때 코드를 수정하는 비용을 최소화하고 추가 요구 사항에 대해 확장이 극대화되므로 시간과 비용 둘 다 드라마틱하게 감소하게 됩니다. 물론, 엔터프라이즈급 솔루션인 경우에 그렇다는 겁니다. 추상화라는 화두는 OOP의 5대 원칙(SOLID) 중에서도 중요한 부분이라서 이야기가 좀 길어졌는데요. 이쯤에서 마무리하고, CustomAction 프로젝트의 ①어셈블리와 파일 버전(1.0.0.7)을 올리고 빌드합니다.
NGM을 실행한 후 메뉴의 ①관리자를 클릭하고 ②도구 모듈 설치를 클릭하세요.
아래 그림처럼 ①CustomAction.dll을 선택한 후 ②열기 하세요.
조건은 같음, 다름 또는 True, False를 판단하기 위해 여러 가지 설정해야 할 것들이 좀 많습니다. 그래서 스샷을 뜨면서 설명을 적기에는 너무 막일이 심해서... 유튜브로 찍어봤습니다. 아래 내용을 참고하시면 도움이 될 거 같네요~~~
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해 줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글[1부] 커스텀 조건 액션 만들기. (나만의 이미지 체크 액션) 20.01.30
- 다음글[2부] Ctrl+C, V 키보드 액션 만들기. (복사, 붙여넣기 한방에 처리하기) 20.01.30