欢迎来到天天文库
浏览记录
ID:34139598
大小:225.03 KB
页数:20页
时间:2019-03-03
《赛迪网校面向对象技术讲义》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三部分面向对象技术六、面向对象的基本概念6.1基本概念6.2对象6.3消息6.4类6.5继承6.6多态6.7动态绑定6.1基本概念PeterCoad和EdwardYourdon提出面向对象方法的概念:面向对象=对象(object)+分类(classification)+继承(inheritance)+消息通信(communicationwithmessages)采用这四个概念开发的软件系统是面向对象的。6.2对象对象是面向对象系统中的基本运行实体,现实世界中的对象。对象=封装[数据(属性)+操作(行为)]表示:对象=对象名+数据(属
2、性)+操作(行为)属性一般只能通过执行对象的操作来改变。操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。6.3类把具有相同特征(属性)和行为(操作)的对象归在一起就形成了类(class)。类的定义包括一组数据属性和在数据上的一组合法操作。在一个类中,每个对象都是类的实例(Instance),它们都可使用类中的函数。类定义了各个实例所共有的结构,使用类的构造函数,可以在创建该类的实例时初始化这个实例的状态(实例变量)。6.4消息消息是一个实例与另一个实例之间传递的信息,要求该实例执行类中定义的某个操作
3、。消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表(可能是空的)。接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的值结合起来。消息有4类:发送对象激活接收对象;发送对象传送信息给接收对象;发送对象询问接收对象;发送对象请求接收对象提供服务。6.5继承类与类之间可能具有的一般化和特殊化关系:即“is-a”关系,特殊化类是一般化类的子类,一般化类是特殊化类的父类。在这种关系下形成一种层次的关联。这就是继承关系。分类http://www.ccidedu.com只从一个父类得到继承,叫做“单重继承”。一
4、个子类有两个或更多个父类,则称“多重继承”。6.6多态不同的对象对同一消息有不同的实现。多态的实现受到继承的支持:利用类的继承的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象能够给通用消息以不同的响应。多态的形式:Cardelli和Wegner把它分为4类:参数的通用的包含的多态过载的特定的强制的参数多态即模板化的多态,通过参数代换确定所用的数据类型。包含多态最常见的例子就是子类型化,即一个类型是另一个类型的子类型。过载多态同一个变量被用来表示不同的功能而通过上下文以决定一
5、个名字所代表的功能。6.7动态绑定动态绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。静态绑定:编译时进行的绑定。动态绑定:运行时进行的绑定。动态绑定和类的继承以及多态相联系的。七、面向对象程序设计面向对象程序设计的实质:选用一种面向对象程序设计语言(OOPL),采用对象、类及其相关概念所进行的程序设计。OOPL支持:被封装的对象类和实例概念类间的继承性多态7.1面向对象的好处在《Object-OrientedMethodsPrinciples&Practice》中,IanGraham总结:封装技术有助于建立安全的系统。
6、继承机制保证了系统的灵活性和易扩充性。复用技术优化了产品质量和生产率间的权衡。http://www.ccidedu.com面向对象的观点比自顶向下进行功能分解的分析及设计更自然合理。实现从概念模型化到分析、设计、编码的无缝传递。7.2面向对象程序设计语言20世纪60年代后期,KristenNyagaard和Ole-JohanDahl(挪威计算中心)在其Simual67语言(基于模拟语言Simula)第一次引入了类、协同程序(coroutines)和子类的概念。20世纪70年代中期,Xerox公司的PaloAlto研究中心(XeroxP
7、ARC)的A1anKay提出了Smalltalk。OOPLs研究的起点:Simula67和Smalltalk。目前流行OOPLs:Smalltalk、Eiffel、C++和Java1、Smalltalk1970年代中期,Xerox公司的PaloAlto研究中心A1anKay等人提出的Smalltalk成为第一个OOPLs特点:全面支持面向对象的概念强调了对象概念的归一性:每个元素都是对象。除对象外没有其他形式的数据,类也被看成是对象——类是元类的实例。对象的唯一操作是发消息引入了类、方法、实例等概念和术语应用了单重继承和动态绑定2.E
8、iffel20世纪80年代后期,ISE公司,BertrandMeyer等人提出的语言,它全面支持面向对象的概念。主要特点:全面的静态类型化;有大量的开发工具;支持多重继承;它的一些实现策略(如同名冲突处理、异常处理等)已
此文档下载收益归作者所有