'허니몬'에 해당되는 글 349건

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
http://xrath.com 에서 번역한 내용입니다.

Java SE 6 한글 문서 : http://xrath.com/javase/ko/6/docs/ko/
Java SE 6 한글 문서 다운로드 : http://xrath.com/files/jdk-6-docs-ko.zip

자세한 내용은 http://xrath.com/blog/entry/697 를 참고하세요. ^^
허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
JAVA 언어로 배우는 디자인 패턴 입문
카테고리 컴퓨터/IT
지은이 유키 히로시 (영진닷컴, 2008년)
상세보기

이 책의 서두에는 책의 내용에서 사용하는 UML에 대한 설명이 나와있습니다. ^^; 이 글은 그 내용을 그대로 옮겨적은 글입니다. 개인적으로 UML 을 보게 될 때 사용하려고 작성한 문서입니다. ^^; 다른 분들도 참고만 해주세요.



● UML

UML은 Unified Modeling Language의 약자로, 시스템을 시각화하거나 시스템의 사양이나 설계를 문서화하기 위한 표현방법입니다.

UML Resource page -
http://www.omg.org/uml/


● 클래스 다이어그램

UML의 클래스 다이어그램(Class Diagram)은 클래스나 인스턴스, 인터페이스 등의 정적인 관계를 표현한 것입니다. 클래스 다이어그램이라는 이름으로 불리지만, 클래스만 등장하는 것은 아닙니다.


● 클래스와 계층 관계

그림 0-1은 Java 프로그램과 대응하는 클래스 다이어그램의 예입니다.

Fig0-1.jpg

그림 0-1은 ParentClass와 ChildClass라는 두 클래스의 관계를 표시하고 있습니다. △이 붙어있는 실선의 화살표(①)는 클래스의 계층관계를 표시하고 있습니다. 화살표는 하위 클래스에서 상위 클래스로 향하고 있습니다(이를 테면, 이것은 extends의 화살표입니다).

ParentClass는 ChildClass의 상위 클래스이고, 반대로 말하면 ChildClass는 ParentClass의 하위 클래스입니다. 상위 클래스를 기저(基底) 클래스나 부모 클래스, 하위 클래스를 파생 클래스나 자식 클래스 또는 확장 클래스라고도 합니다. 각각의 클래스는 직사각형으로 표현합니다. 직사각형을 수평선으로 분할하여

- 클래스의 이름

- 필드의 이름

- 메소드의 이름

을 순서대로 적습니다. 이름뿐만 아니라 부가적인 정보(액세스 제어나 메소드의 인수나 형태 등)를 쓰는 경우도 있고, 반대로 주목할 필요가 없는 항목은 생략하는 경우도 있습니다(따라서, 클래스 다이어그램에서 소스 프로그램을 복원할 수 있는 것은 아닙니다).

abstract 클래스(추상 클래스)의 이름은 이탤릭체를 사용합니다. 예를 들어, 그림 0-1에서 ParentClass는 추상 클래스이므로 이탤릭체로 되어 있습니다.

static 필드(클래스 필드)의 이름에는 밑줄을 사용합니다. 예를 들어, field2는 클래스 필드이므로 밑줄이 그어져 있습니다.

abstract 메소드(추상 메소드)는 이탤릭체를 사용합니다. 예를 들어, ParentClass의 MethodA는 추상 메소드이므로 이탤릭체로 되어 있습니다.

static 메소드(클래스 메소드)의 이름에는 밑줄을 사용합니다. 예를 들어, ChildClass의 methodC는 클래스 메소드이므로 밑줄이 그어져 있습니다.

화살표의 방향

UML에서는 하위 클래스에서 상위 클래스를 향해 화살표가 뻗어 있습니다. 상위 클래스를 기준으로 하위 클래스를 만들기 때문에 화살표를 반대로 이해하는 것이 이해하기 쉽다고 생각할지도 모릅니다.

