面向对象编程的基本概述

上传人:夏** 文档编号:507373240 上传时间:2023-01-31 格式:DOC 页数:10 大小:79.50KB
返回 下载 相关 举报
面向对象编程的基本概述_第1页
第1页 / 共10页
面向对象编程的基本概述_第2页
第2页 / 共10页
面向对象编程的基本概述_第3页
第3页 / 共10页
面向对象编程的基本概述_第4页
第4页 / 共10页
面向对象编程的基本概述_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《面向对象编程的基本概述》由会员分享,可在线阅读,更多相关《面向对象编程的基本概述(10页珍藏版)》请在金锄头文库上搜索。

1、For personal use only in study and research;not for commercial use面向对象编程的基本概述面向对象的基本概念 31. 1对象31.2数据隐藏31.3 类31.4封装31.41 接口 41.5继承41.51抽象41.52 is-a 关系41.6多态51.61多态存在的三个必要条件 51.7组合51.8小结5面向对象的编程思想 62.1类设计指导 62.11设计健壮的构造函数(以及析构函数) 62.2继承与组合的思考 62.21重用对象62.22继承72.23 组合 82.3 封装 82.4 抽象类与接口 8面向对象的基本概念1 1

2、对象一个对象由两部分组成:属性和行为,对象的基本定义即是包含了数据和行为的实体。 数据表现为属性,行为表现为方法。存放在对象中的数据代表了该对象的状态, 在面向对象的术语中, 数据被称为属性, 而 对象的行为表示对象可以做什么。生活中处处充满了对象, 每一个实体即是一个对象, 例如人类或者动物都具有五官这些 属性,同时还有一些个人的行为动作,吃喝拉撒等行为。1.2 数据隐藏限制访问具体的属性和(或)方法的行为叫做数据隐藏, 通常,对象不应当操作其他对象的内部数据,因此在面向对象的开发中往往采用取值方法(getter()和赋值方法(setter。)。数据的隐藏其实真是封装的体现,一个对象不应该你

3、直接的去操作另一个对象的数据,通过数据的隐藏并提供取值方法和赋值方法体间接的提供可以很好的做一些数据的控制,这真是面向对象编程的体现。1.3 类简单来说类即是对象的蓝图, 可以认为类是对象的模板或者模具。 类定义了 使用该类创 建的所有对象 具有的属性和行为, 对象从类中创建, 所以类必须定义对象的基础材料, 总是 在创建对象之前必须先设计一个类,类是对象的依附体。类的数据通过属性来表示, 类的行为通过方法来定义, 在任何情况下, 对对象中的属性 的访问应该有对象自身控制,任何一个对象都不应该直接修改其他对象的属性。1.4 封装面向对象编程即是使用对象提供的行为达到一定的目的, 使用对象的一个

4、显著好处是对 象无需暴露它的所有属性和行为, 仅暴露必要的接口和其他对象进行交互, 除了如何使用该 对象,其他细节都应当对其他对象隐藏起来,这便是封装的目的。封装是基于对象即包含属性也包含行为这一事。数据隐藏式封装的主要部分。 为了实现数据隐藏,必须将所有的属性声明为 private ,属性绝不是类接口(类公共方法)的一部分, 只有 public 方法是类对外提供的行为,将属性描述为 public 破坏了数据隐藏这一概念。封装的最高指导原则是“所有字段都应该是私有的”。1.41 接口尽可能提供最小化的用户接口, 当设计类时, 通用规则是尽量不要让用户知道类的内部 工作原理,为了达到这点,因尽量

5、遵循以下简单的原则: 只提供用户绝对需要的东西。 实际上, 这意味着类的接口要尽可能少。 当你开始设计 一个类时, 先从最小化的接口开始。 类的设计的迭代式的, 所以随后即是你发现最小化的接 口可能不合适,再去开放出来也不迟。 公共接口定义了用户可以访问什么。 从用户角度定义至关重要,而不是从信息系统的角度定义类。 确保设计类时你向真正的用户了解了需求和设计,这些人并不局限于开发人员。1.5 继承面向对象最强大的功能就是代码重用, 通过组织和识别不同类之间的共性, 不仅可以实 现代码重用, 也可以知道设计, 继承是实现该功能的主要手段, 继承允许一个类继承另一个 类的属性和方法,可以通过抽象公

6、共属性和行为来创建新类。1.51 抽象面向对象编程的主要优势之一是可以重用类。 通常可以重用的类比具体的类的 接口更加 抽象。 具体的接口可以是非常明确的,而抽象接口则更通用。 简单来说,高层次的抽象接口 比高度具体的接口更有用,大部分情况下如此,当然并非适用所有情况。接口是行为继承的一种机制, 抽象类则用于实现继承, 即接口是行为的规范, 抽象是对 事物共性的抽象。1.52 is-a 关系继承往往是is-a关系,is-a即可以表述为子类是一个父类,例如父类 Shape (形状)与 子类Circle (圆形)、Square (矩形),可以说圆形是一个形状,矩形是一个形状,子类都 继承于父类。1

7、.6 多态指允许不同类的对象对同一消息做出响应。 即同一消息可以根据发送对象的不同而采用 多种不同的行为方式。(发送消息就是函数调用),重载方法即是实现多态的手段。1.61 多态存在的三个必要条件 继承 重写 父类引用指向子类对象简单叙述多态的关系: 多态必须是是父类跟子类之间的关系, 即多态必须是存在继承关 系的, 继承相同父类的众多子类可以重写父类的方法行为,重新定义子类自己的行为, 由于子类是继承自父类的, 应该可以用父类对不同子类进行不同的实例化, 从而做到引用父类的 行为却得到不同子类行为的应答(父类a = new子类(),a.行为(),这种向上转型的结果即是父类只能得到子类继承自父

8、类的所有属性和行为,但得不到子类自己独有的属性和行 为,多态的实现可以通过接口与继承实现。1.7 组合使用其他对象来构建或结合成新的对象,这种方式就是组合。和继承一样, 组合也是一种构建对象的机制, 使用其他类构建新类的只有两种方式, 即 继承和组合。继承的关系是is-a的关系,而组合则是 has-a的关系,例如电视机有(has-a)开关和显 示屏, 电视显而易见不是一个开关, 所以两个没有继承关系, 彼此之间是组合的关系, 即开 关、显示屏、电板等对象组合成了电视,这便是组合。1.8 小结面向对象编程, 其编程思想在于对象,首先要明白何为对象, 对象由什么构成,知道了 何为对象之后再来好好思

9、考如何去面向它, 面向它(对象)主要通过面向对象的四大特征 (手 段):封装、继承、多态、组合。每个特征又是相互联系的,封装是为了数据的安全性和隐 秘性, 继承是为了更好的实现多态, 组合即是运用封装、 继承、多态这些手段来实现一个更 为复杂的对象, 从而更加符合现实世界的需求。 同时需要明白接口是行为的规范, 抽象则是对事物的抽象。二、面向对象的编程思想2.1 类设计指导在设计类时最重要的问题是保持公共接口最小化, 提供最小化的公共接口可以保证类尽 可能简单。 在设计接口最小化中, 应尽量做到隐藏实现, 识别类的公共接口与类的用户相关, 而具体实现则与用户无关, 具体实现必须提供用户需要的服

10、务, 但这些服务是如何实现的对 用户来说是不可见的,改变类的实现不应该影响到用户,这才是设计良好的类。设计类的过程强迫组织代码为很多可管理的块, 把代码分块比大块代码更具维护性。 促 进可维护性的最好方式之一是减少代码依赖, 即修改一个类中的代码不会影响 (或使影响最 小化)其他类。2.11 设计健壮的构造函数(以及析构函数)首先且最重要的一点是, 构造函数应该把对象设置为安全的初始状态。 这包括了属性初 始化以及内存管理等问题, 也需要确保在默认的条件下能正确的构造对象, 通常提供一个构 造函数来处理默认情况是个好的习惯。2.2 继承与组合的思考继承正如其名字所示,继承其他类的属性和行为,这

11、是一种父子关系,子类继承父类。组合,即使用其他对象来构建新对象。继承和组合在面向对象(00)系统中扮演者重要的角色,事实上,最困难及最有趣的设计决策就是决定使用继承还是组合。2.21 重用对象继承和组合的主要目的大概就是对象重用, 通过继承和组合来利用其他类就可以构建新的类(最终变为对象),实际上这是重用以前构建好的类的唯一方式。继承代表了 is-a关系,比如狗是哺乳动物。组合则是使用其他类来构建出更复杂的类,即其是一个装配集合。这种情况下没有父子has-a关系。关系,基本上复杂的对象都是由其他对象组合而成。组合代表了2.22继承在一个狗(Dog)类中,很简单的我们能找出一系列的各种狗的品种,

12、如下图的一个Dog类的继承体系图:Bafienjigneves. widhtfilE1knCY ml htnlA vodYodelinDog yOOelFrequencx nt yodeli voidGoldenRrtriever rMneYAJSpMd mtfcrt(: yoM-纣7.4 Dog密眾欷怵虬眉在此体系中,从上到下是从通用到具体的过程, 越往上越通用,共同性越高, 越往下越具体,特例性越高。该概念有时被称为通用到特例,这是使用继承时的 有一个重要的考虑因素。即在继承树中越往下,事情变得越特殊,最通用的事情 位于树的顶端。继承就是根据通用因素从通用到具体的过程。理论上来说,找到越多

13、的共同点越好。然而有时过于精确也会存在设计问题。 尽管找出尽可能多的共同点更加靠近真实生活,然而并不表示跟靠近模型。找出 的点越多,系统会越复杂,这便会陷入一个难题,到底想要更加精确的模型还是 复杂度低的系统,这便需要根据情况进行决策。决定在设计时引入更小的复杂度或者更多的功能是一项平衡的艺术,其创建一个系统是保持一定的弹性,引入复杂度是不至于被自身压垮。2.23 组合组合技术通常用于想在新类中使用现有类的功能而非要特殊化某个类的情况, 继承则体 现在想要特殊化某个现有的对象, 即在继承树中, 越往下对象只能是越特殊化, 因此能用组 合解决的先用组合, 再考虑用继承。 组合并没有继承,是以别的

14、对象作为自身的属性。 一个 特定的对象由其他对象组合而成, 而且这些对象被作为对象属性, 那么这个新的对象被称为 混合或者聚合、综合对象。2.3 封装封装是面向对象的本质概念,在谈接口 / 实现范式时其实都在谈封装,根本问题是对于 一个类而言,它应该暴露什么信息,不暴露什么信息。封装等同于数据和行为。封装和继承是什么关系?封装是面向对象的本质,所以它面向对象设计的基本原则之 一。继承也是三个主要的面向对象概念之一, 然而,继承在某种程度上破坏了封装。在类的 体系结构中继承弱化了封装, 继承意味着对其他类的强封装, 但是弱化了父类和其子类之间 的封装。同时多态也是对继承最优雅的使用之一。2.4

15、抽象类与接口抽象类继承子对象的行为, 也可以是规范子对象行为, 对行为的一种抽象, 接口是完全 的规范对象的行为。在 Java中,类继承抽象类,而实现接口。有时继承被称为实现继承, 而接口被称为定义继承。 接口是继承的特殊类型, 继承是严 格的 is-a 关系,但接口不是。 接口可以被应用的不相关的类,而抽象类即对相似事物特征的 抽象,抽象类可以体统一些实现, 而接口只模型化行为, 接口永远不会提供任何类型的实现, 只有行为。接口指定了没有明显联系的类之间的相同行为。仅供个人用于学习、研究;不得用于商业用途For personal use only in study and research; not for commercial use.Nur f u r den pers?nlichen f u r Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l e tude et la recherche uniquementa des fins personnelles; pasa des fi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号