SlideShare une entreprise Scribd logo
1  sur  7
I. Đặt vấn đề
Một sơ đồ lớp trong UML không thể cung cấp đầy đủ thông tin, các rằng,
quan hệ giữa các class trong sơ đồ lớp. Mặt khác những thông tin này lại
rất thường gặp trong tự nhiên. Để làm rõ việc mô tả này OCL đã được
phát triển, OCL được phát triển bởi IBM và có nguồn gốc từ phương
pháp Syntropy.
II. OCL được dùng như thế nào?
OCL có thể được sử dụng như sau:
1. Sử dụng như một ngôn ngữ truy vấn.
2. Dùng để xác định tính bất biến trên class và kiểu trong mô hình class.
3. Xác định tính bất biến cho khuôn mẫu
4. Mô tả điều kiện trước, điều kiện sau của mỗi toán tử, và phương thức
5. Mô tả các rằng buộc của toán tử
6. Xác định quy tắc cho các thuộc tính với bất kỳ biểu hiện trên mô hình
UML
III. OCL
Từ khóa “context”
IV. Mối quan hệ với UML
1. Self
Mỗi biểu OCl được viết trong bối cảnh của một thể hiện của một loại hình cụ thể.
Trong một biểu thức OCL, tự từ dành riêng được sử dụng để tham khảo các ví dụ
theo ngữ cảnh. Ví dụ, nếu bối cảnh là Công ty, sau đó tự đề cập đến một thể hiện
của Công ty.
2. Xác định bối cảnh UML
Bối cảnh của một biểu thức OCl trong một mô hình UML có thể được xác định
thông qua một tuyên bố bối cảnh cái gọi là đầu của một biểu thức OCL. Việc kê
khai bối cảnh những khó khăn trong các phần sau đây được hiển thị.
Nếu hạn chế được hiển thị trong một sơ đồ, với khuôn mẫu thích hợp và những
đường đứt nét để kết nối nó với yếu tố ngữ cảnh của nó, không có nhu cầu cho một
tuyên bố rõ ràng trong bối cảnh sự thử thách của sự hạn chế. Việc kê khai bối cảnh
là tùy chọn.
3. Invariants
Biểu thức OCL có thể là một phần của bất biến mà là một chế rập khuôn như một
«bất biến». Khi bất biến được liên kết với một phân loại, sau này được gọi là một
"loại" trong chương này. Một biểu OCl là một bất biến của các loại và phải đúng
cho tất cả các trường hợp của loại bất cứ lúc nào. (Lưu ý rằng tất cả các biểu OCl
rằng tốc bất biến là loại Boolean.)
Ví dụ, nếu trong bối cảnh của các loại công ty trong hình 1 ở trang 7, biểu thức sau
đây sẽ chỉ định một bất biến mà số lượng nhân viên phải luôn luôn vượt quá 50:
self.numberOfEmployees> 50
nơi tự là một thể hiện của loại công ty. (Chúng tôi có thể xem tự như các đối tượng
từ nơi chúng tôi bắt đầu đánh giá biểu thức.) Bất biến này giữ cho tất cả các thể
hiện của các loại Công ty.
Các loại ví dụ theo ngữ cảnh của một biểu thức OCL, mà là một phần của bất biến,
được viết với từ khóa bối cảnh, theo sau là tên của các loại như sau. Nhãn inv:
tuyên bố hạn chế là một «bất biến» hạn chế.
Công ty bối cảnh inv:
self.numberOfEmployees> 50
Trong hầu hết các trường hợp, tự từ khóa có thể được giảm xuống bởi vì bối cảnh
là rõ ràng, như trong ví dụ trên. Như một sự thay thế cho tự, một tên khác nhau có
thể được xác định chơi một phần của tự:
bối cảnh c: Công ty inv:
c.numberOfEmployees> 50
Bất biến này là tương đương với trước đó.
Tùy chọn, tên của các hạn chế có thể được viết sau từ khóa inv, cho phép hạn chế
được tham chiếu bởi tên. Trong ví dụ sau tên của ràng buộc là enoughEmployees.
Trong 1,4 metamodel UML, tên này là một (meta-) thuộc tính của chế metaclass
được thừa hưởng từ ModelElement.
bối cảnh c: Công ty enoughEmployees inv:
c.numberOfEmployees> 50
4. Pre-and Posconditions
Biểu thức OCL có thể là một phần của Điều kiện tiên quyết hoặc hậu, tương ứng
với «điều kiện tiên quyết» và «hậu» khuôn mẫu của chế liên quan đến một hoạt
động hoặc tính năng hành vi khác. Trường hợp tự theo ngữ cảnh sau đó là một thể
hiện của loại công ty sở hữu các hoạt động hoặc các phương pháp như một tính
năng. Việc kê khai trong bối cảnh OCl sử dụng từ khóa bối cảnh, tiếp theo là các
loại và khai hoạt động. Khuôn mẫu của ràng buộc được thể hiện bằng cách đặt các
nhãn
'trước:' và 'bài:' trước các điều kiện tiên quyết và hậu thực tế
bối cảnh typename :: operationName (param1: Type1, ...): ReturnType
trước: param1> ...
bài: kết quả = ...
Tên tự có thể được sử dụng trong biểu thức đề cập đến đối tượng mà hoạt động
được gọi là. Kết quả từ dành riêng biểu thị kết quả của các hoạt động, nếu có. Tên
của các thông số (param1) cũng có thể được sử dụng trong biểu thức OCL. Trong
sơ đồ ví dụ, chúng ta có thể viết:
bối cảnh người thu nhập :: (d: ngày): Integer
bài: kết quả = 5000
Tùy chọn, tên của các điều kiện tiên quyết hoặc hậu có thể được viết sau từ khóa
trước hay sau, cho phép hạn chế được tham chiếu bởi tên. Trong ví dụ sau tên của
các điều kiện tiên quyết là parameterOk và tên của hậu là resultOk. Trong
metamodel UML, các tên này là các giá trị của các tên thuộc tính của chế
metaclass được thừa hưởng từ ModelElement.
bối cảnh typename :: operationName (param1: Type1, ...): ReturnType
trước parameterOk: param1> ...
gửi resultOk: kết quả = ...
5. Ngữ cảnh Package
Việc kê khai bối cảnh trên là đủ chính xác khi gói trong đó phân loại thuộc là rõ
ràng từ môi trường. Xác định rõ ràng trong gói bất biến, hạn chế trước hoặc hậu
thuộc, những khó khăn này có thể được đính kèm giữa 'gói' và báo cáo
'endpackage. Các báo cáo gói có cú pháp:
gói trọn gói :: SubPackage
bối cảnh X inv:
... một số bất biến ...
bối cảnh X :: operationName (..)
trước: ... một số điều kiện tiên quyết ... endpackage
Một tập tin OCl (hoặc dòng) có thể chứa bất kỳ báo cáo gói số, do đó cho phép tất
cả các bất biến, điều kiện tiên quyết và
hậu được viết và được lưu trữ trong một tập tin. Tập tin này có thể cùng tồn tại với
một mô hình UML như một thực thể riêng biệt.
6. Toán tử Body
Một biểu OCl có thể được sử dụng để chỉ ra kết quả của một truy vấn hoạt động.
Điều này có thể được thực hiện bằng cách sử dụng cú pháp sau:
Context Typename :: operationName (param1: Type1, ...): ReturnType
body: - một số biểu hiện
Biểu thức phải phù hợp với các loại kết quả của hoạt động. Giống như trong hậu
trước và sau, các thông số có thể được sử dụng trong biểu thức. Trước, và hậu, và
nét cơ thể có thể được pha trộn với nhau sau một bối cảnh hoạt động. Ví dụ:
Context Person::getCurrentSpouse() : Person
pre
: self.isMarried = true
body: self.mariages->select( m | m.ended = false ).spouse
7. Khởi tạo giá trị, giá trị mặc định
Một biểu OCl có thể được sử dụng để chỉ ra giá trị ban đầu hoặc có nguồn
gốc từ của một thuộc tính hoặc kết thúc hiệp hội. Điều này có thể được thực
hiện bằng cách sử dụng cú pháp sau:
context Typename::attributeName: Type
init: -- some expression representing the initial value
context Typename::assocRoleName: Type
derive
: -- some expression representing the derivation rule
Biểu thức phải phù hợp với các loại kết quả của thuộc tính. Trong trường
hợp bối cảnh là một kết thúc hiệp hội biểu hiện phải phù hợp với phân loại
ở cuối đó khi sự đa dạng nhất một, hoặc Set hoặc OrderedSet khi đa có thể
có nhiều hơn một. Biểu thức ban đầu, và các dẫn xuất có thể được pha trộn
với nhau sau một tình huống. Ví dụ:
context Person::income : Integer
init: parents.income->sum() * 1% -- pocket allowance
derive
: if underAge
then parents.income->sum() * 1% -- pocket allowance
else job.salary -- income from regular job
endif
b. Kiểu và giá trị trong OCL
Bất kỳ biểu hiện OCl có thể được sử dụng như giá trị cho một thuộc tính của các biểu
thức metaclass UML hoặc một trong các phân nhóm của nó. Trong trường hợp đó, phần
ngữ nghĩa mô tả ý nghĩa của biểu thức. Một phân lớp đặc biệt biểu hiện, được gọi là
ExpressionInOcl được sử dụng cho mục đích này.

