|
|||||||||||
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.CrOperNameConflict
A critic to detect when a class has operations with two matching signatures.
Takes each operation in turn and compares its signature with all earlier operations. This version corrects and earlier bug, which checked for matching names as well as types in the parameter list.
Warning. The algorithm in is quadratic in the
number of operations. It could be computationally demanding on a design
where classes have a lot of operations. See the predicate2(java.lang.Object, org.argouml.cognitive.Designer)
method for possible solutions.
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 | |
CrOperNameConflict()
Constructor for the critic. |
Method Summary | |
javax.swing.Icon |
getClarifier()
Return the icon to be used for the clarifier for this critic. |
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 CrOperNameConflict()
Constructor for the critic.
Sets up the resource name, which will allow headline and description to found for the current locale. Provides design issue categories (METHODS, NAMING), sets a knowledge type (SYNTAX) and adds triggers for metaclasses "behaviouralFeature" and feature_name".
Method Detail |
public boolean predicate2(java.lang.Object dm, Designer dsgr)
The trigger for the critic.
Finds all the operations for the given classifier. Takes each operation in turn and compares its signature with all earlier operations. This version corrects an earlier bug, which checked for matching names as well as types in the parameter list.
Note. The signature ignores any return parameters in looking for a match. This is in line with Java/C++.
We do not need to worry about signature clashes that are inherited (overloading). This is something encouraged in many OO environments to facilitate polymorphism.
This algorithm is quadratic in the number of operations. If this became a problem, we would have to consider sorting the operations vector and comparing only adjacent pairs (potentially O(n log n) performance).
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
.public javax.swing.Icon getClarifier()
Return the icon to be used for the clarifier for this critic.
A clarifier is the graphical highlight used to show the presence of a critique. For example wavy colored underlines beneath operations.
In this case it will be a wavy line under the second of the clashing operations.
getClarifier
in interface Poster
getClarifier
in class Critic
Icon
to use.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ArgoUML © 1996-2003 (20040125) | ArgoUML Project Home | ArgoUML Cookbook |