4.3 이벤트 주도형 (Event-Driven)
Last updated
Last updated
이벤트 주도형 또는 이벤트 기반형(Event-Based) 프로그래밍 패러다임에 대해 알아보자. 이 패러다임이 대두되기 시작한 것은 사실한 운영체제(OS: Operating System)이 기존에 콘솔(Console)이라 불리는 텍스트기반으로 명령어를 일일히 입력해 운영체제와 소통하던 인터페이스에서 GUI(Graphic User Interface, 그래픽 사용자 인터페이스)방식으로 전환되기 시작하면서 대두된 것으로, 즉, GUI 환경 맞는 형식에 프로그램이 필요했고, 프로그래밍 개발방식도 마찬가지로 이에 맞춘 대응이 필요했다고 볼 수 있겠다. GUI 환경이란 다른게 아니고, 그래픽 화면 기반에서 시스템(즉 컴퓨터)를 다루는 것으로 PC든 스마트폰이든 클릭과 터치로 선택하고 조작하고 하는 것이 이미 우리가 컴퓨터를 다루는 보편화된 환경이 되어있기 때문에 이 프로그래밍 패러다임의 이해에는 크게 어려움은 없을 것 같다. 그럼에도 이벤트 주도형의 개념을 다음의 그림을 보고 더 잘 이해해 보자.
지금 화면에 보이는 내 프로그램에게서 어떤 행동을 촉발(트리거: Trigger)되게 만드는 모든 상황이 사건(이벤트)라 지칭할 수 있다. 사용자가 화면상에 특정 이미지 버튼(또는 아이콘)을 누른 시점, 특정 키보드 자판의 키(알파벳, 특수문자, 방향키 등)를 누른 시점, 마우스의 특정 버튼(왼쪽/중간/오른쪽 등)을 누른 시점, 어떤 예정된 시간이 된 시점, 다른 프로그램 자체로부터의 내 프로그램을 호출하는 시점 등등 말이다.
즉 개발자는 이러한 이벤트가 발생할 것을 미리 사전에 예상하고, 이러한 각각의 이벤트가 발생했을 때 어떤 일을 수행하라 라는 식으로 개념을 갖고 코드작성을 해나가는 식의 프로그래밍의 방식을 이벤트 기반형 프로그래밍 패더라임이라 할 수 있다. 우리는 이미 엔트리에 이러한 방식으로 코드작성을 해본 경험이 많아서 아마도 개념적 이해나 코드적용에는 크게 어려움이 없을 것으로 예상한다. 다만, 우리는 그것을 엔트리-파이썬에서는 어떤 함수를 활용해 코딩할 수 있는지만 알아보면 되겠다.
다음의 표에서 엔트리 안에 이미 존재하는 이벤트의 종류와 그 이벤트에 맞는 미리 사전 정의된(약속된) 콜백함수(3.1장 콜백함수 참조)의 목록을 확인할 수 있다.
이벤트 종류 | 블록코딩용 블록 | 텍스트코딩용 콜백함수 |
---|---|---|
화면에 시작하기 버튼을 클릭했을 때
def when_start():
키보드에 키를 눌렀을 때
def when_press_key("q"):
마우스 클릭했을 때
def when_click_mouse_on():
마우스 클릭을 해제했을 때
def when_click_mouse_off():
오브젝트 클릭했을 때
def when_click_object_on():
오브젝트 클릭을 해제했을 때
def when_click_object_off():
새로운 장면이 시작되었을 때
def when_start_scene():