là khái niệm miền giống nhau. Relationship tổng hợp được xác định giữa các phần tử thiết kế cùng kiểu để chỉ ra các phần tử so khớp và cần được tổng hợp. Hình 4-1 , ở phía bên trái, tổng hợp Theme1 và Theme2 là được xác định với hai relationship tổng hợp. Vẽ một relationship tổng hợp giữa các theme được tổng hợp và một relationship tổng hợp giữa ClassB trong Theme1 và ClassB trong theme2 chỉ ra hai class được so khớp khái niệm, và ClassB xuất hiện một lần trong kết quả thiết kế tổng hợp.
Phải dùng phương pháp tiếp cận này , khi các class không có cùng tên nhưng vẫn miêu tả cùng khái niệm, relationship tổng hợp được chỉ ra rõ ràng.
4.2.2 So khớp ngầm định
So khớp tường minh các phần tử với một relationship tổng hợp cho mọi so khớp là hữu ích khi các phần tử không có cùng tên. Tuy nhiên, nó có thể nặng nề (và lộn xộn). Ta có thể định nghĩa một nguyên tắc cho relationship tổng hợp chỉ rõ các phần tử được đặt tên tương tự nhau được so khớp. Ở bên phải hình 4-4, chỉ có một relationship tổng hợp giữa các theme được tổng hợp, được gắn thêm nhãn là match[name]. Nhãn này chỉ ra rằng các class trong các theme cùng tên được so khớp và nên được tổng hợp. Ở đây các ClassB trong theme1, và theme2 sẽ được so khớp.
Với nhãn match[name], ta có thể nói rằng bất kì phần tử nào nằm trong các phần tử so khớp mà có cùng tên sẽ được xem xét để so khớp: các class có cùng tên nằm trong các theme so khớp sẽ được so khớp; các attribute có cùng tên nằm trong các class so khớp cũng cần được so khớp …
Relationship tổng hợp kiểu ngầm định là một relationship tổng hợp bắt buộc, chỉ ra các phần tử đặt tên giống nhau được so khớp như một sự bắt buộc. Ta có thể sử dụng một relationship tổng hợp tường minh giữa các phần tử bạn muốn so khớp mà không được phủ bởi nhãn match[name], nếu hai phần tử đó không cùng tên .
Tất nhiên, chúng ta không muốn các phần tử có tên ngẫu nhiên giống nhau được so khớp. Chúng có thể không so khớp một cách tường minh bằng cách thêm một relationship tổng hợp với nhãn dontMatch giữa các phần tử không muốn so khớp.
4.2.3 Các nguyên tắc cho so khớp khái niệm chung với relationship tổng hợp tổng hợp
Một đặc điểm quan trọng nhất của một phần tử thiết kế là xem xét cú pháp hợp lệ của một relationship tổng hợp, dù nó là một container chứa các phần tử khác, hoặc nó
39
là một thành phần của một phần tử khác (hoặc đồng thời là cả hai). Ví dụ attribute và operation được chứa trong một class; các class được chứa trong một theme… Quan hệ container/composition giữa các phần tử thiết kế là quan trọng cho xử lý tổng hợp, nó ảnh hưởng đến xác định các phần tử so khớp và xác định namespace của các phần tử được tổng hợp. Sau đây là các nguyên tắc cho so khớp :
-Một relationship tổng hợp chỉ có thể vạch ra giữa các phần tử cùng kiểu.
-Khi so khớp các phần tử thiết kế, đầu tiên cần vạch ra relationship tổng hợp giữa hai hay nhiều theme chứa các phần tử đó.
-Hai (hoặc hơn) các phần tử thiết kế có thể được so khớp (tường minh hay ngầm định) chỉ khi containers của chúng được so khớp. Mọi phần tử tổng hợp phải có một namespace, điều này đảm bảo không có rối loạn trong container chứa các phần tử tổng hợp.
-Mỗi phần tử thiết kế chỉ được so khớp trong một tập các phần tử so khớp. Có nghĩa là mọi phần tử thiết kế chỉ được tổng hợp trong một bản thiết kế tổng hợp. Nguyên tắc này nhằm không có sự rối loạn với tham chiếu trong kết quả tổng hợp.
- Theme aspect được phép có ngoại lệ với quy luật “match –once”. Hành vi được định nghĩa trong theme crosscutting có thể được tổng hợp với nhiều phần tử khác nhau mà thay thế template sử dụng trong crosscutting hành vi.