다음과 같이 생각하면 이해하기 쉽습니다. 하위 클래스를 정의할 때 extends로 상위 클래스를 지정합니다. 따라서 하위 클래스는 반드시 상위 클래스를 알고 있습니다. 그러나 상위 클래스는 하위 클래스를 알고 있다고 할 수 없습니다. 상대를 지목할 수 있는 것은 상대를 알고 있을 때 뿐입니다. 그래서 하위 클래스에서 상위 클래스로 화살표를 표시하는 것입니다.


인테페이스와 구현

 그림 0-2도 클래스 다이어그램의 예입니다. 이 그림은 Printable이라는 인터페이스가 있고, PrintClass라는 클래스가 Printable 인터페이스를 구현하고 있는 것을 나타내고 있습니다. 이 책에서는 추상 클래스와의 유사성을 강조하기 위해 인터페이스 이름에 이탤릭체를 사용하고 있지만, 일반적으로는 이탤릭체를 사용하지 않는 경우도 많이 있습니다.

 △가 붙은 점선의 화갈표는 인터페이스와 구현 클래스의 관계를 나타내고 있습니다. 화살표는 구현 클래스에서 인터페이스를 향하고 있습니다(말하자면, 이것은 implements의 화살표입니다. UML에서 Java의 인터페이스를 표현하는 경우에는 <<imterface>>라고 씁니다.

Fig0-2.jpg

 

집약

그림 0-3도 클래스 다이어그램의 예입니다. 이 그림에서는 Color, Fruit, Basket 이라는 세 클래스의 관계를 나타내고 있습니다. Basket 클래스의 fruit 필드는 Fruit 클래스의 배열이 되 있고, Basket 클래스의 인터페이스는 Fruit 클래스의 인스턴트를 여러 개 가집니다. 또한 Fruit 클래스의 color 필드는 Color 클래스형으로 되어 있고, Fruit 클래스의 인스턴스는 Color 클래스의 인스턴스를 1개 가집니다. 바꾸어 말하면, 바구니에 과일이 몇 개인가 들어있고, 과일은 각각의 색을 가지고 있는 관계입니다.

이와 같은 ‘갖고 있는’ 관계를 ‘집약(aggregation)’이라고 합니다. 인스턴스를 갖고 있으면 개수에 상관없이 그 관계는 집약입니다. 배열을 사용하고 있어도, java.util.Vector 클래스를 사용하고 있어도, 어떤 구현이라 해도 인스턴트를 갖고 있으면 그 관계는 집약입니다.

◇이 붙은 선은 집약을 나타냅니다. 마름모꼴 모형의 접시 위에 물건이 놓여있다고 생각하면 됩니다.


액세스 제어

 

그림 0-4도 클래스 다이어그램의 예입니다.

Fig0-3.jpg

그림 0-4에서는 메소드나 필드의 액세스 제어를 표현하고 있습니다. UML에서 액세스 제어를 표현하고 싶은 경우, 메서드나 필드의 이름 앞에 기호를 붙입니다.

▪ + 가 붙어있는 경우 : public인 메소드나 필드를 나타냄. 액세스 가능

▪ - 가 붙어있는 경우 : private인 메소드나 필드를 나타냄. 외부에서 액세스 가능

▪ # 가 붙어있는 경우 : protect인 메소드나 필드를 나타냄.

▪ ~ 가 붙어있는 경우 : 동일한 패키지 내에서만 액세스할 수 있는 메소드나 필드

클래스의 관계

클래스의 관계를 나타내기 위해 관련된 이름에 ▶ 표시를 붙여줍니다. 그림 0-5는 클래스의 관계를 나타냅니다.

Fig0-4.jpg

 

시퀀스 다이어그램

UML의 시퀀스 다이어그램(Sequence Diagram)은 프로그램이 작동할 때 어떤 메소드가 어떤 순서로 실행되는가, 어떤 추상 클래스가 어떤 순서로 실행되는가를 표현한 것입니다.

클래스 다이어그램은 ‘시간에 의해 변하지 않는 것(정적인 관계)’를 나타냅니다. 반면에 시퀀스 다이어그램은 ‘시간에 따라 변하는 것(동적인 관계)’를 나타냅니다.

 

● 처리의 흐름과 오브젝트(객체) 간의 협조 동작

그림 0-6은 시퀀스 다이어그램의 일례입니다.

Fig0-5.jpg

그림 0-6의 오른쪽이 시퀀스 다이어그램입니다. 왼쪽에는 대응하는 Java 프로그램의 일부를 표시하고 있습니다. 이 그림에는 세 개의 인스턴스가 등장하고 있습니다. 인스턴스는 각각 다이어그램의 위쪽에 있는 직사각형에 대응하고 있습니다. 직사각형 안에는 :Client, :Server, :Device와 같이 콜론(:) 뒤에 클래스 명을 표기하고 밑줄이 그어져 있습니다. 이것은 각각의 Client 클래스의 인스턴스, Server 클래스의 인스턴스, Device 클래스의 인스턴스를 표시하고 있습니다. 각각의 인스턴스에 이름이 필요할 경우에는 server:Server와 같이 콜론 앞에 이름을 적습니다.

 

각각의 인스턴스에서 아래 방향으로 뻗어있는 점섬을 라이프 라인이라고 합니다. 여기에서 시간은 아래 방향으로 흐른다고 생각하십시오. 위쪽은 과거아래쪽은 미래입니다. 라이프 라인은 인스턴스가 존재하는 동안만 존재합니다. 라이프 라인의 중간에 가늘고 긴 직사각형은 오프젝트(객체)가 이동 중인 것을 나타냅니다.

가로 방향으로 화살표가 그려져 있습니다. open 이라고 라벨이 붙은 화살표를 봅시다. 앞이 검은 화살표(─▶)의 실선은
메소드의 호출을 표시합니다. 여기서는 client 가 server의 open 메소드를 호출한 것을 나타내고 있습니다. open 메소드를 호출했기 때문에 server 인스턴스가 활동하게 되고 가늘고 긴 직사각형으로 시작되었습니다.

 

open의 화살표에서 시작한 server의 가늘고 긴 직사각형의 아래쪽에서 client 쪽으로 점선의 화살표(◅┄)가 뻗어 있습니다. 이것은
open 메소드에서의 리턴(반환)을 표시하고 있습니다. 이 그림에서는 모든 메소드의 리턴을 그리고 있지만 생략하는 경우도 있습니다. 제어가 client로 되돌아왔기 때문에 server 인스턴스가 활동 중인 사각형은 일단 종료됩니다.

 

또한 같은 방법으로 print 메소드가 호출됩니다. 이번에는 print 메소드 안에서 다시 device 인스턴스의 write 메소드를 호출하고 있습니다.

이와 같이 여러 개의 인스턴스 간의 행동을 도식화할 수 있습니다. 시퀀스 다이어그램은 라이프 라인을 따라가면서 위에서부터 순서대로 읽어 갑니다. 그리고 화살표가 있으면 그것을 따라가면서 인스턴스 간의 협조 동작을 확인해 갑니다.

이 글은 스프링노트에서 작성되었습니다.

허니몬의 IT 이야기
  브라우저 상에서 쓸 수 있는 웹오피스 서비스인 ThinkFree(http://www.thinkfree.com, 한글과 컴퓨터에서 서비스)의 사이트 디자인이 확 바뀌었습니다. 3월 31일 경 변경된 것으로 보여집니다. MS 오피스를 설치할 수 없는 환경(공공기관, 학교 등)에서 종종 오피스를 사용해야할 필요성이 많이 생기는 탓에 알게된 서비스 입니다. ^^

  사이트 첫화면부터 빠른 시작을 통해서 바로바로 문서를 열어볼 수가 있습니다. ^^; 대신 이렇게 바뀌면서 프로그램이 실행된 상태에서 내 컴퓨터에 저장되어 있는 문서들을 바로 불러와 수정할 수는 없는 형태로 변경이 되었습니다. 웹하드(무료 1GB, ThinkFree에서는 마이오피스라고 칭함) 상에 업로드를 시키고 그 후에 오피스를 실행하고 열어야 하는 번거로움이 발생을 했습니다. 이건 저에게 번거롭더군요.

사용자 삽입 이미지

  비가입 회원의 경우에는 빠른 시작으로는 5MB 이하로의 용량제한이 걸립니다.

빠른 시작 메뉴들

사용자 삽입 이미지

  이 빠른 시작에서 찾아보기로 해서 문서를 업로드(역시 임시 웹하드에 업로드 시킨 후 그것을 열어서 보여줌)를 해서 보여줍니다. 왜 OTL... 내 컴퓨터에서 직접 열어볼 수는 없을까요? ㅡㅅ-)?

사용자 삽입 이미지

  DOC, ppt, xls 등을 PDF 등으로 변환하는 기능을 해줍니다. ^^ 변환 타입은 image, text, pdf 세가지 타입이 가능합니다.

사용자 삽입 이미지
 
게시하기는 게시를 원하는 문서를 찾아 선택한 후에 게시하기를 누르면 다음과 같은 화면이 출력됩니다.


게시하기에서 문서 올린 후,


아래에 있는 삽입(Embed) 코드를 복사해서(친절하게 아래에 보면 복사하기 버튼이 있다) 블로그에서 HTML 편집을 하면서 원하는 곳에 붙여넣기 하면 되겠습니다. ㅡㅅ-)>

  << ThinkFree 에 doc 문서를 올린 후에 Embed 태그로 불러온 문서 입니다. 한번 구현해보세요. ^^

