NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 5
  • 매뉴얼

    NGM 5의 매뉴얼입니다.

    NGM 5

    NGM 5의 매뉴얼입니다.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    커스텀 커스텀 조건 만들기. (사용자에게 입력 받아서 처리하기)

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 지금까지 간단하게 커스텀 액션에 대해 알아봤습니다. 아주 기초적인 마우스 클릭과 키보드 조합이었는데요. 한 번씩 따라 해 보면서 생각보다 어렵지 않구나라고 느꼈을 겁니다. 그만큼 Visual Studio와 C#이 쉽고 빠르게 배울 수 있는 환경을 만들어주기 때문입니다. 아래 그림은 2019년 프로그래밍 언어 점유율인데요. 역시 자바가 압도적인걸 알 수 있군요~

    img.png



     

     

    아마도~ 국내만 집계한다면 C#은 10위권 밖일지도 모릅니다. C#으로 솔루션을 만들거나 서비스하는 회사가 그리 많지는 않거든요. 근데~ 그만큼 개발자도 적다 보니 취업이나 이직이 어렵진 않은듯합니다. 보통 개발자들이 C#, Java, Web 3가지는 기본으로 하기 때문에 크게 문제가 되진 않아요. 요즘은 angular, node, react + type script로 많이 하는 거 같네요. 사실 웹을 10년 넘게 안 하다가 요즘 다시 보고 있는데요. 트렌드가 정말 많이 바뀌었네요.

    img.png


     

     

    헛소리가 좀 길어졌는데요. 어쨌든~ 오늘 알아볼 조건 액션을 배우기 위해 이전에 만든 CustomAction 프로젝트를 실행하고, 새로운 클래스를 추가하세요. 아래 전체 코드를 붙여 넣기 하세요.

    ConditionClickModel.cs
    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를 눌러보세요.

    img.png

     

     

    소스 코드는 볼 수 없지만, 클래스의 원형을 확인할 수는 있습니다. 아래 그림처럼요. 베이스 클래스의 접근 제한자 옆에 abstract(추상, 앱스트랙트)가 있습니다. 이 키워드를 사용하면 추상 클래스가 됩니다.

    img.png


     

     

    추상 클래스란?

    흠~ 좀 어려운 용어가 나왔는데요. 바로 추상 클래스죠. 개발자가 아니라면 대부분은 "이게 뭐지?"라고 말할 겁니다. 개발자는 대부분 무언가를 만들기 전에 내가 무엇을 개발해야 하는지 파악해야 합니다. 여기서~ 문제는 대부분의 고객이, 자신이 원하는 게 뭔지 정확하게 모른다는 것입니다. 그래서 서로 대화를 통해 조금씩 구체화시켜 나가는 작업이 필요하게 됩니다. 솔루션 업체라면 설명서와 스펙, 인터페이스 정의서가 준비되어 있고 추가로 필요한 것만 더 개발해주는 방식으로 진행하죠.

    img.png


     

     

    잠깐 이야기가 다른 데로 샛는데요. 만약, 자동차를 만들고 싶어 한다고 하면 그게 승용차인지 트럭인지 알아야 합니다. 물론, 벤이나 스포츠카가 될 수도 있죠. 아무튼 개발자는 고객이 원하는 아주 멋진 벤츠 e-class를 만들어줬습니다. 하지만, 고객이 보기에 너무 복잡하고 퍼포먼스가 떨어지는 것처럼 느껴졌습니다. 그래서 벤츠 cls처럼 만들어 달라고 요구를 하게 됩니다. 그렇다면 개발자는 처음부터 다시 만들어야 할까요? 물론 그렇지는 않습니다. 벤츠 e-class,  cls를 비롯한 자동차라는 범주는 추상화할 수 있는 요소들이 많습니다. 바퀴 4개, 브레이크 패드, 엔진, 핸들, 사이드 미러, 룸미러 등등 말이죠. 이렇게 추상화 작업을 하고 고유한 특성이나 속성만 개발하는 것입니다. 어차피 핸들을 돌리면 바퀴가 좌우로 움직이는 건 불변이니까요. 하지만, 퍼포먼스는 엔진의 사양에 따라 달라져야 하는 부분이 있습니다. 그래서 엔진만 교체하면 되는 거죠. 복잡해지니 이쯤에서 정리하면~ 개발자들은 추상화(더불어 다형성) 작업을 통해 단순 모형(모델)을 만들고, 상속 받음으로써 변경은 막고 확장은 열어줍니다. 이런 일련의 작업을 추상화 작업이라고 말하고, 이 작업의 결과물이 추상 클래스입니다.

    img.gif


      

     

    추상화와 다형성을 잘 이해하면 변경이 발생했을 때 코드를 수정하는 비용을 최소화하고 추가 요구 사항에 대해 확장이 극대화되므로 시간과 비용 둘 다 드라마틱하게 감소하게 됩니다. 물론, 엔터프라이즈급 솔루션인 경우에 그렇다는 겁니다. 추상화라는 화두는 OOP의 5대 원칙(SOLID) 중에서도 중요한 부분이라서 이야기가 좀 길어졌는데요. 이쯤에서 마무리하고, CustomAction 프로젝트의 ①어셈블리와 파일 버전(1.0.0.7)을 올리고 빌드합니다.

    img.png


     

     

    NGM을 실행한 후 메뉴의 ①관리자를 클릭하고 ②도구 모듈 설치를 클릭하세요.

    img.png

     

     

    아래 그림처럼 ①CustomAction.dll을 선택한 후 ②열기 하세요.

    img.png

     

     

    조건은 같음, 다름 또는 True, False를 판단하기 위해 여러 가지 설정해야 할 것들이 좀 많습니다. 그래서 스샷을 뜨면서 설명을 적기에는 너무 막일이 심해서... 유튜브로 찍어봤습니다. 아래 내용을 참고하시면 도움이 될 거 같네요~~~

     

      

     

    개발자에게 후원하기

    img.jpg

     

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해 줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천1 비추천0

    댓글목록

    profile_image

    쿵돌이님의 댓글

    no_profile 쿵돌이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date

    좋은 강의 잘 보고 갑니다~!