第168章 ICAI OOP统一对象体系
168.1 提出背景
前两章已经建立了ICAI OOP的两个基础方向。
第166章建立了继承体系:
Individual
↓
Individual Type
↓
Specific Type
第167章建立了组合体系:
Individual
├── Object
├── Knowledge
├── Capability
├── Method
├── Behavior
├── Memory
└── Experience
但是,仅仅建立继承和组合还不足以形成完整的ICAI运行系统。
因为程序真正运行时,并不是Class本身在执行。
Class只是对象的结构定义。
真正进入内存、保存当前状态、接受方法调用、产生结果并参与认知过程的是Object。
因此必须建立:
Class
↓
Object
↓
Runtime Object
↓
Runtime State
↓
Cognitive Execution
由此,本章建立ICAI的统一对象体系(Unified Object System)。
其核心关系为:
Class
↓
Inheritance
↓
Class Structure
↓
Instantiation
↓
Object
↓
Composition
↓
Object Network
↓
Runtime
↓
Runtime Object
这一体系将前面的Individual、Object、Attribute、Knowledge、Capability、Method、Behavior、Action、Execution、Result、Feedback、Memory、Experience等Class统一到一个OOP运行框架中。
168.2 统一对象体系定义
**ICAI OOP统一对象体系(ICAI OOP Unified Object System)**是指通过Class、Inheritance、Composition、Relation和Runtime Object,将ICAI认知对象组织为一个统一的软件对象系统。
可以定义:
U=(C,O,R,I,Co,RT)U=(C,O,R,I,Co,RT)
其中:
- UU:Unified Object System,统一对象体系;
- CC:Class集合;
- OO:Object集合;
- RR:Relation集合;
- II:Inheritance,继承结构;
- CoCo:Composition,组合结构;
- RTRT:Runtime Object集合。
因此:
统一对象体系
├── Class
├── Inheritance
├── Composition
├── Relation
├── Object
└── Runtime Object
这六个部分共同构成ICAI OOP工程基础。
168.3 Class的定义
**Class(类)**是ICAI中对一类对象的结构、属性和方法进行定义的软件对象模板。
Class描述的是:
对象应该具有什么结构
对象应该具有什么属性
对象能够执行什么操作
对象属于什么类型
对象与哪些类型存在继承关系
例如:
class Individual
{
}
class ObjectEntity
{
}
class Attribute
{
}
class Knowledge
{
}
class Capability
{
}
class Method
{
}
class Behavior
{
}
这些Class本身不是具体个体。
例如:
class Robot extends Individual
{
}
Robot是Class。
而:
$robot = new Robot();
产生的$robot才是Object。
因此:
Class ≠ Object
168.4 ICAI核心Class
ICAI需要建立一组核心Class。
可以分为几个层级。
第一层:主体与对象
Individual
Object
Attribute
State
Relation
第二层:知识与认知
Knowledge
Memory
Experience
第三层:能力与方法
Capability
Method
Decision
第四层:行为与执行
Behavior
Action
Execution
Result
Feedback
第五层:问题处理
Risk
Conflict
Diagnosis
Protection
Repair
Verification
于是形成:
ICAI Core Classes
│
├── Individual
├── Object
├── Attribute
├── State
├── Relation
│
├── Knowledge
├── Memory
├── Experience
│
├── Capability
├── Method
├── Decision
│
├── Behavior
├── Action
├── Execution
├── Result
├── Feedback
│
└── Risk / Conflict / Diagnosis / Protection / Repair
这些Class并不是互相孤立的。
它们通过继承、组合和Relation形成统一对象网络。
168.5 Core Class与职责边界
ICAI必须避免建立一个“超级Class”。
例如不能设计:
ICAI
↓
什么都负责
然后把:
Object
Knowledge
Memory
Capability
Decision
Behavior
Execution
全部塞进一个Class。
正确方式是:
Individual
↓
组合多个认知对象
Object
↓
组合Attribute
Capability
↓
管理能力条件
Method
↓
描述解决过程
Decision
↓
选择候选方案
Behavior
↓
组织执行动作
Execution
↓
记录实际执行
Result
↓
记录执行结果
Feedback
↓
处理结果反馈
因此:
统一对象体系不是统一成一个Class,而是把多个职责明确的Class统一到一个对象体系中。
168.6 Class关系
Class之间存在多种关系。
最基本的四种关系为:
Inheritance
Composition
Association
Dependency
分别表示:
Inheritance → 类型继承
Composition → 对象组成
Association → 对象关联
Dependency → 对象依赖
在ICAI中还需要特别关注:
Implementation
Aggregation
Reference
这些关系共同形成Class结构。
168.7 Class继承关系
Class继承表示类型之间的层级关系。
例如:
Individual
↓
Human
↓
Engineer
表示:
Engineer is-a Human
Human is-a Individual
PHP:
class Individual
{
}
class Human extends Individual
{
}
class Engineer extends Human
{
}
因此:
Engineer
↓
Human
↓
Individual
构成Class继承树。
168.8 Class组合关系
Class组合表示一个Class内部包含另一个Class的对象。
例如:
Individual
↓
Capability
表示:
Individual has-a Capability
PHP:
class Individual
{
protected $capabilities;
public function __construct()
{
$this->capabilities = array();
}
}
Capability仍然是独立Class。
因此:
Individual Class
↓
Capability Class
并不意味着:
Capability extends Individual
二者完全不同。
168.9 Class关联关系
**Association(关联)**表示两个Class之间存在逻辑上的连接关系,但一个Class不一定拥有另一个Class。
例如:
Memory
↔
Object
Memory可能记录某个Object的历史信息。
但Memory并不是Object的子类,也不一定是Object的组成部分。
可以通过:
object_id
memory_id
relation
建立关联。
因此:
继承 → 类型关系
组合 → 包含关系
关联 → 逻辑连接
168.10 Class依赖关系
**Dependency(依赖)**表示一个Class在执行某项操作时需要另一个Class提供服务或信息。
例如:
Decision
↓ depends on
Capability
Decision可能需要Capability判断候选方法是否可执行。
又例如:
Execution
↓ depends on
Action
Execution需要Action作为执行对象。
这种关系不等于组合。
因此:
Decision
depends-on
Capability
不一定表示:
Decision
owns
Capability
必须保持两者区别。
168.11 ICAI Class关系总模型
综合起来:
Individual
/ | \
/ | \
extends composition association
↓ ↓ ↓
Human Capability Memory
↓
Engineer
进一步:
Individual
↓
Capability
↓
Method
↓
Decision
↓
Behavior
↓
Action
↓
Execution
↓
Result
↓
Feedback
↓
Memory
↓
Experience
这里不同箭头必须根据实际语义分别实现。
不能把所有关系都实现为extends。
168.12 Object关系
Class定义关系以后,运行时真正发生的是Object之间的关系。
例如:
$robot
↓
$cup
Robot对象可能关联Cup对象。
这不是:
Robot Class extends Cup Class
而是:
Robot Object
relation
↓
Cup Object
因此必须区分:
Class Relation
与:
Object Relation
168.13 Class关系与Object关系
Class关系描述:
类型如何组织
Object关系描述:
具体对象之间如何连接
例如:
Class层:
Robot extends Individual
Object层:
robot_001
located_in
room_001
再例如:
Class层:
Object has Attribute
Object层:
cup_001
has_attribute
color=white
因此:
ClassRelation≠ObjectRelationClassRelation \neq ObjectRelation
Class关系相对稳定。
Object关系可以随着Runtime变化。
168.14 Object实例化
Class必须经过实例化才能形成Object。
例如:
$robot = new Robot(1, 'robot');
这里:
Robot Class
↓ new
Robot Object
再例如:
$cup = new ObjectEntity(100, 'cup');
形成:
ObjectEntity Class
↓ new
cup Object
因此:
Class
↓
Instantiation
↓
Object
实例化是从结构定义进入对象存在的关键过程。
168.15 Runtime Object
**Runtime Object(运行时对象)**是Class实例化后,在程序实际运行环境中具有当前状态、当前关系和当前数据的Object。
例如:
$robot = new Robot(1, 'robot');
此时$robot已经成为Runtime Object。
它可能拥有:
ID = 1
Type = robot
State = ready
Capability = move
Method = navigation
Memory = ...
Experience = ...
因此:
Robot Class
↓
new Robot()
↓
Robot Object
↓
Runtime Object
严格来说,Object只强调实例身份,而Runtime Object强调:
该Object已经进入当前程序运行过程,并具有实时运行状态。
168.16 Runtime Object模型
可以定义:
RO=(I,S,C,R,T)RO=(I,S,C,R,T)
其中:
- RORO:Runtime Object;
- II:Object Identity,对象身份;
- SS:当前State;
- CC:当前Context,上下文;
- RR:当前Relations,当前关系;
- TT:Runtime Time,运行时间。
因此Runtime Object不是静态数据库记录。
它是:
Object
+
Current State
+
Current Context
+
Current Relations
+
Runtime Time
例如:
robot_001
State = Ready
Context = Room_A
Relation = near(cup_001)
Time = 10:30
这就是运行时个体状态。
168.17 Runtime Object与数据库记录
必须严格区分:
Database Record
和:
Runtime Object
数据库保存:
individuals
id=1
type=robot
state=ready
PHP运行时:
$robot = new Robot(1, 'robot');
形成:
$robot
↓
Runtime Object
关系为:
Database
↓ load
Entity Object
↓ initialize
Runtime Object
因此:
数据库是持久化层,Runtime Object是运行层。
数据库记录不能直接等同于ICAI Runtime Object。
168.18 Runtime Object的生命周期
Runtime Object具有生命周期:
Class Definition
↓
Instantiation
↓
Created
↓
Initialized
↓
Loaded
↓
Ready
↓
Running
↓
Updated
↓
Saved
↓
Released
如果发生异常:
Running
↓
Failed
↓
Diagnosis
↓
Repair
↓
Ready
因此:
Runtime Object
↓
State Transition
是ICAI运行系统的重要组成部分。
168.19 Runtime Object与State
Runtime Object必须拥有当前State。
例如:
Robot
State = Ready
执行后:
Robot
State = Running
执行结束:
Robot
State = Completed
失败:
Robot
State = Failed
因此:
ROt=(O,St)RO_t=(O,S_t)
其中:
- ROtRO_t:时间 tt 的Runtime Object;
- OO:对象身份;
- StS_t:时间 tt 的对象状态。
状态发生变化:
St→St+1S_t \rightarrow S_{t+1}
因此:
Runtime Object
↓
State Change
↓
New Runtime State
168.20 Runtime Object与Capability
Capability在Class层定义结构。
Runtime Object中保存当前Capability状态。
例如Class:
Capability
Type
Condition
State
Range
Verification
运行时:
robot_001
Capability: Move
State = Available
Range = 10m
Verification = Passed
另一个Robot:
robot_002
Capability: Move
State = Blocked
Range = 0m
Verification = Failed
二者Class类型相同,但Runtime状态不同。
因此:
Class
→ 定义Capability结构
Runtime Object
→ 保存Capability当前实例状态
168.21 Runtime Object与Method
Method同样需要从Class结构进入Runtime实例。
Class层:
Method
Type
Condition
Process
Action
Result
Runtime层:
Method Instance
State = Running
CurrentAction = Action_02
Result = Pending
形成:
Method Class
↓
Method Object
↓
Runtime Method Object
这样ICAI才能知道:
当前正在执行哪个Method
当前执行到哪个Action
当前是否成功
当前是否失败
168.22 Runtime Object与Behavior
Behavior进入Runtime以后,也需要成为运行对象。
Behavior Class
↓
Behavior Object
↓
Runtime Behavior
运行状态:
Created
↓
Ready
↓
Running
↓
Completed
失败:
Running
↓
Failed
因此:
Individual Runtime Object
↓
Behavior Runtime Object
↓
Action Runtime Object
↓
Execution Runtime Object
↓
Result
形成实际执行链。
168.23 Runtime对象网络
一个ICAI Runtime并不是只有一个对象。
通常存在大量Runtime Object:
Individual_001
│
├── Object_101
├── Object_102
├── Knowledge_201
├── Capability_301
├── Method_401
├── Behavior_501
├── Memory_601
└── Experience_701
这些对象之间又存在:
contains
owns
uses
relates_to
depends_on
causes
before
after
supports
conflicts_with
等关系。
因此ICAI Runtime本质上可以表示为:
RT=(O,R,S)RT=(O,R,S)
其中:
- RTRT:Runtime Object Network;
- OO:运行时对象集合;
- RR:运行时关系集合;
- SS:运行时状态集合。
168.24 Runtime对象图
可以建立:
Individual_001
/ | \
/ | \
↓ ↓ ↓
Object_101 Capability_301 Knowledge_201
↓ ↓
Attribute_01 Method_401
↓
Decision_501
↓
Behavior_601
↓
Action_701
↓
Execution_801
↓
Result
↓
Feedback
↓
Memory
↓
Experience
这已经不是简单的Class列表。
而是一个实际运行中的对象网络(Object Network)。
168.25 Class、Object、Runtime Object三级模型
ICAI可以建立三级结构:
第一层:Class
↓
第二层:Object
↓
第三层:Runtime Object
第一层:
Class
负责:
定义结构
定义属性
定义方法
定义类型
第二层:
Object
负责:
拥有唯一身份
保存实例数据
建立对象关系
第三层:
Runtime Object
负责:
当前状态
当前上下文
当前执行
当前关系
当前结果
因此:
Class→Object→RuntimeClass \rightarrow Object \rightarrow Runtime
成为ICAI OOP的基本运行链。
168.26 一个完整实例
假设建立Robot。
Class层:
class Robot extends Individual
{
protected $device;
public function move($target)
{
return $target;
}
}
实例化:
$robot = new Robot(1, 'robot');
Object层:
Robot Object
ID = 1
Type = robot
组合:
Robot Object
├── Object: Cup
├── Capability: Move
├── Capability: Grasp
├── Method: MoveTo
├── Behavior: FetchCup
├── Memory
└── Experience
Runtime:
Robot Runtime
State = Running
Current Goal = Fetch Cup
Current Method = MoveTo
Current Behavior = FetchCup
Current Action = Move
执行:
Decision
↓
Behavior
↓
Action
↓
Execution
↓
Result
↓
Feedback
这就是一个完整的ICAI Runtime Object过程。
168.27 Runtime Object与认知闭环
统一对象体系最终必须进入ICAI认知闭环。
完整过程:
Runtime Individual
↓
Current State
↓
Object Perception
↓
Object / Attribute
↓
Knowledge
↓
Need
↓
Goal
↓
Capability
↓
Method
↓
Decision
↓
Behavior
↓
Action
↓
Execution
↓
Result
↓
Feedback
↓
Memory
↓
Experience
↓
Runtime Object Update
最后:
Experience
↓
Capability Update
↓
Method Update
↓
Runtime Object State Update
形成:
认知
↓
决策
↓
执行
↓
结果
↓
反馈
↓
学习
↓
更新
↓
再次认知
168.28 统一对象体系的PHP结构
可以建立基础对象结构:
class Individual
{
protected $id;
protected $type;
protected $objects;
protected $knowledge;
protected $capabilities;
protected $methods;
protected $behaviors;
protected $memories;
protected $experiences;
public function __construct($id, $type)
{
$this->id = $id;
$this->type = $type;
$this->objects = array();
$this->knowledge = array();
$this->capabilities = array();
$this->methods = array();
$this->behaviors = array();
$this->memories = array();
$this->experiences = array();
}
}
Robot:
class Robot extends Individual
{
protected $device;
public function setDevice($device)
{
$this->device = $device;
}
public function getDevice()
{
return $this->device;
}
}
Runtime对象可以通过独立运行时结构管理:
class RuntimeObject
{
protected $object;
protected $state;
protected $context;
protected $relations;
public function __construct($object)
{
$this->object = $object;
$this->state = 'created';
$this->context = array();
$this->relations = array();
}
public function setState($state)
{
$this->state = $state;
}
public function getState()
{
return $this->state;
}
}
这样形成:
Individual Class
↓
Individual Object
↓
RuntimeObject
168.29 RuntimeManager
Runtime对象数量增加以后,需要建立独立Runtime管理器。
class RuntimeManager
{
protected $objects;
public function __construct()
{
$this->objects = array();
}
public function register($runtimeObject)
{
$this->objects[] = $runtimeObject;
}
public function getAll()
{
return $this->objects;
}
public function find($index)
{
if (isset($this->objects[$index])) {
return $this->objects[$index];
}
return null;
}
}
形成:
Class
↓
Object
↓
RuntimeObject
↓
RuntimeManager
其中:
Class → 定义
Object → 实例
RuntimeObject → 运行状态
RuntimeManager → 运行管理
168.30 Runtime Object与持久化
Runtime Object发生变化以后,需要保存到持久化层。
例如:
Runtime State
Ready
↓
Running
↓
Completed
系统需要将最终状态保存:
Runtime Object
↓
Repository
↓
MySQL
例如:
class IndividualRepository
{
protected $db;
public function __construct($db)
{
$this->db = $db;
}
public function save($individual)
{
// 持久化Individual对象
}
}
这里故意将数据库操作放在Repository,而不是放入Individual本身。
保持:
Entity
↓
Repository
↓
Database
的工程边界。
168.31 Class关系数据库映射
Class继承关系主要属于代码结构。
例如:
Individual
↓
Robot
通常由PHP:
class Robot extends Individual
{
}
实现。
而Object关系需要数据库持久化。
例如:
individual_objects
individual_capabilities
individual_methods
individual_memories
individual_experiences
形成:
Individual
↓
Relation Table
↓
Object
因此:
Class继承
→ PHP代码结构
Object组合
→ PHP对象引用 + 数据库关系
Runtime状态
→ 内存对象 + 状态持久化
168.32 统一对象体系中的四种核心关系
最终可以把ICAI OOP统一对象体系归纳为四种核心关系。
第一:Inheritance
Robot
↓
Individual
表示:
is-a
第二:Composition
Individual
↓
Capability
表示:
has-a
第三:Association
Memory
↔
Object
表示:
related-to
第四:Runtime Relation
Robot Runtime
↓
near
↓
Cup Runtime
表示:
运行时对象之间的实际关系
于是:
ObjectSystem=Inheritance+Composition+Association+RuntimeRelationObjectSystem= Inheritance+ Composition+ Association+ RuntimeRelation
168.33 统一对象模型
综合第166章和第167章,可以建立完整模型:
Class
│
┌─────────────┴─────────────┐
↓ ↓
Inheritance Composition
│ │
↓ ↓
Class Hierarchy Object Structure
│ │
└─────────────┬─────────────┘
↓
Object
│
┌────────┼────────┐
↓ ↓ ↓
State Relation Attribute
│
↓
Runtime Object
│
↓
Execution
│
↓
Result
│
↓
Feedback
│
↓
Memory
│
↓
Experience
│
↓
Object Update
这就是ICAI统一对象体系的基本结构。
168.34 从Class到Runtime的转换
ICAI可以建立统一转换链:
Class→Instantiation→Object→Initialization→RuntimeObjectClass \rightarrow Instantiation \rightarrow Object \rightarrow Initialization \rightarrow RuntimeObject
其中:
- Class:类定义;
- Instantiation:实例化;
- Object:对象实例;
- Initialization:对象初始化;
- RuntimeObject:运行时对象。
进一步:
RuntimeObject→State→Action→Execution→ResultRuntimeObject \rightarrow State \rightarrow Action \rightarrow Execution \rightarrow Result
最终:
Result→Feedback→Memory→Experience→UpdateResult \rightarrow Feedback \rightarrow Memory \rightarrow Experience \rightarrow Update
因此整个系统形成:
Class
→ Object
→ Runtime Object
→ Cognition
→ Decision
→ Behavior
→ Execution
→ Result
→ Feedback
→ Memory
→ Experience
→ Update
168.35 统一对象体系的核心原则
ICAI OOP统一对象体系必须遵循以下原则。
第一,Class是结构定义,不是运行时对象。
第二,Object是Class实例化后的具体对象。
第三,Runtime Object是进入当前运行过程并具有实时状态的对象。
第四,继承表示类型关系。
第五,组合表示对象组成关系。
第六,关联表示对象之间的逻辑连接。
第七,Runtime Relation表示运行时对象之间的实际关系。
第八,Individual不是所有认知功能的超级Class。
第九,Knowledge、Capability、Method、Behavior、Memory、Experience等必须保持独立Class职责。
第十,数据库记录不能直接等同于Runtime Object。
第十一,Runtime Object必须能够表达当前State、Context和Relation。
第十二,Runtime对象的变化必须能够形成State Transition。
第十三,执行产生Result,Result产生Feedback,Feedback进一步影响Memory和Experience。
第十四,Class体系负责稳定结构,Runtime体系负责动态运行。
168.36 ICAI统一对象体系最终模型
最终可以建立ICAI OOP统一模型:
ICAI OOP
│
┌──────────────┴──────────────┐
↓ ↓
Class Object
│ │
┌──────┴──────┐ ┌─────┴─────┐
↓ ↓ ↓ ↓
Inheritance Definition Composition Relation
│ │ │
↓ └─────┬─────┘
Class Hierarchy ↓
Object Network
│
↓
Runtime Object
│
┌───────────┼───────────┐
↓ ↓ ↓
State Context Relation
│
↓
Cognition
↓
Decision
↓
Behavior
↓
Action
↓
Execution
↓
Result
↓
Feedback
↓
Memory
↓
Experience
↓
Update
由此形成:
ICAI OOP=Class+Inheritance+Composition+Relation+Object+RuntimeICAI\ OOP = Class + Inheritance + Composition + Relation + Object + Runtime
168.37 总结
第168章建立了ICAI OOP统一对象体系。
第166章解决的是:
Class之间如何通过继承形成类型体系。
第167章解决的是:
Object之间如何通过组合形成复合结构。
第168章进一步将二者统一:
Class
↓
Inheritance
↓
Class Structure
↓
Instantiation
↓
Object
↓
Composition / Relation
↓
Object Network
↓
Runtime Object
↓
State
↓
Cognitive Execution
其中最重要的概念区别是:
Class
→ 定义“是什么”
Object
→ 表示“具体是哪一个”
Runtime Object
→ 表示“这个对象当前正在怎样运行”
同时:
Inheritance
→ 类型结构
Composition
→ 对象结构
Relation
→ 对象连接
Runtime
→ 当前运行状态
最终,Individual不再是一个孤立Class,而成为一个由多个认知对象组成、能够进入Runtime运行环境的复合主体:
Individual
├── Object
│ └── Attribute
├── Knowledge
├── Capability
├── Method
├── Behavior
├── Memory
└── Experience
而这些对象在Runtime中形成动态对象网络:
Individual Runtime
↓
Object Runtime
↓
Knowledge / Capability / Method
↓
Decision
↓
Behavior
↓
Action
↓
Execution
↓
Result
↓
Feedback
↓
Memory
↓
Experience
↓
Runtime Update
至此,ICAI已经从前面的单个Class设计发展到Class体系 → Object体系 → Runtime对象体系。
这意味着ICAI OOP已经具备了一个重要的工程基础:
Class负责定义认知对象,Object负责承载认知对象,Relation负责连接认知对象,Composition负责组织认知对象,Inheritance负责形成类型层级,而Runtime Object负责让这些对象真正进入运行过程。
因此,ICAI的OOP体系不是简单的PHP Class集合,而是:
Class→Object→Runtime→Cognition→Action→Feedback→Learning→Update\boxed{ Class \rightarrow Object \rightarrow Runtime \rightarrow Cognition \rightarrow Action \rightarrow Feedback \rightarrow Learning \rightarrow Update }
这一结构为后续建立ICAI Runtime对象管理、对象生命周期、对象状态机以及认知运行时内核提供了直接的工程基础。