第156章 ICAI领域对象模型
156.1 提出背景
第155章建立了ICAI面向对象工程的基本原则:
TheoryObject→ObjectModel→PHPClass→ProgramInstance→RuntimeObjectTheoryObject \rightarrow ObjectModel \rightarrow PHPClass \rightarrow ProgramInstance \rightarrow RuntimeObject
但是,仅仅把理论概念转换成PHP Class,还不能形成完整的ICAI工程。
原因在于,ICAI包含大量不同性质的对象:
IndividualIndividual CognitionCognition BehaviorBehavior MemoryMemory MaintenanceMaintenance
这些对象虽然共同属于一个机器个体,但它们承担的职责并不相同。
如果把所有对象、计算和运行逻辑都放进一个巨大对象中,就会形成:
MachineIndividual→GodObjectMachineIndividual\rightarrow GodObject
这种结构会使系统难以维护、扩展和验证。
因此,ICAI需要建立领域对象模型(Domain Object Model),按照理论领域和工程职责,将机器个体划分为若干具有明确边界的领域对象。
本章建立五类核心领域对象:
DomainObject=IndividualObject+CognitiveObject+BehaviorObject+MemoryObject+MaintenanceObject\boxed{ DomainObject= IndividualObject+ CognitiveObject+ BehaviorObject+ MemoryObject+ MaintenanceObject }
它们共同组成ICAI机器个体的核心对象体系。
156.2 Domain Object定义
156.2.1 领域对象定义
**领域对象(Domain Object)**是指在ICAI特定理论领域中具有明确身份、结构、状态、关系和职责,并能够在程序中作为独立对象进行保存、计算、关联和运行的对象。
形式化表示:
DomainObject=Identity+Structure+State+Relation+Responsibility\boxed{ DomainObject= Identity+ Structure+ State+ Relation+ Responsibility }
其中:
- IdentityIdentity:对象身份;
- StructureStructure:对象内部结构;
- StateState:对象当前状态;
- RelationRelation:对象与其他对象之间的关系;
- ResponsibilityResponsibility:对象在系统中的职责。
156.3 Domain Object与普通程序对象
普通程序对象可以只是为了实现程序功能而建立:
class User
{
protected $name;
}
而ICAI领域对象必须对应理论中的明确概念。
例如:
CognitiveObjectCognitiveObject
不是为了方便编程而随意命名的Class,而是对应ICA I理论中的:
ObjectObject
因此:
TheoreticalConcept→DomainObjectTheoreticalConcept \rightarrow DomainObject
这是ICAI领域对象模型的基本原则。
156.4 Domain Object的核心特征
一个完整的ICAI领域对象至少具有以下特征。
1. 身份
IDID
2. 类型
TypeType
3. 结构
StructureStructure
4. 状态
StateState
5. 关系
RelationRelation
6. 生命周期
LifecycleLifecycle
7. 领域职责
ResponsibilityResponsibility
因此:
DomainObject=ID+Type+Structure+State+Relation+Lifecycle+Responsibility\boxed{ DomainObject= ID+Type+Structure+State+Relation+Lifecycle+Responsibility }
156.5 Domain Object不是数据库记录
必须明确:
DomainObject≠DatabaseRecordDomainObject\neq DatabaseRecord
数据库记录主要解决数据持久化:
DatabaseRecord→StorageDatabaseRecord\rightarrow Storage
领域对象解决的是:
DomainObject→DomainStructureDomainObject\rightarrow DomainStructure
二者通过Repository连接:
DomainObject↔Repository↔MySQL\boxed{ DomainObject \leftrightarrow Repository \leftrightarrow MySQL }
例如:
CognitiveObject↔CognitiveObjectRepository↔cognitive_objectsCognitiveObject \leftrightarrow CognitiveObjectRepository \leftrightarrow cognitive\_objects
因此,数据库不是ICAI领域对象本身。
156.6 Domain Object不是Engine
同样:
DomainObject≠EngineDomainObject\neq Engine
领域对象负责表达领域结构。
Engine负责执行领域计算。
例如:
CognitiveObject→ObjectEngineCognitiveObject \rightarrow ObjectEngine
其中:
CognitiveObjectCognitiveObject
描述对象。
而:
ObjectEngineObjectEngine
执行对象识别、对象匹配、对象状态计算等操作。
因此:
Object=Structure\boxed{ Object = Structure } Engine=Computation\boxed{ Engine = Computation }
156.7 ICAI领域对象体系
ICAI核心领域对象可以划分为五个大的对象域:
ICAI Domain Object
│
├── Individual Domain
│ └── Individual Object
│
├── Cognitive Domain
│ └── Cognitive Object
│
├── Behavior Domain
│ └── Behavior Object
│
├── Memory Domain
│ └── Memory Object
│
└── Maintenance Domain
└── Maintenance Object
五类对象不是彼此独立的孤立模块。
它们之间形成:
Individual→Cognition→Behavior→Memory→Maintenance→Individual\boxed{ Individual \rightarrow Cognition \rightarrow Behavior \rightarrow Memory \rightarrow Maintenance \rightarrow Individual }
156.8 第一类:Individual Object
156.8.1 Individual Object定义
**个体对象(Individual Object)**是ICAI领域中代表一个具体机器个体的核心领域对象。
它回答:
这个机器个体是谁?属于什么类型?具有哪些内部结构?
形式化:
IndividualObject=Identity+Type+Structure+State+History\boxed{ IndividualObject= Identity+ Type+ Structure+ State+ History }
156.9 Individual Object结构
机器个体对象:
I={ID,Type,Boundary,Object,Attribute,State,Relation,Knowledge,Goal,Capability,Method,Behavior,Memory,Maintenance}I= \{ ID, Type, Boundary, Object, Attribute, State, Relation, Knowledge, Goal, Capability, Method, Behavior, Memory, Maintenance \}
工程实现:
class IndividualObject
{
protected $id;
protected $type;
protected $boundary;
protected $objects;
protected $attributes;
protected $states;
protected $relations;
protected $knowledge;
protected $goals;
protected $capabilities;
protected $methods;
protected $behaviors;
protected $memory;
protected $maintenance;
}
Individual Object是整个机器个体领域对象体系的根对象。
156.10 Individual Object的职责
Individual Object主要负责:
IdentityIdentity TypeType BoundaryBoundary StructureStructure LifecycleLifecycle
它不负责直接完成所有认知计算,也不负责直接执行所有行为。
因此:
IndividualObject≠CognitiveEngineIndividualObject\neq CognitiveEngine IndividualObject≠BehaviorEngineIndividualObject\neq BehaviorEngine
它主要负责组织机器个体内部领域对象。
156.11 Individual Object与其他对象的关系
建立:
IndividualObject→CognitiveObjectIndividualObject \rightarrow CognitiveObject IndividualObject→BehaviorObjectIndividualObject \rightarrow BehaviorObject IndividualObject→MemoryObjectIndividualObject \rightarrow MemoryObject IndividualObject→MaintenanceObjectIndividualObject \rightarrow MaintenanceObject
因此:
IndividualObject=RootDomainObject\boxed{ IndividualObject = RootDomainObject }
156.12 第二类:Cognitive Object
156.12.1 Cognitive Object定义
**认知对象(Cognitive Object)**是ICAI认知领域中用于表达对象、属性、状态、关系、场景、知识、需求、目标和能力等认知结构的领域对象。
其核心作用是把机器个体面对的信息转换为可计算的结构。
基本形式:
CognitiveObject=Object+Attribute+State+Relation+Scene+Knowledge\boxed{ CognitiveObject= Object+ Attribute+ State+ Relation+ Scene+ Knowledge }
156.13 Cognitive Object的组成
认知领域进一步细分:
Cognitive Object
│
├── Object
├── Attribute
├── State
├── Relation
├── Scene
├── Knowledge
├── Need
├── Goal
└── Capability
对应:
CognitiveObject
CognitiveAttribute
CognitiveState
CognitiveRelation
CognitiveScene
CognitiveKnowledge
CognitiveNeed
CognitiveGoal
CognitiveCapability
这些都是Cognitive Domain中的领域对象。
156.14 Cognitive Object结构
基础认知对象:
class CognitiveObject
{
protected $id;
protected $type;
protected $attributes;
protected $state;
protected $relations;
protected $history;
}
它能够连接:
Object→AttributeObject \rightarrow Attribute Object→StateObject \rightarrow State Object→RelationObject \rightarrow Relation
形成:
ObjectStructureObjectStructure
156.15 Cognitive Object与知识
认知对象并不是知识本身。
CognitiveObject≠KnowledgeCognitiveObject\neq Knowledge
对象提供认知基础:
Object→State→Relation→SceneObject \rightarrow State \rightarrow Relation \rightarrow Scene
然后:
Scene→KnowledgeScene \rightarrow Knowledge
因此:
CognitiveObject→KnowledgeObject\boxed{ CognitiveObject \rightarrow KnowledgeObject }
156.16 Cognitive Object与目标
认知结构进一步形成需求和目标:
StateDifference→NeedStateDifference \rightarrow Need Need→GoalNeed \rightarrow Goal
因此:
CognitiveObject→CognitiveNeed→CognitiveGoalCognitiveObject \rightarrow CognitiveNeed \rightarrow CognitiveGoal
目标不是认知对象的简单属性,而是独立领域对象。
156.17 Cognitive Object与能力
目标形成以后,需要判断机器个体是否具有相应能力:
Goal→CapabilityRequirementGoal \rightarrow CapabilityRequirement CapabilityRequirement→CapabilityCapabilityRequirement \rightarrow Capability
因此:
CognitiveGoal→CognitiveCapabilityCognitiveGoal \rightarrow CognitiveCapability
最终:
Cognition→Need→Goal→Capability\boxed{ Cognition \rightarrow Need \rightarrow Goal \rightarrow Capability }
156.18 第三类:Behavior Object
156.18.1 Behavior Object定义
**行为对象(Behavior Object)**是ICAI行为领域中用于表示方法、决策、行为、动作、结果和反馈等动态执行结构的领域对象。
基本结构:
BehaviorObject=Method+Decision+Behavior+Action+Result+Feedback\boxed{ BehaviorObject= Method+ Decision+ Behavior+ Action+ Result+ Feedback }
156.19 Behavior Object的组成
Behavior Object
│
├── Method
├── Decision
├── Behavior
├── Action
├── Result
└── Feedback
对应程序对象:
CognitiveMethod
CognitiveDecision
CognitiveBehavior
CognitiveAction
CognitiveResult
CognitiveFeedback
156.20 Method对象
方法回答:
采用什么执行结构?
Method=Goal+Object+Condition+Capability+Step+ResultMethod= Goal+ Object+ Condition+ Capability+ Step+ Result
因此:
Goal→MethodGoal \rightarrow Method
方法是行为形成之前的执行结构。
156.21 Decision对象
决策回答:
在当前条件下选择什么?
Decision=Goal+Capability+Method+Condition+Risk+Resource+RuleDecision= Goal+ Capability+ Method+ Condition+ Risk+ Resource+ Rule
因此:
Method→DecisionMethod \rightarrow Decision
决策对象不是行为对象的替代品。
Decision≠BehaviorDecision\neq Behavior
156.22 Behavior对象
行为表示执行过程:
Behavior=Subject+Object+Goal+Method+Decision+Condition+Action+ResultBehavior= Subject+ Object+ Goal+ Method+ Decision+ Condition+ Action+ Result
因此:
Decision→BehaviorDecision \rightarrow Behavior
156.23 Action对象
动作是行为中的具体执行单元:
Action⊂BehaviorAction\subset Behavior
因此:
Behavior={Action1,Action2,…,Actionn}Behavior = \{Action_1,Action_2,\ldots,Action_n\}
动作可以形成:
Action1→Action2→Action3Action_1 \rightarrow Action_2 \rightarrow Action_3
156.24 Result对象
结果负责记录执行以后产生的实际结果:
ExpectedResult↔ActualResult→Comparison→VerificationExpectedResult \leftrightarrow ActualResult \rightarrow Comparison \rightarrow Verification
因此:
Action→ResultAction \rightarrow Result
结果不是动作的属性,而是一个独立的领域对象。
156.25 Feedback对象
结果产生反馈:
Result→FeedbackResult \rightarrow Feedback
反馈继续进入:
MemoryMemory
并形成:
ExperienceExperience
因此:
Behavior→Action→Result→Feedback\boxed{ Behavior \rightarrow Action \rightarrow Result \rightarrow Feedback }
156.26 第四类:Memory Object
156.26.1 Memory Object定义
**记忆对象(Memory Object)**是ICAI记忆领域中用于保存机器个体过去信息、状态、事件、行为、结果、反馈、经验和历史变化的领域对象。
基本形式:
MemoryObject=Memory+Experience+History\boxed{ MemoryObject= Memory+ Experience+ History }
156.27 Memory Object的组成
Memory Object
│
├── Memory
├── Experience
├── History
├── HistoricalData
└── InitialMemory
对应:
MachineMemory
MachineExperience
MachineHistory
HistoricalData
InitialMemory
156.28 Memory对象
机器记忆:
Memory=Information+State+Behavior+Result+Feedback+ExperienceMemory= Information+ State+ Behavior+ Result+ Feedback+ Experience
工程:
class MachineMemory
{
protected $id;
protected $individualId;
protected $type;
protected $objectId;
protected $content;
protected $context;
protected $state;
protected $source;
protected $weight;
protected $status;
protected $createdAt;
}
Memory对象回答:
机器个体过去保存了什么?
156.29 Experience对象
经验:
Experience=Situation+Goal+Method+Action+Result+Feedback+EvaluationExperience= Situation+ Goal+ Method+ Action+ Result+ Feedback+ Evaluation
工程:
class MachineExperience
{
protected $id;
protected $individualId;
protected $situation;
protected $goalId;
protected $methodId;
protected $actionId;
protected $resultId;
protected $feedbackId;
protected $evaluation;
protected $createdAt;
}
经验回答:
过去发生了什么,以及结果如何?
156.30 History对象
历史:
History={Event1,Event2,…,Eventn}History= \{Event_1,Event_2,\ldots,Event_n\}
历史强调时间和变化:
Statet→Eventt→Statet+1State_t \rightarrow Event_t \rightarrow State_{t+1}
因此:
History=Time+Event+ChangeHistory = Time+ Event+ Change
156.31 Memory、Experience与History的关系
三者不能混为一体:
Memory≠ExperienceMemory\neq Experience Experience≠HistoryExperience\neq History Memory≠HistoryMemory\neq History
它们分别承担不同职责:
Memory→保存过去信息Memory\rightarrow保存过去信息 Experience→保存经过评价的经历Experience\rightarrow保存经过评价的经历 History→保存时间变化过程History\rightarrow保存时间变化过程
三者共同形成:
Past→Memory→Experience→Knowledge\boxed{ Past \rightarrow Memory \rightarrow Experience \rightarrow Knowledge }
同时:
Past→HistoryPast \rightarrow History
156.32 第五类:Maintenance Object
156.32.1 Maintenance Object定义
**维护对象(Maintenance Object)**是ICAI维护领域中用于表达风险、自我保护、冲突、异常诊断、修复和验证等机器个体自我维护结构的领域对象。
基本结构:
MaintenanceObject=Risk+Protection+Conflict+Diagnosis+Repair\boxed{ MaintenanceObject= Risk+ Protection+ Conflict+ Diagnosis+ Repair }
156.33 Maintenance Object的组成
Maintenance Object
│
├── Risk
├── Protection
├── Conflict
├── Diagnosis
├── Repair
└── Verification
对应:
MachineRisk
MachineProtection
MachineConflict
MachineDiagnosis
MachineRepair
MachineVerification
156.34 Risk对象
风险对象:
Risk=Source+Target+Condition+Probability+Impact+Score+LevelRisk= Source+ Target+ Condition+ Probability+ Impact+ Score+ Level
工程:
class MachineRisk
{
protected $id;
protected $sourceObject;
protected $targetObject;
protected $condition;
protected $probability;
protected $impact;
protected $score;
protected $level;
protected $state;
}
风险对象负责描述:
PotentialProblemPotentialProblem
而不是已经发生的问题。
156.35 Protection对象
保护对象:
Risk→ProtectionRisk \rightarrow Protection
保护:
Protection=Risk+Rule+Action+Condition+ResultProtection= Risk+ Rule+ Action+ Condition+ Result
其目的不是修复已经发生的损坏,而是降低或者避免风险。
因此:
Protection≠RepairProtection\neq Repair
156.36 Conflict对象
冲突对象用于表达机器个体内部或者外部存在的结构矛盾。
例如:
Goal1∧Goal2→GoalConflictGoal_1\land Goal_2 \rightarrow GoalConflict
或者:
Resource1∧Resource2→ResourceConflictResource_1 \land Resource_2 \rightarrow ResourceConflict
冲突对象:
Conflict=Source+Target+Type+Condition+ResolutionConflict= Source+ Target+ Type+ Condition+ Resolution
因此:
Conflict→Resolution→VerificationConflict \rightarrow Resolution \rightarrow Verification
156.37 Diagnosis对象
诊断对象负责分析异常:
Anomaly→DiagnosisAnomaly \rightarrow Diagnosis
诊断:
Diagnosis=Anomaly+Evidence+Condition+Cause+Impact+ConclusionDiagnosis= Anomaly+ Evidence+ Condition+ Cause+ Impact+ Conclusion
诊断结果可以是:
Cause=TrueCause=True
也可以:
Cause=UnknownCause=Unknown
未知诊断结果必须保留为未知,不能强制转换为确定原因。
156.38 Repair对象
修复对象负责执行恢复过程:
Diagnosis→RepairDiagnosis \rightarrow Repair
修复结构:
Repair=Target+Diagnosis+Method+Action+BeforeState+ExpectedState+AfterState+VerificationRepair= Target+ Diagnosis+ Method+ Action+ BeforeState+ ExpectedState+ AfterState+ Verification
因此:
Diagnosis≠RepairDiagnosis\neq Repair
诊断回答:
哪里出了问题?可能为什么?
修复回答:
如何恢复?
156.39 五类领域对象的统一关系
ICAI五大领域对象形成统一结构:
Individual Object
│
├───────────────┐
↓ ↓
Cognitive Object Maintenance Object
│
↓
Goal / Capability
│
↓
Behavior Object
│
↓
Memory Object
│
└──────────────→ Individual Object
进一步:
Individual→Cognition→Behavior→Memory→Individual\boxed{ Individual \rightarrow Cognition \rightarrow Behavior \rightarrow Memory \rightarrow Individual }
维护结构贯穿整个过程:
\boxed{ Maintenance \rightarrow Cognition Maintenance→BehaviorMaintenance \rightarrow Behavior Maintenance→MemoryMaintenance \rightarrow Memory Maintenance \rightarrow Individual }
156.40 五大领域对象的职责边界
建立严格职责边界:
| 领域对象 | 核心职责 |
|---|---|
| Individual Object | 表示“是谁”以及整体个体结构 |
| Cognitive Object | 表示“认识了什么、知道什么、需要什么、目标是什么、具有什么能力” |
| Behavior Object | 表示“采用什么方法、做什么决策、执行什么行为、产生什么结果” |
| Memory Object | 表示“过去发生了什么、保存了什么、形成了什么经验” |
| Maintenance Object | 表示“存在什么风险、冲突和异常,以及如何保护、诊断和修复” |
因此:
Identity→Cognition→Behavior→Memory→Maintenance\boxed{ Identity \rightarrow Cognition \rightarrow Behavior \rightarrow Memory \rightarrow Maintenance }
不是简单的模块划分,而是按照领域职责建立对象边界。
156.41 Domain Object之间的关系
领域对象之间不是继承关系为主,而是**组合关系(Composition)和关联关系(Association)**为主。
例如:
IndividualObject→CognitiveObjectIndividualObject \rightarrow CognitiveObject CognitiveGoal→CognitiveCapabilityCognitiveGoal \rightarrow CognitiveCapability CognitiveCapability→CognitiveMethodCognitiveCapability \rightarrow CognitiveMethod CognitiveMethod→CognitiveDecisionCognitiveMethod \rightarrow CognitiveDecision CognitiveDecision→CognitiveBehaviorCognitiveDecision \rightarrow CognitiveBehavior CognitiveBehavior→CognitiveResultCognitiveBehavior \rightarrow CognitiveResult CognitiveResult→MachineMemoryCognitiveResult \rightarrow MachineMemory MachineRisk→MachineProtectionMachineRisk \rightarrow MachineProtection
因此:
ICAIObjectGraph=(V,E)\boxed{ ICAIObjectGraph=(V,E) }
其中:
- VV:领域对象集合;
- EE:领域对象之间的关系。
156.42 Domain Object与继承
ICAI可以使用继承表达具有稳定“is-a”关系的对象。
例如:
class MachineObject
{
protected $id;
protected $type;
}
可以存在:
class CognitiveObject extends MachineObject
{
}
但是不能为了追求继承而强行建立复杂继承树。
ICAI更重要的是:
CompositionComposition
而不是:
InheritanceInheritance
因为机器个体本质上是多个领域对象的组合:
MachineIndividual=Composition(Cognition,Behavior,Memory,Maintenance)MachineIndividual = Composition( Cognition, Behavior, Memory, Maintenance )
156.43 Domain Object与Service
领域对象定义:
StructureStructure
Service负责:
WorkflowWorkflow
例如:
MachineIndividualService→CognitiveService→BehaviorService→MemoryServiceMachineIndividualService \rightarrow CognitiveService \rightarrow BehaviorService \rightarrow MemoryService
因此:
Domain Object
↓
Service
↓
Engine
↓
Repository
形成:
DomainObject→Service→Engine→Repository\boxed{ DomainObject \rightarrow Service \rightarrow Engine \rightarrow Repository }
156.44 Domain Object与Engine
例如:
CognitiveGoal→GoalEngineCognitiveGoal \rightarrow GoalEngine CognitiveCapability→CapabilityEngineCognitiveCapability \rightarrow CapabilityEngine CognitiveMethod→MethodEngineCognitiveMethod \rightarrow MethodEngine CognitiveDecision→DecisionEngineCognitiveDecision \rightarrow DecisionEngine CognitiveBehavior→BehaviorEngineCognitiveBehavior \rightarrow BehaviorEngine MachineRisk→RiskEngineMachineRisk \rightarrow RiskEngine
领域对象保存结构,Engine完成计算。
因此:
DomainObject=What\boxed{ DomainObject=What } Engine=How\boxed{ Engine=How }
156.45 Domain Object与Repository
每个需要持久化的领域对象,可以通过Repository保存:
DomainObject→Repository→MySQLDomainObject \rightarrow Repository \rightarrow MySQL
例如:
IndividualObject→IndividualRepositoryIndividualObject \rightarrow IndividualRepository CognitiveObject→CognitiveObjectRepositoryCognitiveObject \rightarrow CognitiveObjectRepository CognitiveGoal→GoalRepositoryCognitiveGoal \rightarrow GoalRepository CognitiveBehavior→BehaviorRepositoryCognitiveBehavior \rightarrow BehaviorRepository MachineMemory→MemoryRepositoryMachineMemory \rightarrow MemoryRepository MachineRisk→RiskRepositoryMachineRisk \rightarrow RiskRepository
156.46 完整ICAI领域对象体系
最终建立:
ICAI Domain Object Model
│
├── Individual Object
│ ├── Individual
│ ├── Identity
│ ├── Type
│ └── Boundary
│
├── Cognitive Object
│ ├── Object
│ ├── Attribute
│ ├── State
│ ├── Relation
│ ├── Scene
│ ├── Knowledge
│ ├── Need
│ ├── Goal
│ └── Capability
│
├── Behavior Object
│ ├── Method
│ ├── Decision
│ ├── Behavior
│ ├── Action
│ ├── Result
│ └── Feedback
│
├── Memory Object
│ ├── Memory
│ ├── Experience
│ ├── History
│ ├── InitialMemory
│ └── HistoricalData
│
└── Maintenance Object
├── Risk
├── Protection
├── Conflict
├── Diagnosis
├── Repair
└── Verification
156.47 完整领域对象运行链
机器个体运行时:
IndividualObject→CognitiveObject→BehaviorObject→MemoryObject→IndividualObject\boxed{ IndividualObject \rightarrow CognitiveObject \rightarrow BehaviorObject \rightarrow MemoryObject \rightarrow IndividualObject }
维护贯穿:
MaintenanceObject→CognitiveObject\boxed{ MaintenanceObject \rightarrow CognitiveObject } MaintenanceObject→BehaviorObject\boxed{ MaintenanceObject \rightarrow BehaviorObject } MaintenanceObject→MemoryObject\boxed{ MaintenanceObject \rightarrow MemoryObject }
形成完整运行:
Individual→Cognition→Goal→Capability→Method→Decision→Behavior→Action→Result→Feedback→Memory→Experience→Learning→Update→Individual\boxed{ Individual \rightarrow Cognition \rightarrow Goal \rightarrow Capability \rightarrow Method \rightarrow Decision \rightarrow Behavior \rightarrow Action \rightarrow Result \rightarrow Feedback \rightarrow Memory \rightarrow Experience \rightarrow Learning \rightarrow Update \rightarrow Individual }
同时:
Risk→ProtectionRisk \rightarrow Protection Conflict→ResolutionConflict \rightarrow Resolution Anomaly→Diagnosis→Repair→VerificationAnomaly \rightarrow Diagnosis \rightarrow Repair \rightarrow Verification
156.48 Runtime中的领域对象
进入Runtime以后,五类领域对象并不是重新创建一套完全不同的对象,而是进入当前运行上下文。
RuntimeContext={Individual,Cognition,Behavior,Memory,Maintenance}RuntimeContext= \{ Individual, Cognition, Behavior, Memory, Maintenance \}
因此:
Runtime→DomainObjectsRuntime \rightarrow DomainObjects
Runtime主要负责协调当前对象状态:
RuntimeStatet→DomainObjectStatetRuntimeState_t \rightarrow DomainObjectState_t
当发生变化:
Event→StateUpdateEvent \rightarrow StateUpdate
形成:
DomainObjectt→DomainObjectt+1DomainObject_t \rightarrow DomainObject_{t+1}
156.49 一个完整对象运行实例
例如机器个体面对一个具体对象:
ObjectAObject_A
首先:
CognitiveObjectCognitiveObject
记录:
AttributeAttribute
和:
StateState
认知形成:
StateDifference→Need→GoalStateDifference \rightarrow Need \rightarrow Goal
能力匹配:
Goal→CapabilityGoal \rightarrow Capability
方法匹配:
Capability→MethodCapability \rightarrow Method
决策:
Method→DecisionMethod \rightarrow Decision
行为:
Decision→BehaviorDecision \rightarrow Behavior
动作:
Behavior→ActionBehavior \rightarrow Action
结果:
Action→ResultAction \rightarrow Result
反馈:
Result→FeedbackResult \rightarrow Feedback
记忆:
Feedback→MemoryFeedback \rightarrow Memory
经验:
Memory→ExperienceMemory \rightarrow Experience
如果发现异常:
Anomaly→Diagnosis→Repair→VerificationAnomaly \rightarrow Diagnosis \rightarrow Repair \rightarrow Verification
最终:
Update→IndividualUpdate \rightarrow Individual
这样,五类领域对象形成了一个真正连续的机器个体运行结构。
156.50 PHP工程对象体系
可以建立基础对象目录:
domain/
│
├── individual/
│ ├── IndividualObject.php
│ ├── IndividualIdentity.php
│ ├── IndividualType.php
│ └── IndividualBoundary.php
│
├── cognitive/
│ ├── CognitiveObject.php
│ ├── CognitiveAttribute.php
│ ├── CognitiveState.php
│ ├── CognitiveRelation.php
│ ├── CognitiveScene.php
│ ├── CognitiveKnowledge.php
│ ├── CognitiveNeed.php
│ ├── CognitiveGoal.php
│ └── CognitiveCapability.php
│
├── behavior/
│ ├── CognitiveMethod.php
│ ├── CognitiveDecision.php
│ ├── CognitiveBehavior.php
│ ├── CognitiveAction.php
│ ├── CognitiveResult.php
│ └── CognitiveFeedback.php
│
├── memory/
│ ├── MachineMemory.php
│ ├── MachineExperience.php
│ ├── MachineHistory.php
│ ├── InitialMemory.php
│ └── HistoricalData.php
│
└── maintenance/
├── MachineRisk.php
├── MachineProtection.php
├── MachineConflict.php
├── MachineDiagnosis.php
├── MachineRepair.php
└── MachineVerification.php
156.51 Domain Object的工程分层
完整工程:
ICAI Theory
↓
Domain Model
↓
Domain Object
↓
Service
↓
Engine
↓
Repository
↓
MySQL
↓
Runtime
对应:
Theory→DomainObjectTheory \rightarrow DomainObject DomainObject→ServiceDomainObject \rightarrow Service Service→EngineService \rightarrow Engine Engine→RepositoryEngine \rightarrow Repository Repository→MySQLRepository \rightarrow MySQL
156.52 ICAI领域对象模型的核心原则
本章建立以下原则。
原则一:理论概念必须具有领域对象映射
TheoryConcept→DomainObjectTheoryConcept \rightarrow DomainObject
原则二:领域对象必须具有明确边界
ObjectA≠ObjectBObject_A\neq Object_B
原则三:领域对象必须具有明确职责
Object→ResponsibilityObject \rightarrow Responsibility
原则四:结构与计算分离
DomainObject≠EngineDomainObject\neq Engine
原则五:领域对象与持久化分离
DomainObject≠DatabaseRecordDomainObject\neq DatabaseRecord
原则六:复杂个体通过对象组合形成
Individual=Composition(DomainObjects)Individual = Composition(DomainObjects)
原则七:Runtime负责协调对象运行
DomainObjects→RuntimeDomainObjects \rightarrow Runtime
156.53 本章总结
第156章在第155章面向对象工程的基础上,进一步建立了ICAI的领域对象模型。
首先定义:
DomainObject=Identity+Structure+State+Relation+Responsibility\boxed{ DomainObject= Identity+ Structure+ State+ Relation+ Responsibility }
领域对象不是普通程序对象,也不是数据库记录,更不是Engine。
其核心作用是把ICAI理论中的实体和结构转换为具有明确工程边界的程序领域对象。
ICAI建立五大核心领域对象:
IndividualObject\boxed{ IndividualObject }
表示:
是谁是谁 CognitiveObject\boxed{ CognitiveObject }
表示:
认识什么、知道什么、需要什么、目标是什么、具有什么能力认识什么、知道什么、需要什么、目标是什么、具有什么能力 BehaviorObject\boxed{ BehaviorObject }
表示:
如何执行、如何决策、如何行为、产生什么结果如何执行、如何决策、如何行为、产生什么结果 MemoryObject\boxed{ MemoryObject }
表示:
过去发生了什么、保存了什么、形成了什么经验过去发生了什么、保存了什么、形成了什么经验 MaintenanceObject\boxed{ MaintenanceObject }
表示:
存在什么风险、冲突和异常,以及如何保护、诊断和修复存在什么风险、冲突和异常,以及如何保护、诊断和修复
五类领域对象形成:
Individual→Cognition→Behavior→Memory→Individual\boxed{ Individual \rightarrow Cognition \rightarrow Behavior \rightarrow Memory \rightarrow Individual }
维护结构贯穿其中:
Risk→Protection\boxed{ Risk \rightarrow Protection } Conflict→Resolution\boxed{ Conflict \rightarrow Resolution } Anomaly→Diagnosis→Repair→Verification\boxed{ Anomaly \rightarrow Diagnosis \rightarrow Repair \rightarrow Verification }
最终,ICAI领域对象工程形成完整映射:
ICAI理论→领域模型→领域对象→PHPClass→Service→Engine→Repository→MySQL→Runtime\boxed{ ICAI理论 \rightarrow 领域模型 \rightarrow 领域对象 \rightarrow PHP Class \rightarrow Service \rightarrow Engine \rightarrow Repository \rightarrow MySQL \rightarrow Runtime }
因此,ICAI面向对象工程并不是简单地把每一个名词写成一个Class,而是按照理论概念、领域职责、对象边界、对象关系、计算职责、持久化职责和Runtime职责建立一套完整的领域对象体系。
其最终目标是:
一个理论概念→一个明确领域对象→一个明确程序结构→一个可运行的Runtime对象\boxed{ 一个理论概念 \rightarrow 一个明确领域对象 \rightarrow 一个明确程序结构 \rightarrow 一个可运行的Runtime对象 }
由此,ICAI理论正式从“理论对象体系”进入“领域对象工程体系”。