版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象基本概念总体设计部 石宏峰面向对象基本概念总体设计部 石宏峰面向对象概述面向对象概述开篇语复杂性是软件系统本质的一部分。没有什么抽象处理能够消除软件系统的复杂性,然而,能够生成一种机制来管理这些复杂性。并且,有些困难不是“偶然的”,是软件建造的方法所引起的。改变建造软件的方式将改善这些所谓“偶然的”困难。开篇语复杂性是软件系统本质的一部分。没有什么抽象处理能够造成软件复杂性的主因软件开发工作的现状:软件越来越庞大,各软件组件之间的互联很复杂软件开发由个人的创造性活动转变为有组织的团队活动,交流协调工作加剧传统的结构化分析设计和模块化编程导致系统低内聚、高耦合,使系统不灵活也不易维护 造
2、成软件的复杂性的真正原因:软件的大小不能决定软件复杂程度高度耦合、低内聚才是造成软件复杂性的主要原因造成软件复杂性的主因软件开发工作的现状:传统的结构化分析设计面向对象(Object-Orientation)面向对象的概念最初是在上个世纪60年代后期由使用SIMULA语言的研究人员提出真正的面向对象程序设计是在Smalltalk语言中实现的,“面向对象”这个词也是Smalltalk首先提出的 面向对象方法学认为:客观世界由各种“对象”所组成,任何事物都是对象每一个对象都有自己的运动规律和内部状态不同对象的组合及相互作用就构成了我们要研究、分析和构造的客观系统面向对象(Object-Orient
3、ation)面向对象的概OO方法与结构化方法差异(1)结构化方法:将一个系统化分为两部分:数据(使用数据模型建模)和功能(使用过程模型建模)。导致数据与设计模型和系统实现(即程序)中的行为分离。OO方法:将系统定义为一组正在交互的对象。对象可以完成一些事情(功能),也知道一些事情(数据)。OO方法与结构化方法差异(1)结构化方法:将一个系统化分为两OO方法与结构化方法差异(2)OO方法与结构化方法差异(2)面向对象的软件系统构造面向对象的软件系统构造面向对象方法很多程序员将面向对象编程(OOP)技术和面向对象(OO)技术混淆面向对象不仅是一种技术,面向对象技术是一门博大精深的学问,它是一种方法
4、论或者说是一种世界观人们对面向对象方法的研究与运用,不再局限于编程阶段,而是从系统分析和系统设计阶段就开始采用面向对象方法面向对象方法已经发展成一种完整的方法论和系统化的思想体系面向对象不仅适用于软件设计开发,也适用于解决硬件、组织结构、商业模型等多种领域的问题 面向对象方法很多程序员将面向对象编程(OOP)技术和面向对象“练器”与“练气”会使用面向对象的编程工具并不等于就掌握了面向对象的思想和方法程序设计语言仅仅提供一个方法学的表示,而真正的方法是从生活、工作、学习等中提升而来的,这个也真是程序设计语言所做不到的 有人即使选择了面向对象的利器,也无法成为真正的高手。因为他看重的是“器”的好坏
5、,忽略的是“气”的修炼掌握面向对象的思想如同获得练气的真谛,它的重要性往往胜过了对编程语言的选择练器虽易,但难成高手。练气虽好,但见效缓慢。内外兼修,终成正果“练器”与“练气”会使用面向对象的编程工具并不等于就掌握了面面向对象基本概念面向对象基本概念总述对象类实例类的基本关系(继承、关联、聚合)接口封装多态性总述对象对象(Object)对象指的是一个独立的、异步的、并发的实体,它能“理解一些事情”(即存储数据)、“做一些工作”(即提供服务),并“与其它对象协同”(通过交换消息) 对象是对问题域中某个实体(任何有明确边界和意义的东西包括具体的物理实体和人为的概念)的抽象软件系统中的对象对象是一个
6、接收和发送消息的黑盒子对象包含编码(CODE)和数据(DATA)CODE是一段有序的计算机指令,决定对象的行为DATA是指令要操作的信息,即对象的内容CODE与DATA在对象内部是分离的对象是数据结构及其上的操作的封装体 对象(Object)对象指的是一个独立的、异步的、并发的实体类(Class)相似对象(具有相同属性和行为)的一种分类是一张制造对象的蓝图,对象通过类来定义。类名属性方法属性(Attribute):类知道的事情;一些数据或信息(内容)方法(Method):类完成的事情;一个操作或成员函数(行为),有参数和返回值类(Class)相似对象(具有相同属性和行为)的一种分类类名实例(I
7、nstance)实例:按照类“样板”建立的具体对象,就是实例。实例是一个具体的对象(“对象”这个术语有泛指的含义) 实例化:创建对象的过程实例(Instance)实例:按照类“样板”建立的具体对象,类、实例与对象的联系与区别类是一个模板、蓝图实例和对象都是根据类模板创造出来的实例指的是一个具体的实例对象是泛指实例,并不指出是哪个具体的实例类、实例与对象的联系与区别类是一个模板、蓝图类关系继承(1) (inheritance)继承:表示两个类之间是“is a”、“is like ”或“is kind of”的关系子类(subclass):如果类B继承自类A,B就是A的子类父类(superclas
8、s):如果类B继承自类A, A 就是B的父类类A类B属性继承、方法继承类关系继承(1) (inheritance)继承:表示两类关系继承(2)单继承(single inheritance):一个类仅从另外一个类中继承多重继承(multiple inheritance):一个类从另外的一个以上的类中继承覆盖(override):在子类中重新定义属性和方法抽象类(abstract class):不能实例化的类类关系继承(2)单继承(single inheritan类关系 关联(1) (association)类A类B基数A基数B标签关联:一个类知道(knows)另一个类:表示两端连接的类存在关联关
9、系:表示关联的方向基数:表示两端关联的对象数(0.1, 1, 0.*, 1.*, n, 0.n, 1.n)标签:对关联的描述,一般说明关联发生的前提。(可选)类关系 关联(1) (association)类A类B类关系 关联(2) 双向关联:两个类互相知道类A基数A基数B标签类B递归关联:一个类中的对象之间存在关联关系类A基数A基数B标签多关联:两个类之间存在关多种联关系类A基数A基数B标签1类B基数a基数b标签2类关系 关联(2) 双向关联:两个类互相知道类A基数A基类关系 聚合 (aggregation) 聚合:是一种特殊的关联。表示两个类之间是is part of 的关联。类A类B基数组
10、合(composition):是一种强聚合。表示“整体”与各“组成部分”共存。类A类B基数类关系 聚合 (aggregation) 聚合:是一种接口(1)(interface)接口好比一种模板,这种模板定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口不能被实例化一个对象仅能通过其接口才会被其它对象所了解类可以实现多个接口并且通过这些实现的接口被索引接口是一个对象在对其它的对象进行调用时所知道的方法集合对象的接口描绘了对象能够完成的工作接口是实现插件化(pluggability)的关键接口(1)(interface)接口好比一种模板,这种模板接口(2)Method1M2
11、M3M4Method1M2M3M4DataLogicInterfaceClass接口是对类的轮廓的抽象接口不变类被使用方式不变将实现抛开(在没有具体实现的情况下,就确定如何使用类),留下扩展空间接口(2)Method1M2M3M4Method1M2M3封装和信息隐藏(encapsulation & information hiding)封装将操作和数据变量同放于一个类(或对象)中,并使对数据的访问只可通过该类(或对象)本身的操作来进行,外部不能直接作用于该类(或对象)的数据,类(或对象)的通讯只能通过明确的消息来进行封装是把类或对象的边框涂黑的做法。目的是为了做信息隐藏信息隐藏:将对象私有信息
12、隐藏,使之不能被外部类直接引用。隐藏对象知道什么和能做什么的实现方法,即隐藏对象是如何工作的目的就是限制外部对属性和内部方法的访问。面向对象编程的一条基本原则对象的使用者永远不需要去看对象(黑盒子)的内部封装和信息隐藏(encapsulation & infor多态性(polymorphism)一个对象能够有多种形式,其他的对象能够与这个对象相互作用而不必知道它具有的确切形式 Figrue:抽象类“图形”draw():画图方法Circle、Square、Retangle继承Figrue,并重置(或实现)draw() 方法。Figure.draw() 的输出?多态性(polymorphism)一
13、个对象能够有多种形式,面向对象方法总结区别于传统的结构化方法。传统的软件观点:主动的应用程序操作被动的数据结构;OO的软件观点:相互影响的对象集合将现实世界中的实体看成是一个个对象,分析对象之间存在着的联系;把这些映射到系统模型中,建立一个基于相互作用的对象的系统模型 使用面向对象技术开发出来的软件结构是建立在现实世界的实体或对象的基础上的,它把软件的功能分散到各个对象中间建立在客观系统的事物和抽象概念基础上的对象实现了从问题域到解题域直接映射 。使得分析设计过程更加直观自然分布式处理:每个对象将功能和状态封装于自身的内部结构中,同时对象的工作也是自治的,不受时间、地点影响,因而使系统在运算处理上具有分布性 高度的重用性:对象、方法等可重复利用 功能的共享性:通过对象的继承机制使系统的处理能力得到充分发挥 面向对象方法总结区别于传统的结构化方法。传统的软件观点:主动面向对象方法的意义面向对象的方法在技术和管理两个层面均提供了决定软件质量的诸多要素,包括可复用性、可靠性、健壮性、可扩展性、分布性和可存储性等面向对象直接导致软件系统的强内聚和松耦合,使软件系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路交通安全与交通管理手册
- 道路交通标志设计与安装指南
- 基于深度学习的轴承退化特征提取和寿命预测方法研究
- 辣椒CaABCB家族的生物信息学分析及CaABCB20调控育性的功能验证
- 美妆产品防晒产品使用手册
- 2026年中小学落实学生体质强健计划实施方案(特色发展型)
- 某针织厂法定假规范
- 针织厂外协加工制度
- 护理技能的持续改进
- 北师大版七年级下学期数学第二单元测试题及答案
- 燃气具安装维修培训课件
- DB22∕T 3259-2021 健康儿童及青少年心肌酶参考区间规范
- 2024年珠海辅警协警招聘考试真题附答案详解(完整版)
- 知到《微观经济学(重庆财经学院)》智慧树网课完整版章节测试答案
- 《自我管理》课件-2. 第一单元第二课 认清自身角色
- 交通运输执法培训知识课件
- 2025年9月17日事业单位联考《综合应用能力(A类)》试题及答案
- 5年(2021-2025)高考1年模拟化学真题分类汇编专题14 化学实验探究综合题(北京专用)(原卷版)(北京专用)
- 新疆可爱的中国课件
- 城市社会学-课件 第九章 城市社会发展
- 2024年吉林省高职高专单独招生考试数学试卷真题(精校打印)
评论
0/150
提交评论