1. 클래스 다이어그램


- 가장 중요한 다이어그램이며, 분석/설계 단계에서 모두 이용, 작성합니다. 이는 구현시 각 클래스로 표현됩니다. 초기 다이어그램은 객체와 클래스가 혼합되어 나타나지만 후반부로 가면서 구체화되어 시스템의 구현객체로 표현됩니다. 

- 클래스는 지식 도메인에 기반한 어휘와 용어로부터 만들어집니다. 시스템분석가는 의뢰인과 상담하여 그들이 가지고 있는 지식 도메인을 파악하여 정리하고, 그 도메인에서 발생되는 문제를 해결할 컴퓨터 시스템을 설계해 나가면서, UML에 사용할 용어를 선정하고 이것을 클래스로 모델링 하는 것입니다. 

- 의뢰인과 대화속에서 명사와 동사에 귀를 기울여햐 합니다. 명사는 클래스의 이름이 될 확률이 높기 때문이고 동사는 모델링한 클래스의 Operation이 될 가능성이 있습니다. 

- 클래스의 핵심이 되는 리스트(클래스 이름, 속성, 오퍼레이션)를 모두 정리한 다음에는 각각의 클래스가 의뢰인의 업무에서 어떤 역할을 할지에 대하여 묻도록 합니다. -> 이에 대한 대답은 클래스 책임 설명으로 적을 수 있습니다. 



명사 : 볼, 바스켓, 팀, 선수, 가드, 포워드, 센터, 슛, 슛시간, 3점 라인, 자유투, 파울, 자유투라인, 코트, 게임시간

동사 : 슛하다, 드리블 패스, 파울, 리바운드 (이 외에도 개인의 상식을 동원해서 클래스 모델링에 사용할 수 있습니다.)


다음은 이런 정보를 바탕으로 만든 Class 다이어그램입니다. 이렇게 만든 클래스 다이어그램은 나중에 다시 감독과 이야기할때 충분한 기본자료로 사용하여 더 많은 정보를 얻어내는데 도움을 줄 것입니다. 


연관 (Association)

클래스가 개념적으로 서로 연결되어 있음을 의미합니다.


- 각각의 클래스마다 역할을 표시할 수 있습니다. 

- 하나의 클래스가 여러클래스와 연관을 맺을 수 있습니다. 

- "->" 또는 <-" 화살표 표시를 사용하여 관계의 방향을 나타낼 수 있습니다. 



연관클래스


- 연관의 속성과 오퍼레이션을 모델링할때 사용합니다. 연관클래스는 연관선과 점선으로 연결되며, 다른클래스와의 연관을 가질수도 있습니다. 


객체가 클래스의 인스턴스인 것처럼, 연관도 자신의 인스턴스를 가질 수가 있습니다. 어떤 특정한 선수가 특정한 팀에 소속되어 있는 관계를 생각하면, 이때의 "운동하다" 연관관계를 링크(link)라고 부릅니다. 링크는 두 객체를 선으로 이어서 나타내며, 객체에 밑줄 긋듯이 링크에도 밑줄을 긋습니다. 



다중성(Multiplicity)


- 연관되어 있는 두 클래스 사이에서 한 클래스의 객체와 관계를 가질수 있는 다른 클래스의 객체 개수. 이것을 다이어그램에서 나타내면 해당 클래스 가까지에 객체의 수를 써줍니다. 예를 들면, 팀의 입장에서 보면 다섯명의 선수와 연관되어 있지만 선수의 입장에서 보면 한팀과 연관되어 있다는 것입니다. 


표기 

- UML은 "more"과 "many"를 표현하는 기호로써 '*' 를 사용합니다. 

예) 

- 1..* -> 1또는 그이상

- 2..7 -> 2이상 7까지

- 5,7 -> 5 또는 7


상속과 일반화(Generalization)


- 한 클래스는 다른 클래스로부터 속성과 오퍼레이션을 물려 받을 수 있습니다. 이것을 객체지향 개념에서는 "상속"이라 하고, UML 에서는 "일반화"라고 합니다. 상속관계에서 상속을 받는 쪽을 Child Class 또는 Sub Class라고 하고, 상속을 해주는 쪽을 Parent Class 또는 Super Class라고 합니다. Sub Class에서 Super Class 쪽으로 속이 빈 화살표를 연결합니다. 이러한 타입의 연결관계를 "...의 일종(is a kind of) 라고 부릅니다.


- 상속관계를 모델링 할 때에는, 반드시 서브 클래스가 수퍼 클래스에 대해 "is a kind of" 관계를 가지도록 만들어야 합니다. 

- 만약 두 클래스가 이 관계로 맺어지지 않는다면, 차라리 다른 타입의 관계를 맺어주는 것이 더 낫습니다. 


