版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象面向对象(object oriented,00)是当前计算机界关心的重点,它是90年代软件开 发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很 宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网 络管理结构、cad技术、人工智能等领域。定义在编程过程屮采用的封装、继承、多态的编程方法。面向对象的特征(1) 对象唯一性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象 的整个生命期屮,它的标识都不改变,不同的对象不能有相同的标识。(2) 抽象性。抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一 个类就是这样
2、一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关 内容。任何类的划分都是主观的,但必须与具体的应用有关。(3) 继承性。继承性是子类自动共享父类数据结构和方法的机制,这是类z间的一种关系。 在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这 个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语 言所没有的。在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性
3、,这是信 息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码 的可重用性。采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特 性能够共享,提高了软件的重用性。多态性侈形性)多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同 的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式去响应共同的消息。面向对象的要素抽象。抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定 如何实现对象z前的对象的意义和行为。使用抽彖可以尽可能避免过早考虑一些 细节。类实现了对象的数据(即状态)和行为
4、的抽象。(2)封装性(信息隐藏)。封装性是保证软件部件具有优良的模块性的基础。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口) 与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用 域提供保护。对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。 面向对象的封装比传统语言的封装更为清晰、更为有力。(3)共享性而向对彖技术在不同级别上促进了共享同一类中的共享。同一类中的对象有着相同数据结构。这些对彖之间是结构、 行为特征的共享关系。在同一应用中共享。在同一应用的类层次结构中,存在继承关系的各相似子 类中,存在数据结构和行为的继承,使各相似子类共享
5、共同的结构和行为。使用 继承来实现代码的共享,这也是而向对象的主要优点之一。在不同应用中共享。面向对象不仅允许在同一应用中共享信息,而且为未来 目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信 息共享。4 强调对象结构而不是程序结构面向对象的术语1 类类作为设计蓝图來创建对象的代码段,它描述了对彖的特征;该对彖具有什 么样的属性,怎样使用对象完成一些任务,他对事件进行怎样的响应等!2. 对象对象是类的一个实例,通常通过调用类的一个构造函数来创建它!3力法方法是在类中定义的函数,一般而言,一个方法描述了对象可以执行的一个 操作!4.属性属性是类中定义的变量,类的属性突出刻画
6、了对象的性质或状态。某些情况 下,对象的使用者可能不允许改变对象的某些属性,这是因为类的创建者已经规 定了那些属性不能被使用者更改。这就比如你只能知道我是男生,但你没有办法 改变!5 事件vb是由事件触发!事件是由某个外部行为所引发的对象方法。他可与用户 行为(例如单击某个button)或系统行为相关联。6.构造函数构造函数是创建对象所调用的特殊方法,在vb +,对象的创建是通过在给 定的类中创建名为new的过程而实现的!7 .析构函数析构函数是释放对象时所调用的特殊方法,在vb中,为了编写析构函数, 我们必须重写基类的dispose方法。但是,由于clr自动进行垃圾收集,因此 在受管代码屮很
7、少需要显式得调用析构函数。然后,当运行clr z外的资源(如 设备,文件句柄,网络连接等)时,应调用dispose方法确保计算机的性能!&继承继承是面向对象的一个概念,它规定一个类可以从其他的小类(基类)中派 生,并且该派生类继承其基类的接口和相应代码!(该类称为派生类或子类)9 重写重写是面向对象的一个概念,它规定一个派生类可以创建其基类某个方法的 不同实现代码。实际上,它完全重写了基类中该方法所执行的操作!10.接口接口是一种约定,它定义了方法、屈性、时间和索引器的结构。我们不能直 接从一个接口创建对象,而必须首先通过创建一个类来实现接口所定义的特征!11 封装封装是一个概念,它的
8、含义是把方法、属性、事件集中到一个统一的类中, 并对使用者屏蔽其屮的细节问题一个关于的封装的实例是小汽车一一我们通过 操作方向盘、刹车和加速来操作汽车。好的封装不需要我们考虑燃料的喷出、流 动问题等。12 重载他规定一个方法可以具有许多不同的接口,但方法的名称是相同的。13.多态它规定,一个同样的函数对于不同的对彖可以具有不同的实现。例如一个 add方法,它既可以执行整数的加法求和操作,也可以执行字符串的连接操作!二、面向对象的基本概念对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看 作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。(2)对象的状态和行为
9、。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中类。具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具 体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。(4) 类的结构。在客观世界屮有若干类,这些类z间有一定的结构关系。通常有两种主要的 结构关系,即一般-具体结构关系,整体-部分结构关系。 一般具体结构称为分类结构,也可以说是“或”关系,或者
10、是“is a”关 系。 整体-部分结构称为组装结构,它们之间的关系是种“与”关系,或者 是"has a”关系。(5) 消息和方法。对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某 个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括 说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还 要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有 对象都知道的全局变量名。类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。面向对象和基于对象的区别很多人没有区分“面向对象”和“基于对彖”两个不同的概念。面向对彖的
11、三大特点(封装,继承,多态)缺一不可。通常“基于对象”是使用对象,但是 无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说“基 于对象”没有继承的特点。而“多态”表示为父类类型的子类对象实例,没有了 继承的概念也就无从谈论“多态”。现在的很多流行技术都是基于对象的,它们 使用一些封装好的对象,调用对彖的方法,设置对象的属性。但是它们无法让程 序员派生新对象类型。他们只能使用现有对象的方法和屈性。所以当你判断一个 新的技术是否是面向对象的时候,通常可以使用后两个特性来加以判断。“面向 对象”和“基于对象”都实现了 “封装”的概念,但是面向对象实现了 “继承和 多态”,而“基于对象
12、”没有实现这些,的确很饶口。从事面向对彖编程的人按照分工來说,可以分为“类库的创建者”和“类库 的使用者”。使用类库的人并不都是具备了面向对象思想的人,通常知道如何继 承和派生新对象就可以使用类库了,然而我们的思维并没有真正的转过来,使用 类库只是在形式上是面向对象,而实质上只是库函数的一种扩展。面向对象是一种思想,是我们考虑事情的方法,通常表现为我们是将问题的 解决按照过程方式来解决呢,还是将问题抽象为一个对象来解决它。很多情况下, 我们会不知不觉的按照过程方式来解决它,而不是考虑将要解决问题抽象为对象 去解决它。有些人打着面向对象的幌子,干着过程编程的勾当抽象类用abstract修饰的类是
13、抽象类。在c+中,含有纯虛拟函数的类称为抽象类,它不能生成对象。凡是包含纯虚函数的类都是抽象类。抽象类是不完整的,并且它只能用作基类。它与非抽象类的不同:1、抽象类不能直接实例化,并h对抽象类使用new运算符是编译时错误。 虽然一些变量和值在编译吋的类型可以是抽象的,但是这样的变量和值必须或者 为null,或者含有对非抽彖类的实例的引用(此非抽象类是从抽象类派生的)。2、允许(但不要求)抽象类包含抽象成员。3、抽象类不能被密封。当从抽象类派牛非抽象类时,这些非抽象类必须具体实现所继承的所有抽象 成员,从而重写哪些抽象成员。在下边的示例屮:abstract class a public abst
14、ract void f();abstract class b: a public void g()class c: b public override void f() / actual implementation of f 抽象类a引入抽象方法f。类b引入另一个方法g,但由于它不提供f 的实现,b也必须声明为抽象类。类c重写f,并提供一个具体实现。由于c中 没有了抽彖成员,因此可以(但并非必须)将c声明为非抽象类。抽彖类与接口紧密相关。然接口又比抽彖类更抽彖,这主要体现在它们的差 别上:1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继 承,从抽象类派牛的类仍可实现接口,从而
15、得出接口是用来解决多重继承问题的。2)抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声 明必须用public来修饰没有具体实现的方法。3)抽象类屮的成员变量可以被不 同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final) o 4) 这一点也是最重要的一点木质的一点”抽象类是对象的抽象,然而接口是一种行 为规范”。以上是它们本身的异同,下面再來从实际应用讲讲它们的异同!不同之处:定义抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定 义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。用法1)在继承抽象类时,必须覆盖该类
16、中的每一个抽象方法,而每个已实现的 方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的 返回值,这一点与接口相同。2)当父类己有实际功能的方法时,该方法在子类中可以不必实现,直接引 用的方法,子类也可以重写该父类的方法(继承的概念)。3)而实现(implement)个接口(interface)的时候,是一定要实现接口1j4所 定义的所有方法,而不可遗漏任何一个。4)另外,抽象类不能产生对象的,但可以由它的实现类来声明对象。有鉴于此,在实现接口时,我们也常写一个抽象类,来实现接口中的某些子 类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用,省去在 每个都要实现通
17、用的方法的困扰。抽象类与接口紧密相关,它们不能实例化,并且常常部分实现或根本不实现。抽 象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽象 (或任何其他类型)类继承。从抽象类派生的类仍可实现接口。可以在创建组件 时使用抽象类,因为它们使您得以在某些方法中指定不变级功能,但直到需要该 类的特定实现之后才实现其他方法。抽象类也制定版本,因为如果在派生类中需 要附加功能,则可以将其添加到基类而不中断代码。在实现抽象类时,必须实现 该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样, 接收相同数目和类型的参数,具有同样的返冋值。抽象类不能被实例化,也就 是不能用new关键字去产生对象抽象方法只需声明,而不需实现 抽象类的子 类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类.多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多 态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了 应用程序函数同名问题。多态有两种表现形式:重载和覆盖首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关 系。标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说, 一个类屮可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 别墅景观设计合同范本
- 位委托授权签订协议书
- 合伙解散债务合同范本
- 前置审计服务合同范本
- 关于礼物赠送合同范本
- 冷冻产品仓储合同范本
- 合同履行期外补充协议
- 共同扶养孩子的协议书
- 合伙人股权协议书合同
- 债务转让股权合同范本
- 伴生气凝析油工艺安全管理
- 恬谈人生:夏培肃传
- 棚户区改造梁侧预埋悬挑脚手架设计计算书
- 《浅谈幼儿园劳动教育实施策略》 论文
- 抗菌药物使用管理制度
- 基于《中国高考评价体系》下的2023年高考物理命题趋势及复习备考策略
- 经外周静脉穿刺中心静脉置管术
- GB/T 13452.2-2008色漆和清漆漆膜厚度的测定
- 远程会诊登记本
- 高速公路改扩建工程施工作业指导书
- 多旋翼无人机培训教材课件
评论
0/150
提交评论