Sự làm mịn, che dấu giao diện và kết hợp các thành phần

Một phần của tài liệu Xây dựng ngôn ngữ mẫu cho lập trình dựa trên thành phần (Trang 44)

Cho một thành phần P với các giao diện đầu vào và đầu ra là  và , chúng ta đã định nghĩa ngữ nghĩa [[ ]]P như một quan hệ hai ngôi giữa các dịch vụ đầu vào và các dịch vụ đầu ra, nghĩa là với một dịch vụ yêu cầu được cho C, chúng

ta sẽ có thể kiểm tra thành phần có thực hiện một dịch vụ cung cấp hay không. Rõ ràng, nếu với một dịch vụ yêu cầu được cho C thành phần P thực hiện một

dịch vụ cung cấp C, thì với bất kỳ dịch vụ yêu cầu '

C được làm mịn từ C, P

cũng sẽ thực hiện C. Theo cách vòng tròn, nếu P thực hiện C với C được

cho thì P thực hiện bất kỳ dịch vụ cung cấp nào C làm mịn. Điều này được hình thức hóa như định lý dưới đây.

Định lý 5: Cho PI, , ô ô là các quan hệ làm mịn giữa các hợp đồng của và giữa các hợp đồng của tương ứng. Khi đó ô  [[ ]]P ô[[ ]]P , ở đây ký hiệu mối quan hệ kết hợp.

Do đó, với bất kỳ dịch vụ yêu cầu '

C ô C, và dịch vụ cung cấp '

C ô C, thì ta

có: ' '

[[ ]](P C C, )[[ ]](P C C, ).

Một thành phần P1 là một sự làm mịn của một thành phần P nếu với bất kỳ dịch vụ yêu cầu nào được cho, P1 cung cấp nhiều hơn các dịch vụ làm mịn so với P. Như vậy, thành phần có thể được làm mịn theo như định nghĩa dưới đây.

Định nghĩa 9 (Làm mịn thành phần): Thành phần P1 được làm mịn bởi P2 (ký hiệu là PP2), nếu:

1. 12

2. 12

3. [[ ]]P1 [[ ]]P2

Định nghĩa 10 (Che dấu giao diện): Cho PC, ,   là một thành phần với

( : , , , , )

CIA PubM PriM  Init . Với một tập HI các giao diện, cho Meth HI( ) tập các phương thức trong HI. Ký hiệu P\HI biểu thị thành phần gỡ bỏ các phương thức định nghĩa bởi các giao diện của HI từ dịch vụ cung cấp của nó.

\ df \ , \ ,

P HI  C HIHI  , ở đây

\ df ( : , \ ( ), ( ) , , )

C HI  I A PubM Meth HI PriMHIPubM   Init

Ngữ nghĩa của P\HI được định nghĩa là:

'

[[ \P HI]]df [[ ]] (PC C \Meth HI( ))

Chúng ta có những công thức sau đây cho sự che dấu giao diện [9].

Định lý 6:

1. P\ P

2. P HI\ P\ (HI)

3. ( \P HI1) \HI2 P\ (HI1HI2)( \P HI2) \HI1

Bây giờ chúng ta đã sẵn sàng để định nghĩa các thành phần có thể được kết nối với nhau như thế nào để làm thành mạng các thành phần.

Định nghĩa 11 (Mạng các thành phần):

Cho Ci  ( Ii: A PubM PriMi, i, i  , i,Initi) là các hợp đồng, Pi Ci, , i i  (i 1, 2)

là hai thành phần. Giả sử rằng 12  12  .

Sự kết hợp P1||P2 được định nghĩa để hòa nhập các hợp đồng của chúng, các giao diện đầu ra và các giao diện đầu vào, và để gỡ bỏ các giao diện đầu vào này của mỗi thành phần được khớp bởi các giao diện đầu ra trong các thành phần khác:

1|| 2 df 1|| 2, 1 2, 1\ 2 2 \ 1

Cho  df  1\ 2 â  2\ 1 df 1â 2. Sự hành xử của mạng của C1 và C2 được định nghĩa bởi 1 1 2 2 1 1 2 2 1 2 2 1 1 2 1 ' ' ' 1 2 ' ' 1 2 ' 1 2 2 1 ' 2 1 1 2 1 2 2 1 ' ' 2 1 [[ || ]]( , ) , , , [[ ]]( , ) [[ ]]( , ) \ ( \ ) \ ( \ ) \ ( \ ) \ ( \ ) \ ( \ ) || \ ( \ ) \ ( \ ) || df P P C C C C C C P C C P C C C Meth C Meth C Meth C Meth C C Meth C Meth C C Meth C                                               2 ' 1 2 \Meth( \ )

Định nghĩa này cho phép một giao diện đầu ra, và do đó một phần của dịch vụ cung cấp của một thành phần, được chia sẻ giữa một số các thành phần khác. Sự che dấu giao diện có thể được sử dụng để làm cho một phần của một dịch vụ cung cấp thuộc một thành phần được sử dụng trong một thành phần khác:

1 2 1 1 2 2

CHƯƠNG 4. VÍ DỤ VỀ ĐẶC TẢ THÀNH PHẦN

Một phần của tài liệu Xây dựng ngôn ngữ mẫu cho lập trình dựa trên thành phần (Trang 44)

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

(57 trang)