Root Class : Super Class를 가지지 않는 클래스

Leaf Class : Sub Class를 가지지 않는 클래스  



★ 어떤 Sub Class의 Super Class가 있을때, 만약 이 Super Class의 구체적인 인스턴스를 만들 필요가 없을때에는 "추상 클래스"로 만들자. 즉, 클래스의 객체를 생성하지 않는 클래스를 "추상 클래스"로 만듭니다. 

표기: 클래스명을 이탤릭체로 씁니다. 

의존관계(Dependency)

- 한 클래스가 다른 클래스를 사용하는 관계를 말합니다. 예를 들자면 "시스템"클래스와 "폼" 클래스가 있는데, "시스템"클래스는 '폼_출력(form:폼)' 이라는 Operation을 가지고 있을때, 이 "시스템"이 화면에 표시해주는 서식은 전적으로 "폼" 클래스에 따라 달라집니다. 이 상황을 UML로 표기하려면 "의존대상" 이 되는 클래스를 향해 점선으로 긋고 화살표 머리를 붙여주면 됩니다. 

집합연관(Aggregation)


 하나의 클래스가 여러개의 컴포넌트 클래스로 구성되어 있는 경우가 있습니다. 즉, 컴포넌트 클래스와 전체 클래스가 "부분-전체"연관 관계를 가질때 집합 연관이 됩니다. 

표기 : 컴포넌트 클래스와 전체 클래스를 선으로 잇고, 빈 마름모꼴을 전체 클래스 쪽에 붙여서 나타냅니다.

복합연관(Composition)


강한 집합연관으로써 각 컴포넌트 클래스가 오직 하나의 전체 클래스에서만 의미를 가질때, 복합연관으로 표현 합니다. 

표기 : 각각의 컴포넌트는 전체 클래스 쪽으로 향하여 안이 채워진 마름모 꼴의 화살표로 연결합니다. 


인터페이스와 실체화


- 어떤 클래스들이 동일한 Super Class와 관계를 가지지 않았는데, 같은 시그니처를 가진 Operation이 존재한다면 이것은 Operation의 재사용으로 간주 됩니다. 이런 재사용을 위한 Operation 의 집합을 인터페이스라고 합니다.


- 인터페이스는 클래스의 일정한 행동을 나타내는 Operation의 집합으로, 다른 클래스에서 사용될 수 있습니다. 자바에서 인터페이스는 method의 prototype 만 선언되어 있고, 인터페이스를 구현(Implementation)한 클래스에서 method를 정의합니다. 이것을 UML에서는 실체화(realization) 라고 합니다. 


가시성(Visibility)

-> 해당 클래스(혹은 인터페이스)의 속성과 오퍼레이션을 들여다 볼 수 있는 범위를 말합니다. 


표기 : 자바기준 

"+"  public : 모든 클래스에서 접근가능

"#"  protected : Package member Class와 Sub Class만 접근가능

"-"  private : member Operation만 접근가능

none : Package member Class만 접근가능 



* 위 자료는 백석대학교 이승형 교수님의 "소프트웨어 공학" 자료를 참고하였습니다. 

일단 티스토리에서 코딩 작성할때 


1. 글 쓰기 모드에서 HTML 작성 버튼을 클릭한다. 


2. 다음과 같이 입력한다.

<pre class="brush: python">

</pre>


만약 c#을 사용한다면 python 대신 csharp


이미 언어는 설치를 다 해놨기 때문에


3. <pre class="brush: csharp"> 

  print("Hello World")

</pre>


4. 코드를 작성한 후 미리보기를 통해서 한번 확인 해볼것.


* 결론. 

<pre> 태그 안에만 잘 작성하면 작성후 코딩창 형식으로 보여짐.




'POLITIC CODING' 카테고리의 다른 글

티스토리 코딩 작성 방법  (0) 2018.04.08

대디스랩 

 자신이 알고 있는 지식을 컴퓨터와 연결을 연결시킬수 있어야 한다. 프로그래머가 되라고 하는 것은 아니다. 송영광 하나는 소프트웨어 중심사회로 갈것이고, 제조업의 혁명이 일어날 것이다. 자신의 아이디어를 구현화 하고 상품화는 것을 구현하는 것을 도와준다. 그것을 자신이 아는 그 반응을 보고 기업가 정신을 함양하는것이 목표입니다. 


무엇이 최종적인 목표일까 ?

작고 건강한 일, 자기가 만들어 팔게 하고 싶다. 


소프트웨어를 다루는 능력은 컴퓨터가 말하는 능력이다. 


- 코딩교육은 4차 산업혁명을 앞두고 학생들은 문제 해결능력, 창의, 융합력, 또래들과의 협력등을 종합적으로 기를 수 있어 필수 교육과정으로 꼽히고 있다. 