사용자 삽입 이미지

  공유하기는 임시 웹하드 공간에 파일을 올려놓고 ThinkFree 내에서 웹오피스로 보여주는 기능입니다.

사용자 삽입 이미지

업로드 및 문서검색은 가입자들이 사용하는 기능입니다.

사용자 삽입 이미지

로그인 창은 다음과 같으며, ThinkFree에 직접 가입하거나 구글 계정으로 로그인이 가능합니다. ^^

사용자 삽입 이미지

  가입자의 경우에는 마이오피스(용량 1GB)에 저장된 문서를 공통으로 편집도 가능하다. 이 부분은 유용하다고 생각합니다. 기업체에서도 약간의 비용을 더 지불해서 빠른 속도와 안정적인 서비스를 받을 수 있을 겁니다. 이 부분이 한컴에서 ThinkFree를 제공하면서 노리는 부분일 것입니다. ^^

사용자 삽입 이미지

문서(Docs)를 선택하면 다른 사람이 작성하고 공유를 한 문서들을 볼 수 있습니다.

사용자 삽입 이미지

이번에 추가된 것으로 보이는, 프로젝트 관리기능을 지원하는 WorkSpace 가 추가되었습니다.

본인의 경우, 앞으로 교육 과정에서 프로젝트 팀을 구성하고 지속적으로 이와 관련된 문서작업도 병행을 하게 될 겁니다. 그 때 사용을 해보고 사용후기를 올려보도록 하겠습니다. ^^;

