|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.argouml.cognitive.critics.Critic
org.argouml.uml.cognitive.critics.CrUML
org.argouml.uml.cognitive.critics.CrDupRoleNames
A critic to check that the ends of an association all have distinct names.
This is the first well-formedness rule for associations in the UML 1.3 standard (see section 2.5.3 of the standard).
Field Summary |
Fields inherited from class org.argouml.uml.cognitive.critics.CrUML |
cat, decBEHAVIOR, decCLASS_SELECTION, decCODE_GEN, decCONTAINMENT, decEXPECTED_USAGE, decINHERITANCE, decINSTANCIATION, decMETHODS, decMODULARITY, decNAMING, decPATTERNS, decPLANNED_EXTENSIONS, decRELATIONSHIPS, decSTATE_MACHINES, decSTEREOTYPES, decSTORAGE |
Fields inherited from class org.argouml.cognitive.critics.Critic |
_clarifier, _knowledgeTypes, _numCriticsFired, _supportedDecisions, _supportedGoals, _triggerMask, DEFAULT_CLARIFIER, ENABLED, KT_COMPLETENESS, KT_CONSISTENCY, KT_CORRECTNESS, KT_DESIGNERS, KT_EXPERIENCIAL, KT_OPTIMIZATION, KT_ORGANIZATIONAL, KT_PRESENTATION, KT_SEMANTICS, KT_SYNTAX, KT_TOOL, NO_PROBLEM, PROBLEM_FOUND, RESOURCE_BUNDLE, SNOOZE_ORDER |
Constructor Summary | |
CrDupRoleNames()
Constructor for the critic. |
Method Summary | |
boolean |
predicate2(java.lang.Object dm,
Designer dsgr)
The trigger for the critic. |
Methods inherited from class org.argouml.uml.cognitive.critics.CrUML |
expand, predicate, setHeadline, setResource |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public CrDupRoleNames()
Constructor for the critic.
Sets up the resource name, which will allow headline and description to found for the current locale. Provides a design issue category (NAMING) and add triggers for "connection" and "end_name".
Method Detail |
public boolean predicate2(java.lang.Object dm, Designer dsgr)
The trigger for the critic.
We do not handle association roles, which are a subclass of association. An association role should be fine, if its parent is OK, since it must have the same or fewer ends than its parent.
Note. ArgoUML does not currently have a constructor to check that an association role is more tightly constrained than its parent.
Then loop through the ends, building a vector of end names that we have seen, and looking to see if the current end is already in that vector. We ignore any ends that are unnamed, or have the empty string as name.
Whilst this is an O(n^2) algorithm, most associations have only two ends, so this is unlikely to cause difficulty.
predicate2
in class CrUML
dm
- the Object
to be checked against
the critic.dsgr
- the Designer
creating the model. Not used, this is for future
development of ArgoUML.
PROBLEM_FOUND
if the critic is
triggered, otherwise NO_PROBLEM
.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ArgoUML © 1996-2003 (20030829) | ArgoUML Project Home | ArgoUML Cookbook |