//SysConst.java
public class SysConst {
public static final int SC_Empty=1;
public static final int SC_Exist=SC_Empty+1;
public static final int SC_Nothing=SC_Exist+1;
public static final int SC_HAS=SC_Nothing+1;
public static final int SC_ISA=SC_HAS+1;
public static final int SC_ISNOT=SC_ISA+1;
public static final int SC_AKO=SC_ISNOT+1;
public static final int SC_Include=SC_AKO+1;
public static final int SC_Equal=SC_Include+1;
public static final int SC_Different=SC_Equal+1;
public static final int SC_Create=SC_Different+1;
public static final int SC_Maintain=SC_Create+1;
public static final int SC_Change=SC_Maintain+1;
public static final int SC_DieOut=SC_Change+1;
public static final int SC_Cause=SC_DieOut+1;
public static final int SC_Effect=SC_Cause+1;
public static final int SC_Name=SC_Effect+1;
public static final int SC_Bound=SC_Name+1;
public static final int SC_In=SC_Bound+1;
public static final int SC_Out=SC_In+1;
public static final int SC_Time=SC_Out+1;
public static final int SC_Object=SC_Time+1;
public static final int SC_Element=SC_Object+1;
public static final int SC_Order=SC_Element+1;
public static final int SC_Compare=SC_Order+1;
public static final int SC_Relation=SC_Compare+1;
public static final int SC_Position=SC_Relation+1;
public static final int SC_Value=SC_Position+1;
public static final int SC_Type=SC_Value+1;
public static final int SC_TYPE_Unknown=SC_Type+1;
public static final int SC_TYPE_Integer=SC_TYPE_Unknown+1;
public static final int SC_TYPE_Float=SC_TYPE_Integer+1;
public static final int SC_TYPE_Char=SC_TYPE_Float+1;
public static final int SC_TYPE_String=SC_TYPE_Char+1;
public static final int SC_TYPE_Boolean=SC_TYPE_String+1;
public static final int SC_TYPE_DateTime=SC_TYPE_Boolean+1;
public static final int SC_TYPE_SYS_OBJ_ID=SC_TYPE_DateTime+1;
public static final int SC_Get=SC_TYPE_SYS_OBJ_ID+1;
public static final int SC_Set=SC_Get+1;
public static final int SC_Event=SC_Set+1;
public static final int SC_Action=SC_Event+1;
public static final int SC_Execute=SC_Action+1;
public static final int SC_Trigger=SC_Execute+1;
public static final int SC_Role=SC_Trigger+1;
public static final int SC_Phenomenon=SC_Role+1;
public static final int SC_Concept=SC_Phenomenon+1;
public static final int SC_Process=SC_Concept+1;
public static final int SC_Attach=SC_Process+1;
public static final int SC_Detach=SC_Attach+1;
public static final int SC_Belong=SC_Detach+1;
public static final int SC_Before=SC_Belong+1;
public static final int SC_After=SC_Before+1;
public static final int SC_Success=SC_After+1;
public static final int SC_Failure=SC_Success+1;
public static final int SC_Associate=SC_Failure+1;
public static final int SC_Status=SC_Associate+1;
public static final int SC_Must=SC_Status+1;
public static final int SC_May=SC_Must+1;
public static final int SC_Determine=SC_May+1;
public static final int SC_Call=SC_Determine+1;
public static final int SC_Think=SC_Call+1;
public static final int SC_Search=SC_Think+1;
public static final int SC_Wait=SC_Search+1;
public static final int SC_Watch=SC_Wait+1;
public static final int SC_Wish=SC_Watch+1;
public static final int SC_Heart=SC_Wish+1;
public static final int SC_Touch=SC_Heart+1;
public static final int SC_Right=SC_Touch+1;
public static final int SC_Error=SC_Right+1;
public static final int SC_Essence=SC_Error+1;
public static final int SC_Appearance=SC_Essence+1;
public static final int SC_Know=SC_Appearance+1;
public static final int SC_Ask=SC_Know+1;
public static final int SC_Answer=SC_Ask+1;
public static final int SC_Compose=SC_Answer+1;
public static final int SC_Decompose=SC_Compose+1;
public static final int SC_Task=SC_Decompose+1;
public static final int SC_Question=SC_Task+1;
public static final int SC_Any=SC_Question+1;
public static final int SC_If=SC_Any+1;
public static final int LAST_BASIC_CONCEPT_ID=SC_If;
public static final int MIN_SYSTEM_CONCEPT_ID=1000;
public static final int MIN_COMMON_CONCEPT_ID=10000;
public static final byte CONCEPT_LEVEL_BASIC=0;
public static final byte CONCEPT_LEVEL_SYSTEM=1;
public static final byte CONCEPT_LEVEL_COMMON=2;
public static final byte MAX_CONCEPT_LEVEL=CONCEPT_LEVEL_COMMON;
static final String[] basicConceptName=new String[LAST_BASIC_CONCEPT_ID+1];
static final String[] conceptLevelName=new String[MAX_CONCEPT_LEVEL+1];
/**
* 初始化过程。
*/
public static void initialize(){
conceptLevelName[CONCEPT_LEVEL_BASIC]="原始概念";
conceptLevelName[CONCEPT_LEVEL_SYSTEM]="系统概念";
conceptLevelName[CONCEPT_LEVEL_COMMON]="普通概念";
basicConceptName[SC_Empty]="空";
basicConceptName[SC_Exist]="有";
basicConceptName[SC_Nothing]="无";
basicConceptName[SC_HAS]="有";
basicConceptName[SC_ISA]="是";
basicConceptName[SC_ISNOT]="不是";
basicConceptName[SC_AKO]="一种";
basicConceptName[SC_Include]="包含";
basicConceptName[SC_Equal]="相等";
basicConceptName[SC_Different]="差别";
basicConceptName[SC_Create]="产生";
basicConceptName[SC_Maintain]="维持";
basicConceptName[SC_Change]="改变";
basicConceptName[SC_DieOut]="消失";
basicConceptName[SC_Cause]="因";
basicConceptName[SC_Effect]="果";
basicConceptName[SC_Name]="名";
basicConceptName[SC_Bound]="界";
basicConceptName[SC_In]="入";
basicConceptName[SC_Out]="出";
basicConceptName[SC_Time]="时间";
basicConceptName[SC_Object]="对象";
basicConceptName[SC_Element]="元素";
basicConceptName[SC_Order]="顺序";
basicConceptName[SC_Compare]="比较";
basicConceptName[SC_Relation]="关系";
basicConceptName[SC_Position]="位置";
basicConceptName[SC_Value]="值";
basicConceptName[SC_Type]="类型";
basicConceptName[SC_TYPE_Unknown]="位置类型";
basicConceptName[SC_TYPE_Integer]="整型";
basicConceptName[SC_TYPE_Float]="浮点型";
basicConceptName[SC_TYPE_Char]="字符型";
basicConceptName[SC_TYPE_String]="字符串型";
basicConceptName[SC_TYPE_Boolean]="布尔型";
basicConceptName[SC_TYPE_DateTime]="时间型";
basicConceptName[SC_TYPE_SYS_OBJ_ID]="ID型";
basicConceptName[SC_Get]="获得";
basicConceptName[SC_Set]="设置";
basicConceptName[SC_Event]="事件";
basicConceptName[SC_Action]="动作";
basicConceptName[SC_Execute]="执行";
basicConceptName[SC_Trigger]="触发";
basicConceptName[SC_Role]="规则";
basicConceptName[SC_Phenomenon]="现象";
basicConceptName[SC_Concept]="概念";
basicConceptName[SC_Process]="过程";
basicConceptName[SC_Attach]="挂接";
basicConceptName[SC_Detach]="分离";
basicConceptName[SC_Belong]="属于";
basicConceptName[SC_Before]="之前";
basicConceptName[SC_After]="之后";
basicConceptName[SC_Success]="成功";
basicConceptName[SC_Failure]="失败";
basicConceptName[SC_Associate]="联想";
basicConceptName[SC_Status]="状态";
basicConceptName[SC_Must]="必须";
basicConceptName[SC_May]="可以";
basicConceptName[SC_Determine]="决定";
basicConceptName[SC_Call]="谓";
basicConceptName[SC_Think]="想";
basicConceptName[SC_Search]="寻";
basicConceptName[SC_Wait]="伺";
basicConceptName[SC_Watch]="观察";
basicConceptName[SC_Wish]="欲";
basicConceptName[SC_Heart]="心";
basicConceptName[SC_Touch]="触";
basicConceptName[SC_Right]="正确";
basicConceptName[SC_Error]="错误";
basicConceptName[SC_Essence]="本质";
basicConceptName[SC_Appearance]="相";
basicConceptName[SC_Know]="知";
basicConceptName[SC_Ask]="问";
basicConceptName[SC_Answer]="答";
basicConceptName[SC_Compose]="合成";
basicConceptName[SC_Decompose]="分解";
basicConceptName[SC_Task]="任务";
basicConceptName[SC_Question]="问题";
basicConceptName[SC_Any]="任意";
basicConceptName[SC_If]="如果";
System.out.println(LAST_BASIC_CONCEPT_ID+" basic concepts initialized.");
}
}
Title: Advanced Java Test
*Description:
*Copyright: Copyright (c) 2003
*Company:
* @author creation_zy * @version 1.0 * Date: 2004-3-7 */ /* 1.对象属性继承的实现 从下向上遍历继承表,寻找最先出现的属性值。为了提高效率,可以限制继承的层次数, 也可以在运行时动态的将频繁读取的“稳定”属性“下移”到根对象。 2.树型结构 除了整数、字符串、布尔值等简单类型以外,对象的属性还可以是对象。例如:Dr. M的 助手——Mr. Albert。 为了便于输入/输出,可以用对象的“关键字段”(例如:"Name")来进行索引、绑定。 */ public abstract class BaseObj { ClassInfo ci; private Object[] propVals; private AccessDef accessDef; protected BaseObj() { ClassInfoContainer.getClassInfoContainer().registerObj(this); accessDef = new AccessDef(); propVals = new Object[ci.getPropList().size()]; } public String getInheritStr() { Class c = getClass(); String rlt = ""; do { rlt = c.getName() + rlt; if (c != BaseObj.class) { rlt = "<-" + rlt; } c = c.getSuperclass(); } while (c != Object.class); return rlt; } protected void initPropMap() { System.out.println("[" + getInheritStr() + "] initPropMap..."); } protected void initAccessMap() { System.out.println("[" + getInheritStr() + "] initAccessMap..."); } protected boolean addProp(String propName, String dispName, Class c) { if (ci.getPropMap().containsKey(propName)) { return false; } else { ci.addProp(propName, dispName, c); return true; } } public boolean hasProp(String propName) { return ci.getPropMap().get(propName) != null; } public boolean canGetProp(int index) { return true; } public boolean canSetProp(int index) { return true; } public final Object getProp(String propName) throws Exception { Integer i = (Integer) ci.getPropMap().get(propName); if (i == null) { throw new Exception("Prop not found! " + propName); } return propVals[i.intValue()]; } public final boolean setProp(String propName, Object val) { //... } public final Object getProp(int index) { if ( (index < 0) || (index >= propVals.length)) { System.err.println("Exception: [" + getInheritStr() + "] getProp( " + index + " ) Index out of bound!"); return null; } return propVals[index]; } public final boolean setProp(int index, Object val) { //... } public final ObjProperty getPropInfo(int index) { if ( (index < 0) || (index >= propVals.length)) { return null; } return (ObjProperty) ci.getPropList().get(index); } public final int getPropCount() { return propVals.length; } public final void clearProps() { for (int i = 0; i < propVals.length; i++) { if (!canSetProp(i)) { continue; } propVals[i] = null; } } public final boolean copyTo(BaseObj obj) { //... } public final int readFromHttpRequest(HttpServletRequest request) { //... } public final boolean setIntProp(String propName, int value) { //... } public final boolean setShortProp(String propName, short value) { //... } public final boolean setByteProp(String propName, byte value) { //... } public final boolean setBoolProp(String propName, boolean value) { //... } public final boolean setFloatProp(String propName, float value) { //... } public final boolean setDoubleProp(String propName, double value) { //... } public final int getIntProp(String propName) { //... } public final short getShortProp(String propName) { //... } public final byte getByteProp(String propName) { //... } public final boolean getBoolProp(String propName) { //... } public final float getFloatProp(String propName) { //... } public final double getDoubleProp(String propName) { //... } } package attrexam; import attrcore.*; /** *Title: Advanced Java Test
*Description:
*Copyright: Copyright (c) 2003
*Company:
* @author creation_zy * @version 1.0 * Date: 2004-3-7 */ public class Test { public static class A extends BaseObj { public static final String Prop_X="x"; public static final String Prop_Y="y"; public static final String Prop_Light="light"; protected void initPropMap() { super.initPropMap(); addProp(Prop_X, "X坐标", Integer.class); addProp(Prop_Y, "Y坐标", Integer.class); addProp(Prop_Light, "亮度", Float.class); } protected void initAccessMap() { } } public static class B extends BaseObj { public static final String Prop_Name="Name"; static final public String Prop_Age="Age"; public static final String Prop_Address="Address"; protected void initPropMap() { super.initPropMap(); addProp(Prop_Name, "姓名", String.class); addProp(Prop_Age, "年龄", Integer.class); addProp(Prop_Address, "地址", String.class); } protected void initAccessMap() { } } public static class C extends B { public static final String Prop_City="City"; protected void initPropMap() { super.initPropMap(); addProp(Prop_City, "城市", String.class); } } public Test() { A a = new A(); B b = new B(); C c = new C(); A aa = new A(); a.setProp(a.Prop_X, new Integer(1)); b.setProp(b.Prop_Address, "China0102"); } public static void main(String[] args) { Test test1 = new Test(); } }