현재는 오픈마루에서 제공하는 스프링노트에서 그룹노트를 만들어서 교육내용과 관련된 것들을 올리고 있습니다. ^^; 기회가 닿으면 스프링노트 사용기도 올리겠습니다. OTL... 올릴 것이 꽤 많이 있군요!!?
허니몬에 관한 보고서
항상 그러는 일이지만, 매월 초가 시작되면, 그 달에 무엇을 할 것인가에 대해서 곰곰히 생각을 해봅니다.올해 4월의 경우에는, 프로그래밍 공부를 열심히 하는 것 이 주가 될 것 같습니다. ^^;


 
사용자 삽입 이미지
 Photo by ishane

  다이어리를 꺼내어 들고, 4월에 해야할 일들을 적어내려가다보면 자바 전문가 교육 과정 때문에 다른 일을 할 엄두가 나지는 않는 상황입니다.

   예비군 훈련이 4월 중순에 한번 있고, 다이빙을 즐기는 다이빙 샵에서 개해제(바다에 제사를 지내는 것을 핑계삼아 회원들이 오랜만에 얼굴보고 다이빙을 하는 것)를 가야하는데, SCJP 시험을 준비하는 것과 겹치게될 가능성이 많군요.

   다른 무엇보다 중요한 것은 건강하고 즐겁게 4월을 보내는 것이 제 목표가 되겠습니다. 4월부터 교육생들과 함께 그룹 스터디를 시작합니다. 그룹 스터디를 해보지 않은 저로서는 조금 난감한 상황이군요. ^^;; 대학교 때 만들었던 취업 동아리도 관리 부실로 조기에 폐부되고... OTL...

   하루 8시간의 교육을 받는 강행군 속에서 교육과정이 끝나고 이를 얼마간 더 남아서 개인적인 자율학습 및 그룹스터디를 진행할 계획입니다. 체력이 받쳐주는 한 이 몸 바쳐서 열심히 하는 방법뿐인거죠. ^^ 응원해주십시오!!