Contenu connexe

Similaire à Ocl

Core java 3
Core java 3Core java 3
Core java 3
. .
 
T+¦¦ëng h¦í¦úp uml
T+¦¦ëng h¦í¦úp umlT+¦¦ëng h¦í¦úp uml
T+¦¦ëng h¦í¦úp uml
lam lythanh
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
Huy Nguyễn
 
Giáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thptGiáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thpt
Tâm Phan
 

Similaire à Ocl (18)

Ltc 6
Ltc 6Ltc 6
Ltc 6
 
Chuong 07 lop
Chuong 07 lopChuong 07 lop
Chuong 07 lop
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàm
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++
 
Note4_ThucHanh.pdf
Note4_ThucHanh.pdfNote4_ThucHanh.pdf
Note4_ThucHanh.pdf
 
Chuong 08 tai dinh nghia
Chuong 08 tai dinh nghiaChuong 08 tai dinh nghia
Chuong 08 tai dinh nghia
 
Core java 3
Core java 3Core java 3
Core java 3
 
Ngon ngu c theo chuan ansi
Ngon ngu c theo chuan ansiNgon ngu c theo chuan ansi
Ngon ngu c theo chuan ansi
 
T+¦¦ëng h¦í¦úp uml
T+¦¦ëng h¦í¦úp umlT+¦¦ëng h¦í¦úp uml
T+¦¦ëng h¦í¦úp uml
 
