添付のクラス図で、ローンを要求する人の年齢が 18 歳以上であることを示す不変条件を定義する必要がある場合、これは次のようになります。
context Person
inv: age > 18
また
context Person
inv: self.age > 18
2つの違いは何ですか?
ご指導ありがとうございました
添付のクラス図で、ローンを要求する人の年齢が 18 歳以上であることを示す不変条件を定義する必要がある場合、これは次のようになります。
context Person
inv: age > 18
また
context Person
inv: self.age > 18
2つの違いは何ですか?
ご指導ありがとうございました
ジョルディがすでに言ったように、それらは意味的に同等です。最初のものにはself
暗黙的に含まれます。
彼が言及したように、あなたの OCL 不変条件は、あなたが提供したテキスト表現と一致しません。あなたの不変条件では、人々は 18 歳以上でなければなりません。しかし、負荷の所有者は 18 歳以上でなければなりませんLoan
。
context Loan
inv: owner.age > 18
これには暗黙の自己も含まれているため、2 番目は最初のものと意味的に同等です。
context Loan
inv: self.owner.age > 18
あなたの例の両方の不変条件はまったく同じです(最初の「自己」は暗黙的です)。それにもかかわらず、すべての「人」オブジェクトは少なくとも18歳の値を持っている必要があると言っていますが、これはあなたが説明した不変条件ではありません(あなたの不変条件では、システムに18歳未満の人がいる可能性があるように見えました.ただ、18 歳未満の人はローンに関連付けることができませんでした)