코딩 연구학교, 선도학교, 중점학교 65곳을 지정해 코딩 교육의 수업모델과 학습자료를 개발하는데 주력했다. 


내년부터 코딩교육이 본격시행되지만 학생들을 가르칠 전문성을 갖춘 교사 수가 절대적으로 부족하다는것이 문제이다. 4차 산업 혁명을 앞두고 창의성을 키우고 자기 주도적으로 학습할 수 있는 코딩 교뉵도입이 필요하지만, 자칫 단순암기로 흘러가지 않도록 경계해야 한다. 


코딩 사교육 현장

내 후년인 2019년 부터 초등학교 5학년 ~ 6학년 까지 SW교육 의무화 대상이 된다. 


코딩교육 의무화 앞둔 사교육 현장

http://www.kinews.net/news/articleView.html?idxno=114519


사고력과 창의력을 위한 도구로 사용한다. SW 코딩학원은 선택하기 위해서는 해당 학원이 자체 개발한 커리큘럼이나 교재 등 콘텐츠가 존재하는지 확인해야 한다. 라며 SW 코딩 교육은 텍스트 프로그래밍 언어를 배워 직접 프로그램을 개발하는데 목적이 있는것이 아니기 때문에, 이런 학원들은 한번쯤 고민해봐야 한다. 고 입을 모아 이야기 했다. 


당장 내년의 코딩 교육의 실행체계가 여전히 미비하다는 점이다. 우선 관련 과목을 가르칠 교원 수와 전문성이 절대적으로 부족하다는 점이다. 




10년 넘게 프로그래머로 일을 해오고 있지만 최근 직업적 미래에 대해 불안하다. 10~15년 뒤까지는 프로그래머로 계속 일을 할 수 있겠지만 걱정이 다가오고 있다. 최신 프로그램 언어를 계속 배우고 있지만 기술 발달이 너무 빨라 따라잡는 것이 불가능해 보인다. 


 미래를 위한 소프트웨어 교육은 학생들에게 새로운 컴퓨터 언어와 코딩 기술을 가르치는 것이 아니라, 학생들이 실제로 무엇인가를 만들어 보고 경험을 통해 도구를 자기 의도대로 조작하는 법을 통해 스스로 학습의 동기를 갖도록 하는게 목적이 되어야 한다. 코딩 교육은 소프트웨어 개발보다는 편리하고 강력한 도구를 내가 원하는 방식으로 활용할 수 있다는 것을 만나게 해주는 체험학습이어야 한다. 개발도구는 점점 더 편리해질것이기 때문에 기능 중심 교육이 아니라 학생들 스스로 학습과 체험의 주체가 되도록 재미와 동기를 만나게 해주어야 한다. 코딩을 소프트웨어 개발을 위한 도구가 아니라, 디지털 시대에 각자가 관심있는 분야를 더 깊이 탐구하고 체험하기 위한 소통언어로 바라보는게 필요하다. 








오늘도 나는 회사에 출근했다.


오전 8시 40분 사무실 도착.
쓰레기통은 꽉차있고 컵은  환경때문에 종이컵을 쓰지않아 쓰고 난 플라스틱 컵이 산처럼 쌓여있다. 사무실 창문을 열어 환기를 시키고 쓰레기를 버리는 것부터 하루를 시작한다. 컵을 씻으러 세면대에 갔지만 찬물만 나온다. 물이 너무 차가워 손이 아플 지경이지만 어쩔 수 없다. 손을 호호 불어가며 컵을 씻고 나오면 커피를 내려놓는다. 김막내의 직장상사는 인스턴트 커피는 마시지 않는다..아차, 생수 물버리는 통의 물을 버리지 않았다. 화장실에 가서 물이 버려진 통을 버리고 와서야 내 자리에 앉는다.

그러고 나면, 미리 켜놓은 컴퓨터를 로그인 한 뒤 메일과 업무를 확인한다. 내가 해야할 일에 우선순위를 적어놓고 일을 하려는 찰나 "김막내씨" 누군가 나를 부른다. 상사다. "회의~" 나는 대답한다. "네!" 그러면 내 노트와 펜을 챙기고 회의에 필요한 것들을 세팅한다. 회의가 시작되면 중요한 안건들을 받아적기 바쁘다. 그런데 회의가 끝나면 이상하게도 내용이 별로 없다. 이상하다. 회의는 1시간 37분동안 했는데 왜 정작 내용이 없지. 그래도 회의록을 정리해서 공유한다. 그러면 어느새 점심시간이 다가온다. 일은 오후부터 해야겠다. 점심을 먹으러 간다.

낮 12시 13분 식당. 그다지 할 말이 없다. 묵묵히 먹거나 간간히 누가 이야기하면 리액션하고 웃는다. 상사가 밥먹는 속도에 맞추다보니 원래 내가 밥먹는 속도보다 빨라졌다.

