Thông thường, kết quả tổng hợp của hợp nhất theme là sự hợp nhất của các mô hình cấu trúc và hành vi trong các theme input. Các mô hình class được hợp nhất vào một class đơn trong kết quả tổng hợp. Khi tổng hợp các mô hình class, các phần tử cấu trúc không được so khớp sẽ được thêm vào mô hình class tổng hợp. Các phần tử cấu trúc được so khớp sẽ xuất hiện chỉ một lần trong thiết kế. Các hoạt động được so khớp sẽ hợp nhất theo nghĩa: sự thi hành của một trong các hoạt động so khớp sẽ kích hoạt sự thi hành của tất cả hoạt động so khớp. Hình 4-2 minh họa kết quả của việc hợp nhất hai theme đơn giản.
40
Hình 4-2. Hợp nhất khái niệm so khớp.
Các lớp so khớp (ví dụ hai lớp ClassB trong hai theme) và các attribute so khớp của chúng (a và b) xuất hiện chỉ một lần trong mô hình tổng hợp. Tất cả các elements khác được thêm vào không thay đổi trong mô hình tổng hợp.
Khi các phần tử so khớp là container cùng kiểu, tất cả các phần tử thành phần của chúng được hợp nhất vào một container tổng hợp.
Trong tích hợp merge, mũi tên relationship tổng hợp chỉ đến các phần tử thiết kế được so khớp.
Hợp nhất hoạt động
Hợp nhất hoạt động thực hiện khác với hợp nhất các phần tử cấu trúc. Các hành vi khác nhau thường được mô-đun trong các theme riêng biệt, chúng ta nên chỉ ra một tập các hoạt động so khớp khi chúng cần được thi hành cùng nhau. Ví dụ, bạn có các lớp so khớp có các attribute khác nhau, và có một method print()mà in ra các giá trị attribute. Khi các lớp như vậy được tổng hợp, tất cả thông tin đều được in, và vì thế khi print() được thi hành trên class tổng hợp, tất cả các hoạt động print() trên các lớp so khớp đều sẽ thi hành.
41
Khi hợp nhất các hoạt động có tên giống nhau, các hoạt động input được đổi tên (có thể là thêm tiền tố là tên theme của chúng) để tránh rối loạn, và tên ban đầu được sử dụng để tạo biểu đồ tuần tự mà thi hành mỗi operation trong biểu đồ tuần tự. Đây là cách xử lý mặc định cho các operation được so khớp. Xét sự hợp nhất operation trong hình 4-2, khi hợp nhất theme1 và theme2 thì các hoạt động op1() trong cả hai class ClassB được so khớp. Để chỉ ra các hành vi được hợp nhất, một biểu đồ tuần tự được tạo ra để xác định khi mà một yêu cầu thực hiện op1(), hai operation op1() trong các theme cũng được gọi. Các operation input được thay tên để tránh mâu thuẫn tên trong cả hai mô hình class và đặc tả biểu đồ tuần tự của chúng, ở đây các operation thay tên bằng cách thêm tên theme của chúng vào đầu tên operation, op1() trong theme1 được đổi thành Theme1_op1().
Tuy nhiên sự hợp nhất operation mặc định đó không phải lúc nào cũng được yêu cầu, ta có thể tránh hợp nhất bằng một relationship tổng hợp rõ ràng giữa hai operation với nhãn [dontMatch].
Một số operation khác tên nhau, được mô-đun hóa trong các theme riêng biệt nhưng chúng cùng mô tả các hành vi liên quan đến một vấn đề, hoạt động liên quan đến nhau thì chúng ta sẽ nhóm chúng lại để các hoạt động xảy ra cùng nhau, và thi hành chúng một cách tuần tự. Việc đó chính là hợp nhất các hoạt động.
Khi các operation được hợp nhất (dù chúng có cùng tên hay không), sự sắp xếp thi hành trong chuỗi các operation so khớp là tạo ngẫu nhiên. Nếu thứ tự thi hành các hoạt động là quan trọng thì biểu đồ tuần tự tương ứng sẽ sắp xếp thứ tự các hoạt động . Bây giờ chúng ta sẽ xem xét vấn đề khi xảy ra xung đột tham số trong hợp nhất operation, hoặc nếu có nhiều operation trả về một giá trị. Trong trường hợp đầu tiên, nguyên tắc chung cho so khớp operation là chúng phải có cùng dấu hiệu kích hoạt. Khi thi hành, các giá trị input cho hoạt động tổng hợp có thể được sử dụng để gọi mỗi hoạt động của so khớp. Có một ngoại lệ cho nguyên tắc này, nếu một trong các operation so khớp có các tham số mà giá trị của chúng được sử dụng trong các operation so khớp khác (với tập các tham số của các operation được gọi), các operation đó có thể xác định là so khớp. Trong trường hợp này bạn phải gắn một biểu đồ tuần tự tới relationship tổng hợp chỉ ra làm thế nào các operation đó được gọi. Nếu không làm thế, các operation không được so khớp. Trong trường hợp thứ hai, sẽ mặc định là giá trị trong operation thi hành cuối cùng được trả về. Nếu bạn muốn hành vi khác trả về giá trị, bạn phải chỉ ra sự xác định hành vi đó trong biểu đồ tuần tự trên relationship tổng hợp.
42
Các phần tử không so khớp
Nói chung, các phần tử thiết kế không so khớp với các phần phần tử khác thì được thêm vào thiết kế tổng hợp trong các namespace tương ứng. Cho ví dụ, các class mà không so khớp bất kỳ class nào, các thành phần của nó sẽ không thay đổi trong tổng hợp theme; các attribute mà không so khớp attribute khác trong các class so khớp của chúng thì đơn giản là thêm vào class tổng hợp. ..