Fig. 1. Some examples of the sudoku game. 지향적으로설계되지않아서 와같이객체지향언어를사용하는경우오픈되어있는기존의소스를재사용하는데편리하지않다 기반으로구현된스도쿠앱도많지만 소스가오픈된경우가매우드물며 스도쿠게임서객체지향개념의근간이되는클래스의캡

Similar documents
q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

MVVM 패턴의 이해

gnu-lee-oop-kor-lec06-3-chap7

JVM 메모리구조

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

Convenience Timetable Design

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint Presentation

Microsoft PowerPoint 장강의노트.ppt

의기보를데이터베이스로사용하였으며 어느정도안정화되어서는 개의알파고가서로대국하여만들어진기보를사용하여다시머신러닝을강화하도록학습시켰다 문제를해결하기위한인공지능은반드시최적의해법을구해야할필요는없기때문에짧은시간에해를구할수있는알고리즘의개발이중요하다고할수있다 본논문에서는 완전문제인스도

PowerPoint Template

Microsoft Word - PLC제어응용-2차시.doc

쉽게 풀어쓴 C 프로그래밍

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Network Programming

PowerPoint 프레젠테이션

오버라이딩 (Overriding)

슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

[Brochure] KOR_TunA

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

PowerPoint Presentation

제11장 프로세스와 쓰레드

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

No Slide Title

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

설계란 무엇인가?

슬라이드 1

Visual Basic 반복문

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

Microsoft PowerPoint - VB.NET_06.pptx

Microsoft PowerPoint - 2강

제목

PowerPoint Presentation

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Inclusion Polymorphism과 UML 클래스 다이어그램 구조에 의거한 디자인패턴 해석

PowerPoint 프레젠테이션

유니티 변수-함수.key

RVC Robot Vaccum Cleaner

Microsoft PowerPoint - 06_ClassDiagram(2010).ppt [호환 모드]

JAVA PROGRAMMING 실습 02. 표준 입출력

2장 변수와 프로시저 작성하기

소프트웨어공학개론 강의 7: 시퀀스다이어그램 최은만동국대학교컴퓨터공학과

PowerPoint 프레젠테이션

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

PowerPoint 프레젠테이션

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - e pptx

Microsoft Word - src.doc

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

Microsoft PowerPoint - Java7.pptx

