객체지향개발론 (7)

Jay_u·2022년 12월 9일
0

객체지향개발

목록 보기
9/11

분석 단계

분석단계는 요구사항, 개념, 시스템 작동에 대한 이해를 강조한다.

분석단계에서 산출물
유스케이스 - 도메인 프로세스는 뭔지, 기능적 요구사항이 뭔지
도메인 모델 - problem 도메인과 관련된 개념, 용어는 뭔지
시스템 시퀀스 다이어그램 - 시스템 이벤트와 작동은 뭔지
계약 - 시스템 작동이 되면 하는게 뭔지


설계 단계

설계 단계는 시스템이 요구 사항을 충족하는 방법에 대한 질문에 중점을 둡니다.
설계 단계에서는 객체(및 인터페이스)의 관점에서 논리적 솔루션을 강조합니다.
또한 여기서 다이어그램을 그린다.

Interaction diagrams(동적) - 객체가 통신하는 방법, 동적 측면
Class diagrams(정적) - 정적 객체 관계, 정적 측면

Interaction diagrams은
시퀀스 다이어그램과 커뮤니케이션 다이어그램이 있다.

시퀀스 다이어그램은 시간의 흐름에 집중하고
커뮤니케이션 다이어그램(Collaboration diagram이라고도 함)은 공간에 집중한다.


커뮤니케이션 다이어그램(Communication diagram)에 대해서

그냥 이름만 적히면 클래스
:클래스 이면 클래스로 만들어진 객체
객체이름:클랙스 이면 이름이 붙은 객체


Link 는 association과 같다. 실선임
특이점 시퀀스 다이어그램은 link를 보여주지 않는다. => 클래스간의 연관 관계 못봄


메세지 표기방법
메시지는 링크 위에 화살표를 통해서 표현됨
기본적으로 순서:메시지명() 이다.

커뮤니케이션 다이어그램은 작동 순서를 표현하기 위해 메시지 왼쪽에 숫자를 통해서 표기한다.
순서는 1, 1과 관련된 {1.1, 1.2, 1.3}, 2, 2와 관련된 {2.1, 2.2, 2.3}, 3, ~ 이런 식이다.

왜 n.1 n.2를 사용하냐면 그냥 1,2,3,4,5 이러면 순서 이해는 쉽지만 메세지를 보내고 생긴 인과관계에 대해서 파악하기 어렵기 때문이다.


객체 스스로 본인한테 메시지 보내는 것도 가능하다.

객체의 생성과 삭제를 표현하는 방법은
메시지 위에 << create >> << delete >> 라고 쓰면 된다.

파라미터와 리턴 타입의 표기법은 다음과 같다.

순서:함수명(변수명 : 파라미터 타입)
Money타입의 amount 를 파라미터로 보낼 땐 메시지 옆에 (amount: Money) 쓴다.

순서:받는 변수명:=실행함수() : 리턴타입
리턴 값은 tot에 Integer인 total() 실행 리턴 값을 받는다를 의미한다.


위 그림은 어떻게 해석할까?
2:transfer(targetAccount, amount) 는
transfer함수에 targetAccount와 amount에 대한 값을 보내는 것을 의미한다.
인출을 해야할 때 계좌번호와 액수라고 생각하면 된다.
하지만 인출하기 위한 잔액이 있는지 확인하기 위해 hasBalace에 amount를 파라미터로 실행하면
boolean 타입의 리턴값이 돌아온다.


조건 IF에 대한 표기법은 순서:[조건] 메시지명 이렇게 해서 보낸다.

그렇다면 if else 는 어떻게 표현할까?

주의해서 봐야할 점은 그냥 if문은 순서(숫자):[조건]메시지명 이지만
분기를 나눌 때는 순서(숫자+소문자알파벳):[조건]메시지명 이라는 것이다.
분기 다음 메시지도 소문자 알파벳을 반영하는 것을 위 그림을 통해 알 수 있다.


for, while과 같은 loop문은 어떻게 표현할까?

순서*[i:=1..n]:메시지명
i는 1부터 n까지 수행한다는 의미이다.

이때 만약 메시지를 받는 객체가 Collection에 속하는 배열같은 거라면 어떨까?

그래서 메시지가 배열속에 모든 애들한테 전달되어야 한다면?

원래 리턴 값은
순서:받는 변수명:=실행함수() : 변수타입
이런 식으로 작성했다. 하지만 위 그림에서 i가 n까지 돌 때 lineItems의 내용을 st로 가져오고 싶을 때

순서*[i=1..n]: 받는 변수명 = 실행함수 로 표현한다.

이건 뭐 딱히 정답이 없는 것 같다.

profile
정확한 정보를 전달할려고 노력합니다.

0개의 댓글