Ocl

705 views

Published on

  • Be the first to comment

  • Be the first to like this

Ocl

  1. 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ạirất thường gặp trong tự nhiên. Để làm rõ việc mô tả này OCL đã đượcphát triển, OCL được phát triển bởi IBM và có nguồn gốc từ phươngphá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ẫu4. Mô tả điều kiện trước, điều kiện sau của mỗi toán tử, và phương thức5. 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ìnhUMLIII. OCLTừ khóa “context”IV. Mối quan hệ với UML1. SelfMỗ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ệncủa Công ty.2. Xác định bối cảnh UMLBối cảnh của một biểu thức OCl trong một mô hình UML có thể được xác địnhthô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. 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ảnhlà tùy chọn.3. InvariantsBiể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 đúngcho 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 OClrằ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> 50nơ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ượngtừ 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. 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ảnhlà 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> 50Bấ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> 504. Pre-and PosconditionsBiể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 ứngvớ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ínhnă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ácloạ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ácnhãntrướ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. 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êncủa các thông số (param1) cũng có thể được sử dụng trong biểu thức OCL. Trongsơ đồ ví dụ, chúng ta có thể viết:bối cảnh người thu nhập :: (d: ngày): Integerbài: kết quả = 5000Tù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óatrước hay sau, cho phép hạn chế được tham chiếu bởi tên. Trong ví dụ sau tên củacác điều kiện tiên quyết là parameterOk và tên của hậu là resultOk. Trongmetamodel 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, ...): ReturnTypetrước parameterOk: param1> ...gửi resultOk: kết quả = ...5. Ngữ cảnh Package
  5. 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ậuthuộc, những khó khăn này có thể được đính kèm giữa gói và báo cáoendpackage. Các báo cáo gói có cú pháp:gói trọn gói :: SubPackagebố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 ... endpackageMộ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ấtcả 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ớimột mô hình UML như một thực thể riêng biệt.6. Toán tử BodyMộ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, ...): ReturnTypebody: - một số biểu hiện
  6. 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ậutrướ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() : Personpre: self.isMarried = truebody: self.mariages->select( m | m.ended = false ).spouse7. Khởi tạo giá trị, giá trị mặc địnhMột biểu OCl có thể được sử dụng để chỉ ra giá trị ban đầu hoặc có nguồngố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ựchiện bằng cách sử dụng cú pháp sau:context Typename::attributeName: Typeinit: -- some expression representing the initial valuecontext Typename::assocRoleName: Typederive: -- some expression representing the derivation ruleBiể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ườnghợ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ộnvới nhau sau một tình huống. Ví dụ:context Person::income : Integerinit: parents.income->sum() * 1% -- pocket allowancederive: if underAgethen parents.income->sum() * 1% -- pocket allowanceelse job.salary -- income from regular jobendif
  7. 7. b. Kiểu và giá trị trong OCLBấ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ểuthức metaclass UML hoặc một trong các phân nhóm của nó. Trong trường hợp đó, phầnngữ 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.

×