25.10.2014 Views

Thesis full text (PDF) - Politecnico di Milano

Thesis full text (PDF) - Politecnico di Milano

Thesis full text (PDF) - Politecnico di Milano

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

These patterns do not have side effects on the knowledge base. Whenever it is necessary, we<br />

exploit the UML utility class Complex Query to transfer values from one component to another.<br />

The role of this class is to orchestrate the invocation of the methods in the pattern. Its<br />

configuration determines the methods invocation order (possibly inclu<strong>di</strong>ng looping and<br />

con<strong>di</strong>tional execution), thus eliminating the burden of controlling the flow of components<br />

execution.<br />

3.3.1.1 Class and its classification pattern<br />

This pattern checks the existence of a class in the knowledge base and deducts the hierarchy of<br />

generalizing classes. It encompasses two exploration components (figure 3.25): (i) the Class<br />

Component configured with a ClassOfName selection con<strong>di</strong>tion to retrieve the class<br />

correspon<strong>di</strong>ng to the input, and (ii) the Classes Hierarchy Component configured with a<br />

ClassOfSubClass con<strong>di</strong>tion to deduct the hierarchy above the previous class. The input received<br />

by the user invoking the execute method is transferred to the Class Component; the deducted<br />

class becomes the input for the Class Hierarchy Component, while both the class and the<br />

retrieved hierarchy are returned to the user. The pattern is defined as the one extracting the<br />

specializing class hierarchy for a given input.<br />

This pattern may be used whenever the user needs to analyze a specific class and its generalized<br />

classes.<br />

Figure 3.25: Class and its classification<br />

48

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!