OCL (Object Constraint Language)

개념
- S/W 모듈에 제약사항을 정형적으로 나타내도록 설계된 명세언어

I. 객체지향 제약조건 기술위한, OCL 개요

가. OCL(Object Constraint Language)의 정의

-S/W 모듈에 제약사항을 정형적으로 나타내도록 설계된 명세언어

 

나. OCL의 필요성

-UML 만으로는 객체지향모델을 완전하게 기술할수 없음

-UML에서는 인스턴스 수준의 정보를 정확히 기술할수 없음

-“클래스 A의 속성 a는 항상 양의값을 갖는다”라는 제약은 클래스 다이어그램에서 정확히 표현할수 없다. 이경우, OCL를 사용하여 제약사항을 기술함으로써 모델을 보완할수 있음

 

 

II. OCL 제약사항의 표현

 계좌 클래스에 대해 출금(인출자, 금액) 이라는 조작을 정의

 인수를 2개 취하고 인출자가 어떤 사람 인스턴스로, 출금 금액이 얼마인지를 결정

 실행이 성공하기 위해서는 인수 [인출자]가 정당한 사람일것, 즉 이 계좌의 명의인임이 필요

 context 계좌::출금(인출자:사람, 금액:원):원                                 ß----------불변가설

 pre:인출자 = self.명의인 and self.잔고 + self.대출 한도액 >= 금액  ß----------선행가설

 post:self.잔고 = self.잔고 @ pre*금액 and result = 금액               ß----------후행가설

 

가.Invarient(불변식)

 

나.Precondition/ Postcondtion(선행조건/후행조건)

 

다. 주석

  •  ‘- -‘를 사용
  •  ex) context person inv;
  •  persons.age > 50 – 사람은 항상 50넘어야 한다.

 

라. 프로퍼트

  •  class나 연관등에 정의되어 있는 프로퍼트에 접근할 때 사용
  •  OCL에 미리정의 되어 있는 프로퍼티도 있다
  •  Ex) context Perons
  •  Inv: self.ocllsType(Person) – is True

 

마. 키워드

  •  context Person
  •  inv: self.ocllsType(Person) -- is True
  •  -> self는 person을 의미 ( this)와 같은개념

 

바. Collection Type

- 종류

  •  set: 수학의 집합에 해당, 중복허용 안함
  •  Bag: 집합, 중복허용
  •  Sequence: Bag과 같으나 원소들의 위치순서 중요,
  •  Collection 용 Operation (->)
  •  Select, reject, forAll, exists, size, includes, excludes, isEmpty, notEmpty, sum, includeing, excludeing, aSet, asBag, asSequence
  •  Ex) Collection Type->forAll(불린표현식)

 

 

 

댓글