4월 허니몬의 큰 이벤트
1. 본격적인 그룹 스터디 시작
2. 예비군 훈련
3. SCJP
4. 다이빙 샵의 개해제
5. 제일 중요한 것은 체력관리 및 유지



  오늘은 만우절, 거짓말을 해도 어느정도 용서가 되는 날이지만, 그렇다고 해서 다른 사람에게 상처를 주는 거짓말이 용서받을 수 있는 것은 아닙니다. 과격한 거짓말(어디에 불났다고 소방서에 전화한다거나 도둑 들었다고 경찰서에 전화하는)은 삼가합시다. ^^

4월도 즐거운 하루 보내십시오!!
허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
  2009년 03월 27일. 양재역 부근에 위치한 CJ 정보기술교육센터 1 강의실에서 작은 프로젝트 발표회가 있었습니다. 제목은 거창하지만, 처음 배운 HTML/CSS/JAVASCRIPT 를 활용해서 4개팀이 팀별로 주제를 정하고 2박 3일간 제작하고 발표하는 시간을 가졌습니다. ^^

사용자 삽입 이미지

  홈페이지를 만들기 위해 늦은 시간까지 열심히 한 그들. 발표는 진지하게!!
  홈페이지 구동 전에 프레젠테이션을 실시하여 팀원과 역할분담 등에 대해서 설명하고, 자신들의 작품을 직접 구현하는 시간을 가졌습니다. ㅡㅅ-)b 모두 멋지더군요. 저는 열심히!! 사진을 찍었습니다.

사용자 삽입 이미지

  모두가 여전히 낯설음과 쑥쓰러움을 가지고 시작한 첫 프로젝트였습니다. ^^; 처음이어서 그랬을까요? 많은 사람들이 초반부터 너무 러쉬를 들어간 탓에 정작 발표회를 하는 순간에는 녹초가 되어 넉다운 되어 있는 모습도 볼 수가 있었습니다. ^^; 다음에는 스케줄과 건강을 잘 관리하기를 바랍니다. ㅎㅎ 조금 과했다는 생각이 들기도 합니다.
  사용자의 요구보다 높은 수준으로 제작하려다보니 모두들 진이 쭈욱 빠진 듯하더군요.

012345678910111213141516171819202122232425


  이것으로 프로그래밍 맛뵈기 과정이 끝이 났습니다. 다음주 부터는 본격적으로 Java Fundamental 과정으로 들어가게 됩니다. 그 때는 머리가 이리저리 꼬이지 않을까 염려가 되기는 하지만, 그건 모두가 마찬가지이겠죠? ^^

  우리만의 작은 발표회는 그렇게 끝이 났습니다. 앞으로 교육 중에 크고작은 프로젝트들을 진행할 것이니까, 이런 발표회 장면들을 자주 올려드리도록 하겠습니다.

^_^)/  For Java Expert!!

1 ··· 59 60 61 62 63 64 65 ··· 70
블로그 이미지

Email : ihoneymon@gmail.com 안녕하세요, 꿀괴물 입니다. ^^ 멋진 비행을 준비 하는 블로그 입니다. 만능형 인간이 되어 많은 이들에게 인정받고, 즐겁고 행복하게 살기를 간절히 원합니다!! 달콤살벌한 꿀괴물의 좌충우돌 파란만장한 여정을 지켜봐주세요!! ^^

허니몬