Chuong 01
Chuong 01Chuong 01
Chuong 01
 
Chuong 01 mo dau
Chuong 01 mo dauChuong 01 mo dau
Chuong 01 mo dau
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Restricted Boltzmann Machines (RBMs)
Restricted Boltzmann Machines (RBMs)Restricted Boltzmann Machines (RBMs)
Restricted Boltzmann Machines (RBMs)
 
Giáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thptGiáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thpt
 
C9 templates
C9 templatesC9 templates
C9 templates
 
C9 templates
C9 templatesC9 templates
C9 templates
 

Ocl

  • 1. I. Đặt vấn đề Một sơ đồ lớp trong UML không thể cung cấp đầy đủ thông tin, các rằng, quan hệ giữa các class trong sơ đồ lớp. Mặt khác những thông tin này lại rất thường gặp trong tự nhiên. Để làm rõ việc mô tả này OCL đã được phát triển, OCL được phát triển bởi IBM và có nguồn gốc từ phương pháp Syntropy. II. OCL được dùng như thế nào? OCL có thể được sử dụng như sau: 1. Sử dụng như một ngôn ngữ truy vấn. 2. Dùng để xác định tính bất biến trên class và kiểu trong mô hình class. 3. Xác định tính bất biến cho khuôn mẫu 4. Mô tả điều kiện trước, điều kiện sau của mỗi toán tử, và phương thức 5. Mô tả các rằng buộc của toán tử 6. Xác định quy tắc cho các thuộc tính với bất kỳ biểu hiện trên mô hình UML III. OCL Từ khóa “context” IV. Mối quan hệ với UML 1. Self Mỗi biểu OCl được viết trong bối cảnh của một thể hiện của một loại hình cụ thể. Trong một biểu thức OCL, tự từ dành riêng được sử dụng để tham khảo các ví dụ theo ngữ cảnh. Ví dụ, nếu bối cảnh là Công ty, sau đó tự đề cập đến một thể hiện của Công ty. 2. Xác định bối cảnh UML Bối cảnh của một biểu thức OCl trong một mô hình UML có thể được xác định thông qua một tuyên bố bối cảnh cái gọi là đầu của một biểu thức OCL. Việc kê khai bối cảnh những khó khăn trong các phần sau đây được hiển thị. Nếu hạn chế được hiển thị trong một sơ đồ, với khuôn mẫu thích hợp và những đường đứt nét để kết nối nó với yếu tố ngữ cảnh của nó, không có nhu cầu cho một
  • 2. tuyên bố rõ ràng trong bối cảnh sự thử thách của sự hạn chế. Việc kê khai bối cảnh là tùy chọn. 3. Invariants Biểu thức OCL có thể là một phần của bất biến mà là một chế rập khuôn như một «bất biến». Khi bất biến được liên kết với một phân loại, sau này được gọi là một "loại" trong chương này. Một biểu OCl là một bất biến của các loại và phải đúng cho tất cả các trường hợp của loại bất cứ lúc nào. (Lưu ý rằng tất cả các biểu OCl rằng tốc bất biến là loại Boolean.) Ví dụ, nếu trong bối cảnh của các loại công ty trong hình 1 ở trang 7, biểu thức sau đây sẽ chỉ định một bất biến mà số lượng nhân viên phải luôn luôn vượt quá 50: self.numberOfEmployees> 50 nơi tự là một thể hiện của loại công ty. (Chúng tôi có thể xem tự như các đối tượng từ nơi chúng tôi bắt đầu đánh giá biểu thức.) Bất biến này giữ cho tất cả các thể hiện của các loại Công ty. Các loại ví dụ theo ngữ cảnh của một biểu thức OCL, mà là một phần của bất biến, được viết với từ khóa bối cảnh, theo sau là tên của các loại như sau. Nhãn inv: tuyên bố hạn chế là một «bất biến» hạn chế. Công ty bối cảnh inv: self.numberOfEmployees> 50
  • 3. Trong hầu hết các trường hợp, tự từ khóa có thể được giảm xuống bởi vì bối cảnh là rõ ràng, như trong ví dụ trên. Như một sự thay thế cho tự, một tên khác nhau có thể được xác định chơi một phần của tự: bối cảnh c: Công ty inv: c.numberOfEmployees> 50 Bất biến này là tương đương với trước đó. Tùy chọn, tên của các hạn chế có thể được viết sau từ khóa inv, cho phép hạn chế được tham chiếu bởi tên. Trong ví dụ sau tên của ràng buộc là enoughEmployees. Trong 1,4 metamodel UML, tên này là một (meta-) thuộc tính của chế metaclass được thừa hưởng từ ModelElement. bối cảnh c: Công ty enoughEmployees inv: c.numberOfEmployees> 50 4. Pre-and Posconditions Biểu thức OCL có thể là một phần của Điều kiện tiên quyết hoặc hậu, tương ứng với «điều kiện tiên quyết» và «hậu» khuôn mẫu của chế liên quan đến một hoạt động hoặc tính năng hành vi khác. Trường hợp tự theo ngữ cảnh sau đó là một thể hiện của loại công ty sở hữu các hoạt động hoặc các phương pháp như một tính năng. Việc kê khai trong bối cảnh OCl sử dụng từ khóa bối cảnh, tiếp theo là các loại và khai hoạt động. Khuôn mẫu của ràng buộc được thể hiện bằng cách đặt các nhãn 'trước:' và 'bài:' trước các điều kiện tiên quyết và hậu thực tế bối cảnh typename :: operationName (param1: Type1, ...): ReturnType
  • 4. trước: param1> ... bài: kết quả = ... Tên tự có thể được sử dụng trong biểu thức đề cập đến đối tượng mà hoạt động được gọi là. Kết quả từ dành riêng biểu thị kết quả của các hoạt động, nếu có. Tên của các thông số (param1) cũng có thể được sử dụng trong biểu thức OCL. Trong sơ đồ ví dụ, chúng ta có thể viết: bối cảnh người thu nhập :: (d: ngày): Integer bài: kết quả = 5000 Tùy chọn, tên của các điều kiện tiên quyết hoặc hậu có thể được viết sau từ khóa trước hay sau, cho phép hạn chế được tham chiếu bởi tên. Trong ví dụ sau tên của các điều kiện tiên quyết là parameterOk và tên của hậu là resultOk. Trong metamodel UML, các tên này là các giá trị của các tên thuộc tính của chế metaclass được thừa hưởng từ ModelElement. bối cảnh typename :: operationName (param1: Type1, ...): ReturnType trước parameterOk: param1> ... gửi resultOk: kết quả = ... 5. Ngữ cảnh Package
  • 5. Việc kê khai bối cảnh trên là đủ chính xác khi gói trong đó phân loại thuộc là rõ ràng từ môi trường. Xác định rõ ràng trong gói bất biến, hạn chế trước hoặc hậu thuộc, những khó khăn này có thể được đính kèm giữa 'gói' và báo cáo 'endpackage. Các báo cáo gói có cú pháp: gói trọn gói :: SubPackage bối cảnh X inv: ... một số bất biến ... bối cảnh X :: operationName (..) trước: ... một số điều kiện tiên quyết ... endpackage Một tập tin OCl (hoặc dòng) có thể chứa bất kỳ báo cáo gói số, do đó cho phép tất cả các bất biến, điều kiện tiên quyết và hậu được viết và được lưu trữ trong một tập tin. Tập tin này có thể cùng tồn tại với một mô hình UML như một thực thể riêng biệt. 6. Toán tử Body Một biểu OCl có thể được sử dụng để chỉ ra kết quả của một truy vấn hoạt động. Điều này có thể được thực hiện bằng cách sử dụng cú pháp sau: Context Typename :: operationName (param1: Type1, ...): ReturnType body: - một số biểu hiện
  • 6. Biểu thức phải phù hợp với các loại kết quả của hoạt động. Giống như trong hậu trước và sau, các thông số có thể được sử dụng trong biểu thức. Trước, và hậu, và nét cơ thể có thể được pha trộn với nhau sau một bối cảnh hoạt động. Ví dụ: Context Person::getCurrentSpouse() : Person pre : self.isMarried = true body: self.mariages->select( m | m.ended = false ).spouse 7. Khởi tạo giá trị, giá trị mặc định Một biểu OCl có thể được sử dụng để chỉ ra giá trị ban đầu hoặc có nguồn gốc từ của một thuộc tính hoặc kết thúc hiệp hội. Điều này có thể được thực hiện bằng cách sử dụng cú pháp sau: context Typename::attributeName: Type init: -- some expression representing the initial value context Typename::assocRoleName: Type derive : -- some expression representing the derivation rule Biểu thức phải phù hợp với các loại kết quả của thuộc tính. Trong trường hợp bối cảnh là một kết thúc hiệp hội biểu hiện phải phù hợp với phân loại ở cuối đó khi sự đa dạng nhất một, hoặc Set hoặc OrderedSet khi đa có thể có nhiều hơn một. Biểu thức ban đầu, và các dẫn xuất có thể được pha trộn với nhau sau một tình huống. Ví dụ: context Person::income : Integer init: parents.income->sum() * 1% -- pocket allowance derive : if underAge then parents.income->sum() * 1% -- pocket allowance else job.salary -- income from regular job endif
  • 7. b. Kiểu và giá trị trong OCL Bất kỳ biểu hiện OCl có thể được sử dụng như giá trị cho một thuộc tính của các biểu thức metaclass UML hoặc một trong các phân nhóm của nó. Trong trường hợp đó, phần ngữ nghĩa mô tả ý nghĩa của biểu thức. Một phân lớp đặc biệt biểu hiện, được gọi là ExpressionInOcl được sử dụng cho mục đích này.