package jdepend.model; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; import jdepend.metadata.JavaClass; import jdepend.metadata.JavaPackage; import jdepend.model.result.AnalysisResult; /** * 分析单元 * * @author <b>Abner</b> * */ public interface JDependUnit extends Serializable, Measurable, Comparable<JDependUnit> { /** * 该分析单元是否是内部对象 * * @return */ public boolean isInner(); /** * 得到类型 * * @return */ public JDependUnitType getType(); public void setType(JDependUnitType type); public Collection<JavaClassUnit> getClasses(); public boolean containsClass(JavaClassUnit javaClass); public boolean containsClass(JavaClass javaClass); public Collection<JavaPackage> getJavaPackages(); /** * 得到该分析单元的路径(根包名称) * * @return */ public String getPath(); public Collection<? extends JDependUnit> getAfferents(); public Collection<? extends JDependUnit> getEfferents(); /** * 收集循环依赖信息 * * @param list * @param knowledge * @return */ int collectCycle(List<JDependUnit> list, Map<JDependUnit, Integer> knowledge); /** * 收集第一个循环依赖链 * * @return */ public List<? extends JDependUnit> collectCycle(); /** * 与特定分析单元的传出耦合信息明细 * * @param dependUnit * @return */ public RelationDetail ceCouplingDetail(JDependUnit dependUnit); /** * 与特定分析单元的传入耦合信息明细 * * @param dependUnit * @return */ public RelationDetail caCouplingDetail(JDependUnit dependUnit); /** * 传入耦合值 * * @return */ public float caCoupling(); /** * 传出耦合值 * * @return */ public float ceCoupling(); /** * 与特定分析单元的耦合值 * * @param dependUnit * @return */ public float coupling(JDependUnit dependUnit); /** * 得到分析结果 * * @return */ public AnalysisResult getResult(); /** * 清空缓存 */ public void clear(); public int hashCode(); public boolean equals(Object obj); }