아주 단순하게.. 회원 관리 프로그램을 만들었다고 했을때.

 

사용자가 프로그램의 실행파일을 누르면

 

1.구동에 필요한 리소스들을 내 app로 읽어 들인다. (init,load등 startup)

 

2.사용자에게 서비스를 제공한다. (interaction -> update & run 기존 저장 기록(파일,db)등 load)

  a.신규 회원 작성

  b.회원 조회

  c.회원 정보 수정

  d.회원 탈퇴

  e.프로그램 종료하기.

 

3.서비스 종료e 수행시 기록을 파일 or db에 저장해야 한다. (close,write등 finalize)

 

=>1->2->3은 서로 순차적인 의존 관계에 있다.(물론 2->1->3 식으로도 가능하지만.. 3->1->2는 말이 안된다.)

 

(sol)데이터에 대해 이러한 순차적인 의존성이 있을땐 assert or try catch or if(! ) else 등으로 오류처리를 해준다.

 

=>사용자 입장에서 2에서 b회원 조회도중 해당 회원의 정보를 수정c or 삭제d 를 수행할수 있을 것이다. 또는 b회원 조회

도중 메인메뉴로 이동을 원하거나, 이대로 프로그램을 종료하길 원할 수 도 있을것이다.(내가 예전에 만들었던 View

(여러메뉴및 사용자와 인터랙션을 포함하는 awt의 하나의 컴포넌트 개념)들 사이의 이동을 관리및 컨트롤하는

SceneManager의 역할)

사용자의 비지니스->그에 따른 서비스별 관계성-> 그에 따른 서브시스템or클래스or메서드간 의존성은 설계를 복잡

하게한다. 난 이것을 단순화&구조화 시키는 솔루션에 대해서 조금 더 알아야 할것이다.

 

(etc)

=>그림을 화면에 그리는 것도 마찬가지다.. 디바이스(화면 출력용 메모리 관리자) 얻고, 초기화하고, 내가 뿌릴 이미지를

    연결하고, 업데이트하고, 화면에 그리고... 종료시 사용한 리소스들을 해제해주고.. (directx를 초 단순화 시킴) 결국

    개별적인 명령들의 순차적인 모임이다.

 

=>지역변수를 선언하고,할당하고,초기화하고,연산에 사용하고,해당 스택 종료시 자동으로 정리및 소멸되고.. 클래스도 타입

   (데이터+연산)을 정의하고, 내가 사용하겠다고 선언하고, 메모리에 할당하고, 생성자or setter를 통해 초기화하고, 작업을

   수행시키고, 모든 일이 끝났으면 가비지 컬렉터에 넘기거나, 혹은 조금 더 시스템상 상위의 역할을 맡는 클래스라면

   app의 종료와 수명주기를 맞추고.. 

 

 

by givingsheart 2014. 1. 1. 15:27