代理人導向編程

面向代理编程（AOP：Agent-oriented programming），是一种编程范型，这里软件的构造以的概念为中心。对比于拥有对象（提供具有可变形式参数的方法）作为核心的面向对象编程，AOP拥有外部指定的代理（具有接口和消息能力）作为核心。它们可以被认为是对象的抽象。交换的消息可以由接收“代理”，以特定于它的代理类的方法来解释。

 历史 
历史上，面向代理编程的概念，和软件围绕代理的概念为中心的想法，是在1990年于他的人工智能研究中介入的。他的代理特定于自己的范型，因为它们就只有一个方法，具有一个形式参数。下面引述Yoav Shoham的1990年论文，论述在AOP和OOP之间的基本区别：

   OOP  AOP 基本单元  对象  代理 定义基本单元状态的参数  无约束  信念，承诺，能力，选择 ... 计算的过程  消息传递和响应方法  消息传递和响应方法 消息的类型  无约束  通知，要求，提供，允诺，拒绝 ... 方法的约束  无  诚实，一致 ...

框架
有多个AOP框架，也叫做代理平台，实现了Shoham的编程范型。下面的例子展示基本的代理如何编程hello-world程序。

 JADE 
在Java平台上的框架之一是JADE。有运行代码的代理的一个非常基本的例子：
package helloworld;
import jade.core.Agent;

public class Hello extends Agent {

	protected void setup() { 
		System.out.println("Hello World. ");
		System.out.println("My name is "+ getLocalName()); 
	}

	public Hello() {
		System.out.println("Constructor called");
	}

}
作为JADE的AOP模型的核心的是支持标准的的API。

 PADE 
PADE（Python代理开发框架）是用Python语言开发智能代理的Python包。这个框架遵循了FIPA及其ACL标准。
class AgenteHelloWorld(Agent):
    def __init__(self, aid):
        super(AgenteHelloWorld, self).__init__(aid=aid)
        display_message(self.aid.localname, 'Hello World!')

参见
NetLogo

引用

Category:编程范式