Chuyển các thành phần của lớp sang Alloy

Một phần của tài liệu LUẬN VĂN:CHUYỂN ĐỔI ĐẶC TẢ UML VỚI OCL SANG ĐẶC TẢ ALLOY doc (Trang 37 - 40)

Trong các phần 3.1.1, 3.1.2 và 3.1.3 chúng ta đã xem xét và đưa ra cách thức để biểu diễn quan hệ giữa các lớp trong biểu đồ lớp UML[1] sang biểu diễn trong Alloy[2], tuy nhiên các biểu đồ lớp ở trên mới chỉ chứa các lớp được mô tả ở mức khái niệm, các lớp không có thuộc tính, phương thức...Trong phần này sẽ đưa ra cách thức chuyển từng thành phần trong một lớp sang biểu diễn Alloy[2]. Ngoài ra cũng đưa ra cách thức chuyển các kiểu enum sang biểu diễn Alloy[2].

Lớp

Mỗi một lớp sẽ được khai báo thành một ký hiệu trong Alloy[2], lớp ảo sẽ được chuyển thành một ký hiệu ảo. Tên lớp chuyển thành tên ký hiệu tương ứng.

Hình 11. Chuyển lớp sang ký hiệu

Cú pháp biểu diễn ký hiệu : Bắt đầu với từ khóa sig (giống như bắt đầu với từ khóa class), tiếp đến là tên của class tương ứng trong lớp UML[1] . Biểu diễn class Student tương ứng với biểu diễn.

30

Các thuộc tính của lớp sẽ thành các trường được khai báo trong cặp “{}”.  Thuộc tính của lớp

Sau khi chuyển một lớp sang một ký hiệu, tiếp đến chúng ta chuyển các thuộc tính của lớp thành các trường trong ký hiệu trong cặp “{}” của ký hiệu tương ứng.

Mỗi thuộc tính trong lớp được biểu diễn trong biểu đồ UML[1] với cú pháp tên_thuộc _tính : kiểu_dữ_liệu

Tương đương như vậy trong Alloy[2] cũng sẽ là:

tên_trường (chính là tên thuộc tính của lớp) : kiểu_dữ_ liệu

Các trường trong Alloy[2] được phân cách nhau bởi dấu phẩy “,”.

Trong Alloy[2], chỉ hộ trợ 1 số kiểu dữ liệu nguyên thủy. Do vậy, đối với các kiểu dữ liệu của thuộc tính không nằm trong kiểu dữ liệu hỗ trợ của Alloy[2] thì chúng ta sẽ phải tự định nghĩa kiểu dữ liệu đó bằng cách chuyển kiểu dữ liệu đó thành một khai báo

ký hiệu.

Lớp với thuộc tính

Ví dụ trong hình vẽ trên lớp Student có thuộc tính birthday có kiểu dữ liệu Date

không được hộ trợ trong Alloy[2] thì chúng ta phải định nghĩa kiểu dữ liệu trên như dưới đây sig Date {day : Int,mont : Int, year : Int}

Các trường phân cách nhau bởi dấu phẩy. Và khi đó biểu diễn của lớp Student trong Alloy[2] sẽ đơn giản như sau : sig Student {birthDay : Date}

31  Phương thức của lớp

Trong biểu diễn lớp của UML[1], các phương thức được biểu diễn với cú pháp :

Kiểu_Trả_về Tên_Phương_thức [biến_1 : Kiểu_của_biến1, biến 2: Kiểu_biến2] {}

Kiểu trả về có thể là kiểu void, hoặc một kiểu bất kỳ nào đó, danh sách tham biến là tùy chọn tức là tồn tại các phương thức không có danh sách tham biến.

Đến đây chúng ta có 2 cách đều có thể lựa chọn, lựa chọn thứ nhất đối với các phương thức không trả về kết quả (trả về kiểu void) sẽ chuyển thành khai báo mệnh đề

trong Alloy[2], lựa chọn thứ hai chuyển các phương thức thành khai báo chức năng trong Alloy[2].

Với cả 2 lựa chọn thì tên phương thức chuyển thành tên mệnh đề hoặc chức năng

tùy theo lựa chọn. Danh sách các tham biến và kiểu của chúng được chuyển thành danh sách tham biến của mệnh đề hoặc chức năng tùy theo cách lựa chọn.

Như đã đề cập ở phần trước, Alloy[2] chỉ cung cấp một số kiểu dữ liệu là integer ..., do vậy với những kiểu của biến trong danh sách tham biến không nằm trong 2 kiểu của Alloy[2] thì sẽ cần khai báo kiểu của biến đó là một ký hiệu. Giả sử chúng ta có 1 class A với phương thức được khai báo như ở dưới.

void operation (para1 : Type1, para2 : Type2)

Trong phần trước chúng ta đã đề cấp cách chuyển lớp thành một ký hiệu, các thuộc tính thành các khai báo trường trong ký hiệu tương ứng, tuy nhiên vấn đề là trong khai báo ký hiệu không có khai báo mệnh đề hay chức năng, tất cả khai báo này nằm ngoài hiệu. Do đó khi khai báo mệnh đề hay chức năng phải chỉ rõ ký hiệu của nó. Với phương thức operation ở trên chúng ta sẽ chuyển như sau:

void operation (para1 : Type1, para2 : Type2) {}-> pred A::operation[para1: Type1, para2 : Type2] {}

Đối với phương thức có kết quả trả về

32

fun A::operation[para1 : Type1, para2 : Type2]:typeReturn {}

Ví dụ : Cho lớp Student với các đặc tả

Hình 12. Lớp với thuộc tính, phương thức và đặc tả OCL

Biểu diễn lớp tương ứng trong Alloy :

Một phần của tài liệu LUẬN VĂN:CHUYỂN ĐỔI ĐẶC TẢ UML VỚI OCL SANG ĐẶC TẢ ALLOY doc (Trang 37 - 40)

Tải bản đầy đủ (PDF)

(51 trang)