首页 理论 架构 工程 文档 白皮书 著作 研究 案例 下载 博客 关于 开始使用 →

第201章 ICAI Object-Oriented Engineering|ICAI 面向对象工程

第201章 ICAI Object-Oriented Engineering|ICAI 面向对象工程

201.1 从机器认知对象进入软件对象

在前面的章节中,ICAI 已经建立了机器认知对象体系:

Real-Time Data
实时数据
 ↓
Element
元素
 ↓
Object
对象
 ↓
Relation
关系
 ↓
State
状态
 ↓
Scene
场景
 ↓
Cognition
认知
 ↓
Method
方法
 ↓
Behavior
行为
 ↓
Action
动作

到这里,问题已经发生变化。

前面的核心问题是:

机器如何形成认知对象?

从第201章开始,核心问题变成:

这些认知对象如何真正存在于软件系统中,并能够被创建、更新、计算、调用和运行?

因此,ICAI 开始进入面向对象软件工程阶段。


201.2 Cognitive Object|认知对象

ICAI 中的 Cognitive Object(认知对象)不是单纯的数据名称。

它代表机器对现实世界某个对象形成的可计算认知实体

例如:

Egg
鸡蛋

机器并不是简单保存:

name = "egg"

而是形成:

Egg
 ↓
Position
位置
 ↓
Orientation
姿态
 ↓
Mass
质量
 ↓
Fragility
脆弱性
 ↓
Contact
接触状态
 ↓
Pressure
压力
 ↓
Stability
稳定性

这些信息共同构成当前对象状态。

因此:

CognitiveObject=Object+Attributes+Relations+StateCognitiveObject = Object + Attributes + Relations + State

即:

认知对象 = 对象 + 属性 + 关系 + 状态


201.3 Software Object|软件对象

当 Cognitive Object 进入软件工程以后,需要转换成 Software Object(软件对象)。

软件对象必须能够:

Create
创建

Read
读取

Update
更新

Calculate
计算

Interact
交互

Change State
改变状态

因此:

Cognitive Object
认知对象
        ↓
Software Object
软件对象

这个转换非常重要。

因为如果认知对象只存在于理论描述中,那么它仍然不能运行。

只有进入软件对象之后,才可以:

Create
 ↓
Update
 ↓
Calculate
 ↓
Execute
 ↓
Feedback

形成实际运行过程。


201.4 Software Object → PHP Object

ICAI 当前的软件工程采用 PHP OOP(PHP 面向对象编程)。

因此:

Software Object
软件对象
       ↓
PHP Class
PHP 类
       ↓
PHP Object
PHP 对象实例

例如现实中的鸡蛋:

现实对象
Egg
 ↓
认知对象
Cognitive Egg
 ↓
软件对象
Egg Object
 ↓
PHP Object
$egg

因此:

$egg = new Egg();

这个 $egg 不再只是一个普通变量。

它代表:

ICAI 认知系统中的一个具体对象实例。


201.5 Class|类

PHP Class(类)负责定义一个认知对象的结构和行为。

例如:

class CognitiveObject
{
    protected $id;
    protected $attributes = array();
    protected $relations = array();
    protected $state = array();
}

这里:

$id
对象标识

$attributes
对象属性

$relations
对象关系

$state
对象状态

Class 定义的是:

这种对象应该具有什么结构和能力。


201.6 Object Instance|对象实例

Class 本身不是现实中的具体对象。

例如:

class Egg
{
}

只是定义:

Egg 这种对象是什么。

真正创建对象:

$egg = new Egg();

此时:

Egg Class
鸡蛋类
      ↓
$egg
鸡蛋对象实例

因此:

Class
类
 ↓
Object Instance
对象实例

这是 ICAI 从理论对象进入程序对象的第一层真正转换。


201.7 Property|属性

ICAI 的 Object(对象)必须具有动态属性。

例如:

class Egg
{
    public $position;
    public $orientation;
    public $pressure;
    public $force;
    public $stability;
}

于是:

$egg->position;
$egg->pressure;
$egg->force;
$egg->stability;

都成为可以被程序实时读取和修改的数据。

但是这里必须注意:

属性不是静态标签,而是认知系统中的动态状态数据。

例如:

Pressure = 0.20

执行动作以后:

Pressure = 0.35

再执行以后:

Pressure = 0.50

对象本身没有改变,但对象的当前认知状态发生了变化


201.8 Method|方法

对象不仅需要保存属性,还必须能够执行行为逻辑。

因此进入 Method(方法)。

例如:

class Egg
{
    public function updatePressure($pressure)
    {
        $this->pressure = $pressure;
    }
}

调用:

$egg->updatePressure(0.35);

形成:

Object
对象
 ↓
Method
方法
 ↓
State Change
状态变化

这与传统数据结构最大的区别就在这里。

ICAI 对象不是:

Data Only
只有数据

而是:

Data
+
State
+
Method
+
Behavior

201.9 动态对象

ICAI 不应该建立大量静态对象。

因为现实世界是动态变化的。

例如:

Egg
 ↓
Position = A
Pressure = 0
Contact = false

经过行为:

Move
移动
 ↓
Position = B

接触以后:

Contact = true
Pressure = 0.2

进一步变化:

Pressure = 0.4
Stability = 0.8

因此:

Objectt≠Objectt+1Object_t \neq Object_{t+1}

更准确地说:

State(Objectt)→State(Objectt+1)State(Object_t)\rightarrow State(Object_{t+1})

对象持续存在,而对象状态持续变化。


201.10 从对象到认知运行时

当多个对象进入系统以后:

Egg
Hand
Table
Obstacle

系统开始建立:

Object
 ↓
Attribute
 ↓
Relation
 ↓
State
 ↓
Scene

然后进入:

Cognition
 ↓
Method
 ↓
Behavior
 ↓
Action

因此 PHP OOP 并不是单纯为了“代码写得漂亮”。

它承担的是一个更重要的任务:

把 ICAI 的机器认知对象变成能够持续存在、相互作用、状态变化和执行方法的软件实体。


201.11 第一条工程转换链

因此,第201章可以正式确定 ICAI 的第一条软件工程转换链:

Cognitive Object
认知对象
      ↓
Software Object
软件对象
      ↓
Class
类
      ↓
Object Instance
对象实例
      ↓
Property
属性
      ↓
Method
方法
      ↓
State Change
状态变化
      ↓
Behavior
行为

最终:

Cognitive Object
        ↓
Software Object
        ↓
PHP Object
        ↓
Dynamic State
        ↓
Method
        ↓
Behavior

201.12 本章结论

第201章的意义不是重新定义 Object。

前面的理论已经完成了:

现实世界
 ↓
认知对象

第201章开始完成的是:

认知对象
 ↓
软件对象
 ↓
PHP Object

因此,从本章开始:

ICAI 的 Element、Object、Relation、State、Scene、Cognition、Method、Behavior、Action 不再只作为理论概念存在,而开始逐步成为真正的软件 Class、Object、Property、Method 和 Runtime。

最终形成:

Reality
现实世界
 ↓
Cognitive Object
认知对象
 ↓
Software Object
软件对象
 ↓
PHP Object
PHP对象
 ↓
Method
方法
 ↓
Behavior
行为
 ↓
Action
动作
 ↓
Device
设备
 ↓
Feedback
反馈

第201章完成“机器认知对象 → 软件对象”的架构转换。

下一章 第202章 Element Class|元素类,正式开始把 ICAI 的第一个核心认知对象写成 PHP Class。

Leave a Reply

Your email address will not be published. Required fields are marked *