1 / 107
文档名称:

面向对象程序设计语言.ppt

格式:ppt   大小:1,661KB   页数:107页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

面向对象程序设计语言.ppt

上传人:daoqqzhuanyongyou2 2019/3/12 文件大小:1.62 MB

下载得到文件列表

面向对象程序设计语言.ppt

文档介绍

文档介绍:类、类型、抽象数据类型异同都是(A,Op)值集和值上的操作集,在这个意义上,它们通用类型和抽象数据类型都是类型。类型沿用历史理解是基元类型+简单结构类型(预定义),抽象数据类型是用户可以用基本类型构造复杂类型(用户定义)类和抽象数据类型都是在类型体系结构上定义操作集,类是用户定义的程序对象的概括抽象。程序对象是封装的自主的,主动实施类中定义的操作,加工私有数据。抽象数据类型只说明程序对象的类型,被动地接受该类型允许的操作。<对象名>.<操作名>ADT:V抽象数据类型的变量(名)C:V类的实例对象(名)<操作名>.(<变量名>)OP1(V),不涉及值类/类型和子类/子类形差异更大子类是类的特化,内涵增加子类型是类型的子集内涵所小,外延都减小引用对象在不引起歧义情况下,有时也可称“对象引用”为“**对象”Arraya;if(a[i]==0)…a[i]=1;多个对象引用可指向一个相同对象Arrayb=a;多个指向同一对象的引用实际产生了对象共享如果被引用对象不可变,共享不会产生风险如果被引用对象可变,共享有可能产生不可预期的效果b[3]=9;a120673b*objectreferencereferredobject对象共享与对象复制对象引用复制即产生共享如果想要复制对象,而不是共享使用对象的clone方法产生新的对象或者,new一个新对象,拷贝对象的属性值(要求对象的属性值外部可访问)lassPoly{privateint[]terms;privateintdeg;…}lassPoly{privateint[]terms;privateintdeg;publicPolyclone(){Polyp=newPoly();=;=;returnp;}}延伸问题:Java的对象如何算相同抽象与封装利用抽象和封装提供了新的语言机制:模块、包和类,是大型软件的需要。模块或包是封装一组数据(变量和类型)和一组操作(过程或函数的抽象),也是可单独编译的程序单元。程序包的封装就是要分出公有(外界可见)和私有部分,这样给外界以清晰简单的界面,有利于实施高层语义。数据抽象是一种编写大型程序的方法学,它基于以数据和其相关操作作模块分解,构成抽象数据类型,数据抽象即按抽象数据类型开发程序的方法学。传统语言也可以实现数据抽象,但无封装不安全。抽象数据类型是用户定义的,但其效果和内定义类型一样,可以用来定义新类型。抽象与封装构造函数(子)构造一个例化的程序对象。析构函数撤消这个程序对象。类属是声明的抽象,类属程序单元是参数化程序单元,值、变量、类型、子程序均可以参数化。类属单元可独立编译,但一定要设例后才可使用(执行)。类型参数化该类型则为多态类型,Ada的类属是静态设例的类型多态,动态的类型多态更有利于程序设计。封装提供数据隐藏。对象是一个程序实体,它封装了私有数据和操作,对象是自主的,只能通过界面的触发自己的操作加工自己的数据。类是对象的样板,也是抽象数据类型。类对象和实例对象是抽象到例化的对应。类中的成分叫成员,数据成员也叫属性。操作成员叫方法,方法的调用通过消息,在类可控的界面上有私有、公有、保护成员。,60年代末描述智能对象的框架(frame)即封装了许多槽(slot),槽既可以是属性(数据)也可以是行为(操作)和(约束)。但最早见诸文献是sketchpad提到的OO图形学(1963)。60年代挪威的Dahl和Nyard为模拟系统研制了SIMULA-67语言,首先提出封装的类和动态生成实例对象的概念。60年代末,美国犹他大学AlanKay到Xerox公司PaloAlto研究中心参加了Dynabook项目。该项目的硬件是Star(个人机的前驱)软件是Smalltalk。Smalltalk语言关键贡献1972年DanIngalls完成Smalltalk-72第一个实用版语言完全基于Simula的类和消息的概念。语言没有固定的语法,语法分析由类本身完成。1976版本引入了继承和子类的概念。确定了语言的语法,这使得编译器能够产生高效、可执行、精炼的二进制代码。LarryTesler设计了浏览器,这极大地提高了Smalltalk程序员的编程效率。1980版本(正式发行版本)引入了元类的概念。引入MVC(Model-View-Controller)系统以方便交互式应用软件的开发。·语言核心(Kernel)·程序设计系统·程序设计范型(Paradigm)·用户界面模型(UserInterfaceModel)(Syste