(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - 26.pptx

17장 클래스와 메소드

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint 웹 연동 기술.pptx

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

PowerPoint Presentation

PowerPoint Template

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - 2-Objective-C 기초

Microsoft PowerPoint - 1주차 UML의 구성과 도구

Chapter #01 Subject

adfasdfasfdasfasfadf

제8장 자바 GUI 프로그래밍 II

C++ Programming

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint 프레젠테이션

vRealize Automation용 VMware Remote Console - VMware

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

리눅스 프로세스 관리

PowerPoint 프레젠테이션

API 매뉴얼

쉽게 풀어쓴 C 프로그래밍

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게 풀어쓴 C 프로그래밍

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

uml.hwp

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

- 클래스를이용한 2개의계산기구현 class Calculator: def init (self): self.result = 0 def adder(self, num): self.result += num return self.result cal1 = Calculator()

2_안드로이드UI

02 앱을실행하는 3 가지방법 Mobile Apps >> 앱인벤터로작성한앱은다음과같은 3가지의방법으로실행이가능하다. 만약사용자가스마트폰이있고와이파이를사용하고있다면작성한앱을바로실행하여볼수있다. 가장바람직한방법이다. 스마트폰에구글 Play 스토어를통하여 App Invent

PowerPoint Template

Transcription:

김태석, 김종수 Tai Suk Kim, Jong Soo Kim 1. 서론워드프로세스 이미지저작도구와같이특정한작업에필요한데이터를메모리로읽어들여서편집하는것을주요기능으로하는소프트웨어는잘못된작업을바로취소할수있는 기능의지원이필수적이라할수있다 이러한 기능의구현은텍스트데이터를기반으로하는프로그램뿐만아니라 그래픽프로그램인경우더욱중요한기능이며 해당기능의구현이소프트웨어사용자가비생산적인실수를하더라도전체작업스케줄에지장없이안정적으로작업할수있는여건을마련해준다 와 기능이필요한어플리케이션은이와관련된기능의구현을설계초기에반영해놓지않으면 해당기능을구현하기위해많은코드를수정해야하는번거로움이생길수있다 객체지향적으로 설계되는소프트웨어의설계와구현에있어서도 와 기능의지원이필요한경우 방대한양의코드를효율적으로구현하기위해서는 와 기능이효율적으로구현될수있는설계를바탕으로필요한나머지기능을구현해나가는것이해당기능과전체어플리케이션구현에효과적인경우가많다 2. 관련연구 2.1 선행연구현재구글의앱스토어나국내의앱마켓에서는 과같은다양한스도쿠게임이있으며 해당스도쿠게임에는 기능이구현되어있는것도있으며 그렇지않은것도있다 리눅스기반의 소스스도쿠프로그램도있지만 이경우 객체

Fig. 1. Some examples of the sudoku game. 지향적으로설계되지않아서 와같이객체지향언어를사용하는경우오픈되어있는기존의소스를재사용하는데편리하지않다 기반으로구현된스도쿠앱도많지만 소스가오픈된경우가매우드물며 스도쿠게임서객체지향개념의근간이되는클래스의캡슐화를파괴하지않고 분산작업이용이한 기능의설계를참고하기는힘든경우가많다 위에그림중에서가장오른쪽에빨간색박스로감싸진스도쿠게임은소스가오픈된스도쿠게임이다 는오픈소스스도쿠에서사용하고있는 의 구현을보여준다 다이어그램에서 수행되는명령어를객체로관리하기위해 클래스를사용하여 클래스객체를생성하고있음을볼수있고 와 추상메서드를가지는 클래스를상속받는 추상클래스와 를다시상속받는 클래스가있음을볼수있다 설계에서다소비효율적인부분은추상메서드가정의되어추상클래스로정의 Fig. 2. Command Pattern implementation of the open source sudoku.

된 를상속받는 는해당클래스에서정의된추상메서드가없음에도불구하고추상클래스로정의된것을볼수있다 따라서 클래스와 클래스는통합되는것이클래스관리와구현에편리하다고할수있다 은오픈스도쿠에서게임을구현하기위한주요클래스설계를보여준다 클래스의 메서드는 패턴으로구현된임의의자식클래스를저장하기위하여부모클래스인 를아규먼트로받고있는것을볼수있다 또한 기능을구현하기위하여 그림의빨간박스에서보는바와같이 와같은메서드들이 클래스에포함되어있음을볼수있다 다이어그램에서는 기능의구현을위해관련된기능의구현을별도의클래스로분리하지않은것을볼수있는데 이와같은구현은추후지속적인기능의향상을위하여필요한메서드의개수가지속적으로늘 어날수있다는가정을하면 클래스가전체어플리케이션설계에서너무많은역할을담당하게되는데 이는여러명의개발자들이동시에진행하는소프트웨어분산작업에서일부클래스가비대해짐으로써 전체개발일정을지연시키는결과를초래할수있다 2.2 GoF 디자인패턴을이용한구현 의 패키지를활용할수없는경우에는 기능을구현하기위해서 디자인패턴을활용할수있다 그래픽을다루는것이주요기능인프로그램의 기능구현에있어서디자인패턴을이용한예는 과같은여러사이트에소개되어있다 기능구현에주로사용되는패턴으로는 그리고 패턴이있다 간단한 기능의구현에는 나 가필요없는경우도있지만 그래픽처리가주요기능인복잡한어플리케이션의 기능구현에는이들패턴들이유기적으로결합되어해당기능이구현된다 Fig. 3. related methods for implementing undo function in open sudoku.

Fig. 4. Memento pattern. 일반적으로 패턴은명령을트랜잭션형태로수행해야하는경우나 콜백기능을구현하고자할때사용할수있다 기능의구현을위해서사용자가발생시키는명령어를 나 과같은자료구조를이용하여수행될명령어의인스턴스를저장하고 기능호출시해당자료구조를이용하여관련명령어를수행하는데참고한다 에있는 패턴은 기능구현에관련된객체들에대하여해당시점의상태를기억하는역할을담당하는데 패턴이가지고있는명령어를저장하는스택을참조하여 기능을순차적으로구현할수있도록도와준다 패턴은상태변화감시가필요한다양한객체들을제어하기위한패턴으로 기능호출시어플리케이션에서전체적으로다시그려야하는컴포넌트들을관리하는역할을담당한다 3. 스도쿠게임의 Undo 기능설계 3.1 GUI 설계 설계에많은시간이들어가는게임의구현에있어서도 기능의구현이필요한경우가있다 특히기억력을소재로하는게임이나 교육용게임에서 기능의구현이필요한경우가많다 에서 기능이구현된스도쿠의 설계를볼수있다 새로설계된어플리케이션은 을가진다 한개의 클래스는입력될수있는 까지에숫자를가지며 문제가출제되어숫자가해당 에부여되거나사용자가정답으로입력하는숫자는 의중앙에숫자의색상과크기를다르게하여출력된다 의중앙영역은전체 객체를배열로관리하는 북쪽영역에는퀴즈출제 문제풀이검증 환경설정등을선택할수있는 남쪽영역에는선택된셀에숫자를입력할수있는숫자버튼과기존에입 Fig. 5. GUI Design of a sudoku game. 력된숫자를취소하거나되돌릴수있는 와 버튼이포함된 이있다 3.2 GoF 패턴적용한클래스다이어그램스도쿠게임에서 패턴을이용하여 기능을구현한설계의예는 에서볼수있다 를이용하여지정한숫자를입력하는기능을구현하기위하여 의 패턴을사용하였다 인터페이스를구현한추상클래스인 를상속받는 클래스를사용하여클릭된숫자에해당하는정답을가진인스턴스가생성된다 게임이시작되면서숫자버튼을클릭하여입력되는명령을추적하기위해 클래스의 자료구조를가지는 객체변수가사용된다 명령어가수행되는현재의상태를저장하기위하여 인터페이스를구현한 클래스가사용되며명령어가수행될때마다기존의히스토리를저장하는 객체를생성한후 클래스의 객체변수에저장한다 을전체적으로관리하는 클래스는 명령이수행될경우전체 을다시그려야되므로 인터페이스를구현하고 클래스에저장된 가어떠한단계까지 을다시그려야할것인지에대한정보를알려준다

Fig. 6. Class design of the undoable sudoku game using GoF design patterns. 3.3 시퀀스다이어그램 명령을구현하기위한첫번째절차는 의 메서드를호출하는것으로부터시작된다 의시퀀스다이어그램에서클릭된명령버튼의인스턴스를저장하고관련된처리를수행하기위한메서드수행절차를볼수있다 사용자가숫자버튼을클릭함으로써 의 명령이호출된다 다음으로 인터페이스를구현하고있는추상클래스인 를상속받는 객체의 가호출된다 다음으로 객체는 객체의 를호출한다 객체는숫자버튼이클릭되는순서와해당객체를 자료구조에저장하기위한객체인데 현재까지클릭된 객체들에대한상태를순서대로저장하기위해생성된 정보를이용하여 객체를가져온다 가 를호출하여현재까지의상태에대한정보를객체로전달받는메서드가수행이완료되면 메서드를호출하여 객체에숫자가입력된 의정보를저장하고 선택된 에사용자가입력한숫자를정답으로처

Fig. 7. Sequence diagram to save the state on clicked a number button. 리한후 정답이입력되면수행되어야할처리를추가적으로수행한다 이메서드의수행이완료되면 에서가지고있는 구조의 에현재클릭된 객체를저장하고 을초기화한다 와 가 와관련된데이터처리를끝내면 패턴의참가자인 인터페이스를구현하고있는 클래스에서관리하고있는 개의 객체를다시그린다 기능구현과관련된 다이어그램은 에서볼수있다 사용자가 버튼을클릭하면 의 명령이호출된다 클래스가가지고있는 에값이들어있지않으면바로리턴하며 값이한개라도있는경우 를호출하여제일처음에있는 를제거한후 의 를호출한다 다음으로 객체의 메서드 Fig. 8. Undo sequence diagram.

를호출한다 는현재까지의숫자버튼클릭순서를저장하고있는 형의 객체를이용하여 객체를새로생성하여이를돌려받는다 다음으로 의 메서드가돌려받은 객체를이용하여 와관련된작업을수행한다 작업이완료되면 의 에서해당 를삭제한다 클래스에있는 의 다이어그램과마찬가지로 와 가 와관련된데이터처리를끝내면 패턴을사용하는 객체에서관리하고있는 개의 을다시그린다 화를파괴하지않고 특정시점으로인스턴스를복원하기위해서는순차적으로저장된인스턴스내부의정보를자유롭게액세스할수있어야하고 이를위해 패턴을활용할수있다 기능이있는스도쿠게임을구현하기위하여 디자인패턴중에서 그리고 패턴을이용한스도쿠게임구현을 에서볼수있다 이관리하는 배열에서 의좌표번호 에차례대로 을입력한후 패널에있는 와 버튼을클릭한결과 와 기능이설계대로구현된것을볼수있다 4. 구현및평가 4.1 구현소프트웨어의 기능설계에디자인패턴을활용하는이유는객체지향개념의근간이되는캡슐화를위배하지않으면서 추후이와유사한소프트웨어구현에해당클래스를재사용할수있다는장점이있기때문이다 자바기반의어플리케이션에서 기능을구현하려면특정명령어가실행되는시점에서메모리에생성된인스턴스들이가지고있는정보를저장할필요가있다 전체어플리케이션구현에클래스의캡슐 4.2 평가객체지향적인분석과설계에서는주어진요구사항을해결하기위하여 현실세계에있는여러가지사물들에대하여클래스라는이름의프로토타입을만든다 클래스를설계하는근간이되는개념은다른사물들과구분되는속성의정의와속성을사용하는메서드의캡슐화이며 설계와소프트웨어의구현을보다효율적으로수행하기위해상속 동적할당과같은추가적인개념이포함된다 일반적으로 어떠한어플리케이션을사용하는최종사용자의입장에서는설계가어떻든간에자신이원하는기능만빠르고정확하게수행이되지만 지속 Fig. 9. Execution example of undo and redo function.

Table 1. Performance evaluation of a class design using design patterns 패턴 패턴 패턴 구현 구현 기타 앱스토어 적으로소프트웨어개발에종사해야하는개발자들의입장에서는소프트웨어의효율적인설계가추후일어날수있는작업량을줄일수있어서시간과비용의절감에아주효율적인경우가많으며 이러한이유에서기존의설계보다효율적인설계는항상있을수있다 객체지향패러다임의소프트웨어설계와구현에서가장핵심이라고할수있는클래스설계에서도일반적으로통용되는클래스설계에다음과같은지침들이있다 간결한클래스를위하여최소한의공개인터페이스제공 클래스를사용하는다른사용자에게영향을주지않기위한구현은익 속성초기화와메모리관리를위한견고한생성자설계 다른클래스와의협력관계를고려한느슨한결합 재사용을고려한설계 확장성을고려하여설계 코딩표준을위한속성과메서드의명명규칙적용 유지보수가더편리하게만들기위한코드분리이외에도다양한설계지침이있지만 본논문에서는구현된소프트웨어의성능평가를위해지침중에서몇가지를사용하여기존에구현된다른소프트웨어와의성능을평가하였고 에그결과를정리하였다 표에서 는소스가공개되지않아서파악할수없음을나타낸다 앱스토에서제공되는게임의대부분은소스가공개되지않아서 디자인패턴의적용여부를분명하게파악할수없었고 나 기능이구현되지않은앱이다수있었다 논문에서 와 기능을비교하기위해분석된오픈 소스스도쿠는 패턴이사용되었으며 기능은구현되었으나 기능은구현되지않았다 이에반하여새로설계된가칭 는클래스의분산을위해 그리고 패턴을유기적으로사용하여 기능을구현하였고 추가적으로 기능도구현한것을볼수있다 5. 결론 기능이필요한어플리케이션의경우 그와관련된설계를미리반영해놓지않으면 해당기능의구현이어려운경우가많다 본논문에서는 기능구현이필요한어플리케이션의설계와구현을위하여해당기능을구현하는몇몇사례를조사하였다 안드로이드기반으로구현된오픈소스스도쿠게임을대상으로클래스다이어그램을분석하여스도쿠게임에서 기능을구현하기위한설계에서몇몇문제점을고찰하였다 해당스도쿠는 기능의구현을위해 의 패턴을사용하였지만 필요없는클래스를추가함으로써비효율적인설계가있는부분을살펴보았고 또한 기능구현에있어서전체게임의진행을담당하는 클래스가해당기능의구현도같이담당하고있어서 해당클래스가너무비대해지는문제점을볼수있었다 안드로이드기반의어플리케이션제작에서와같이 의 패키지를사용할수없는경우에있어서 기능을구현하기위하여 패턴중에서 그리고 패턴을유기적으로사용하여효율적으로클래스를분산시키는방법을보였으며 해당설계에바탕을둔기능을구현하여 와 기능이정상적으로작동하는것을보였다 논문에서적용된 기능의구현예는바

둑이나장기와같은게임외에도그래픽에디터기능이필요한어플리케이션의설계에도움을줄수있다 REFERENCE 년경북대학교전자공학과공학사졸업 년일본 대학이공학부계산기과학전공공학석사 년일본 대학이공학부계산기과학전공 공학박사 년일본국제전신전화연구소 기술고문 년일본 대학이공학부객원연구원 년 현재동의대학교컴퓨터소프트웨어공학과교수관심분야 정보시스템 기계번역 인터넷비즈니스 년부경대학교냉동공학전공공학사졸업 년부산외국어대학교컴퓨터공학전공공학석사 년동의대학교컴퓨터소프트웨어공학전공공학박사 년동의대학교산업기술개발연구소 연구원 년 현재한국승강기대학승강기공학부교수관심분야 소프트웨어설계 게임