认识面向对象编程;;面向对象编程(Object-OrientedProgramming,OOP)即面向对象程序设计。在面向对象编程中,以类来构造现实世界中的事物和情景,再基于类创建对象来帮助用户进一步认识、理解、刻画这些事物和情景。
基于类创建的对象都会自动带有类的属性和特点,还可以根据实际需要赋予每个对象特有的属性,这个过程称为类的实例化。
从面向对象的设计(Object-OrientedDesign,OOD)的角度来看,类往往是由现实对象抽象而来的,抽象类可以看作基于类的进一步抽象。从实现角度来看,抽象类与普通类的不同之处在于:抽象类中可以包含抽象方法(没有实现功能),此类不能被实例化,只能被继承使用,且子类必须实现其中抽象方法。;面向对象方法(Object-OrientedMethod,OOM),是在软件开发过程中以“对象”为中心,用面向对象的思想来指导开发活动的系统方法。
正如研究面向对象方法的专家和学者所说,面向对象方法同20世纪70年代的结构化方法一样,对计算机技术的应用产生了巨大的影响,而且一直在强烈地影响和促进一系列高技术的发展和多学科的融合。;从20世纪80年代起,面向对象程序设计成了一种主导思想,但一直没有专门的面向对象程序设计的语言。
后因客观需求的推动,人们进行了大量理论研究和实践探索,不同类型的面向对象语言(如Eiffel、C++、Java、Object-Pascal等)得以产生和发展,逐步解决了兼容性和维护性等问题。
;;面向过程是分析解决问题所需要的步骤,然后用函数一步步实现这些步骤。
面向对象是将构成问题的事物分解成各个对象,创建对象是为了描述某个事物在解决问题过程中的行为。
例如五子棋,面向过程的设计思路是分析解决问题的步骤,将每个步骤分别用函数来实现,从而使问题得到解决,如下图。
而面向对象的设计则基于以下思路来解决问题:将五子棋分为3类对象,一是黑白双方,双方的行为是一模一样的;二是棋盘系统,负责绘制画面;三是规则系统,负责判断诸如犯规、输赢等。;可以看到,面向对象是以功能来划分问题的,而不是循环步骤。
同样是绘制棋局,在面向过程的设计中,需要多个步骤来执行该任务,???这样很可能会导致不同步骤绘制棋局的程序不同,因此程序设计人员会根据实际情况对绘制棋局的程序进行调整。
而在面向对象的设计中,绘图只可能在第2类对象中出现,由此可以保证绘制棋局程序的统一。;;面向对象有以下3个优点。
(1)基于数据抽象的概念,面向对象可以在保持外部接口不变的情况下对内部进行修改,从而减少甚至避免对外界的干扰。
(2)面向对象通过继承可以大幅减少冗余代码,并可以方便地扩展现有代码,提高编码效率,降低出错概率及软件维护难度。
(3)结合面向对象分析、面向对象的设计,面向对象允许将问题中的对象直接映射到程序中,简化了在软件开发过程中中间环节的转换过程。;;在人工智能系统中,每个智能体或代理被看作一个类,具体的某个智能体或代理就是其中某个类的一个实例对象,所以每个智能体或代理的程序都具有一定的独立性。
对于小型程序和算法来说,面向对象的程序一般会比面向过程的程序慢,所以编写程序时需要掌握面向对象和面向过程两种思想,发挥每种思想的长处。