오후 1시 4분 사무실. 양치질을 하고 앉아 다시 내가 해야할 일들을 시작한다. 갑자기 상사가 다가와 나한테 휴대폰 기능을 이것저것 물어보신다. 이걸 왜 모르지. 답답하다가도 그래 나랑 나이가 같은 자식이 있다그러셨지 생각하며 차근차근 알려드린다. 그러고 나면, 일은 다 처리됐느냐 어떻게 되어가느냐 물어보신다. 빨리 오늘까지 마무리지으라고 하신다. 일할 시간을 주셔야 일을 하죠라고 생각은 하지만 내뱉진 않는다.

"요즘 애들은 따박따박 말대꾸나 하고 말이야. 아주 무슨 말을 못하겠어."

헐ㅊ. 내가 나도 모르게 입밖으로 내 생각을 말했나. 놀라 쳐다보니 자리로 돌아간 상사한테 다른 팀원이 욕먹고 있다. 상사가 무슨 말을 했는데 거기에 대답을 했나보다. 저 사람도 참, 욕먹을 거 뻔히 알면서 왜 그랬담. 이라고 말하지만 이해한다. '욱'한다. 정말 가끔 말같지도 않은 말을 할 때면..아니, 그리고 내 생각을 그냥 말하는건데 왜 뭐라고 하는거야. 아오..내가 당한게 생각나 화나지만 다시 삼킨다.

어딘가에서 이런 이야기를 본 적이 있다. '남을 바꿀 수 없지만 나는 바꿀 수 있다.' 어느정도 동의한다. 그래. 직장상사를 바꿀 수는 없지. 그냥 저런 사람인데 어쩌겠어라고 하다가도 억울하다. 저 사람은 내가 힘들어 하든 말든 속편히 지내는데 나만 이 사람을 이해하려는 것 같아서. 나만 노력하는 것 같아서..아, 애초에 이런 걸 기대하는 내가 잘못된건가. 이제는 뭐가 뭔지 모르겠다. 까라면 까라는 식의 생활. 솔직히 어렵다..


1인칭 직장인 시점.
* 실화를 바탕으로 각색한 내용입니다.:-)


오늘은 직장인 인터뷰라기 보다는 직장에 다니는 친구들과 이야기를 하면서 자연스럽게 나온 이야기들입니다.

잡담 대상자 : 남자2, 여자2


1, 성희롱을 당한적이 있는 친구의 이야기

 회사가 역에서 조금 떨어진곳에 있는데 항상 차를 태워주는 남자 상사가 있었다고 합니다. 그 남자 상사는 결혼도 했고 애도 있는 사람이였음에도 불구하고, 20대였던 친구에게 이렇게 이야기 했다고 합니다. '카풀비는 뽀뽀로 받을게' 당시 차도 없었고 매일 같이 빌려타던 입장으로써 적극적인 표현은 하지 못하였고, 그냥 웃고 넘어갔다고 합니다. 하지만 그 이후 부터 노골적으로 '시간되면 여행한번 가자', '우리 와이프도 남자친구가 있는데, 나도 여자친구를 만들고 싶다'라는 이야기를 했다고 하네요.  이후에 부서가 바뀌는 바람에 회사 내에서 따로 조치는 취하지 않았지만 아마 그 사람은 '미투' 운동에 대해서 이야기를 하면 찔리는 곳이 많을 것 같다는 이야기였습니다. 


2. 회사 내 회식 분위기

 약 4명의 사람들이 모여서 회사의 회식문화에 대해서 이야기를 하였습니다. 혹시 금요일 저녁에 회식을 하는 회사가 있냐? 라는 질문에 최근에는 금요일 저녁에 회식을 잡는 문화는 없다고 답변을 하였습니다. 그 중 한분의 회사는 저녁 회식문화를 모두 없애라고 위에서 지시가 내려왔고, 최근엔 점심 회식을 하는 문화로 변하고 있다고 합니다. 또 다른 한분의 회사는 금요일 저녁이 아니라 목요일 저녁에 주로 회식을 한다고 합니다. 회사상사들도 금요일 저녁에 회식을 잡는것은 서로 원치 않아하는것 같아보인다고 하네요. 


3. 회사 상사의 좋은 예

 한 중소기업의 직장을 다니고 있는 A양은 회식을 할때마다 회사 상무에게 모욕적인 말을 들었다고 합니다. 하지만 이것을 본 부장이 상무가 참석하는 회식에는 A양에게 굳이 참석할 필요는 없으니 퇴근하라고 이야기를 한 뒤, 상무와 직접적인 부딪힘이 없도록 현재도 배려를 해주고 있다고 합니다. 




좋은것만 배웁시다.