OOP 01 第1章_第1页
OOP 01 第1章_第2页
OOP 01 第1章_第3页
OOP 01 第1章_第4页
OOP 01 第1章_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java 面向对象程序设计 李向阳HQULXY 注意事项 学习方法听课 读书 写程序 做实验 上机调试挫折是必经之路 理论 实践 挫折 成功 理论 实践 成功的历程是否都这样 评分标准 作业与上机25 期末笔试70 其它5 教材 面向对象程序设计 第2版 2009年3月第二版 叶乃文王丹实验平台 JDK1 6 NetBeans参考资料NetBeans帮助系统 中文 JDK API 1 6 zh CN CHM Java开发工具包类库中文文档 Java语言与面向对象程序设计 朱福喜java编程思想 Thinkinginjava 侯揵译 BurceEkle 掌握面向对象程序设计的思维模式学会应用基本的开发环境编写Java程序 JDK和NetBeans理解 掌握面向对象编程技术的主要内容 类的继承和多态性 包 接口和异常 掌握Java语言对面向对象思想的实现 学会运用Java语言实现基本的图形化界面应用程序设计能够运用Java语言进行一般应用程序设计和简单的网络程序设计 基本的多线程程序设计通过JDBC操作数据库 学习目的与主要学习内容 第1章 面向对象程序设计概述 软件开发的思考方法和构造方法 1 1结构化程序设计方法 1 1 1结构化程序设计思想的提出背景在计算机的发展历程中 软件的发展速度一直滞后于硬件的发展 它已经成为制约计算机产业整体发展的瓶颈 以下是诸多原因中的两个重要因素 软件产业非规模化 个体化 早期的程序设计没有规则可言 是一种类似艺术创作行为 全凭程序设计师的个性发挥 无招胜有招 大型的软件系统须许多人 长时间协作完成 面临重大危机 软件危机 1960年代末 受限于程序设计语言 程序设计语言 方法的发展 1945 机器语言1950年代前后 汇编语言1954年 第一个高级程序设计语言 FORTRAN 发布1960年代提出结构化程序设计方法 70 80年代接受并被广泛应用面向对象程序设计方法 60年代末提出 1990年代被广泛接受并应用面向组件面向服务 1 1 2结构化程序设计方法 自顶向下 逐步求精的开发方法模块化的组织方式结构化的语句结构 自顶向下 逐步求精 将编写程序看成是一个逐步演化的过程 所谓自顶向下是指将分析问题的过程划分成若干个层次 每一个新的层次都是上一个层次的细化 即步步深入 逐层细分 大事化小 小事化了 模块化 将整个系统分解成若干个模块 每个模块实现特定的功能 最终的系统将由这些模块组装而成 模块之间通过接口传递信息 模块具有良好的独立性 语句结构化 顺序结构 分支结构 Y N 结构化程序设计的特点 程序设计 数据结构 算法程序内容 过程 过程调用 结构化程序设计的基本过程 软件开发的基本过程 需求分析系统设计系统实现系统测试系统维护当结构化思想贯穿于每个过程时 其基本过程 分解和组装 面向对象技术 面向对象 ObjectOriented 技术 是结构化方法的发展 是更高层次 更精微的软件开发技术 包括OOA OOD OOP 面向对象编程 ObjectOrientedProgramming OOP 是面向对象方法在编程中的应用面向对象的设计 ObjectOrientedDesigning OOD 是面向对象方法在 软件 设计中的应用面向对象的系统分析 ObjectOrientedAnalysis OOA 是面向对象方法在 软件 设计中的应用 1 2面向对象程序设计方法 1 2 1面向对象程序设计的产生背景 审视问题域的视角 横看成岭侧成峰 抽象级别 用概括 分类机制 实现通用性 封装体 系统由若干独立 自治的个体相互协作而成 可重用性 DRY原则 Don tRepeatYourself 1 2 2面向对象程序设计 面向对象程序设计方法是指用面向对象的方法指导程序设计的整个过程 面向对象是指以对象为中心 分析 设计及构造应用程序的机制 面向对象程序设计应该具有的特征 所有待处理的内容都表示成对象 对象间依靠相互发送消息或响应消息实现通信 每个对象都有自己的惟一标识 以便区别属于同一个类的不同对象 对象一定属于某个类 我们又将这个对象称为所属类的一个实例 类是将具有共同属性的对象进行抽象的结果 它可以具有层次关系 即一个类既可以通过继承其他类而来 也可以被其他类继承 举例 快速拼写检查程序 应用传统面向过程的思维方式 快速拼写检查程序将对用户提供的单词进行拼写检查 如果在字典中找到 输出 拼写正确 的字样 否则输出 拼写不正确 的字样 要点是什么 面向过程 以动作 动词 为中心 结构化程序设计方法 检查拼写 输入 检查 输出 举例 快速拼写检查程序 快速拼写检查程序将对用户提供的单词进行拼写检查 如果在字典中找到 输出 拼写正确 的字样 否则输出 拼写不正确 的字样 面向对象的程序设计方法 Dictionary Dictionary Set Word 面向对象程序 对象 消息 字典 单词 集合 面向对象程序的中的对象与消息 Dictionary 用户 提供单词 w 在集合中查找w 报告检查结果 正确 错误 拼写检查程序 请求查w 查询结果 有 无 面向对象程序设计的优点 1 能够实现对现实世界客体的自然描述2 可控制程序的复杂性 对于相同规模的系统 结构更清晰 更易理解 3 可增强程序的模块性4 可提高程序的重用性5 可改善程序的可维护性6 可适应新型的硬件环境 1 3基本概念 1 3 1抽象 抽象是对一个事物群体共性的概括 舍弃个别的 非本质的属性 抽取出共同的 本质的属性的过程 它是形成概念的必要手段 是解决任何问题的基本策略 是人类认识世界的本能方式 抽象主要包括过程抽象和数据抽象两个部分 过程抽象是指功能抽象 即舍弃个别的功能 抽取共同拥有的功能 数据抽象比过程抽象的级别更高 将现实或虚拟的客体 Object 作为抽象单元 用属性特征和行为特征两大部分来刻画某个客体 是面向对象程序设计所采用的核心方法 模块化和信息隐蔽是数据抽象过程的两种主要途径 任何事物都可抽象为对象 Everythingisobject 1 3 1类 抽象 抽象与分类 Abstractandclassification 忽略事物的非本质特征 只注意那些与当前目标有关的本质特征 从而找出事物的共性 叫做抽象 把具有共同性质的事物划分为一类 得出一个抽象的概念 叫做类 类是对象抽象的结果 类之间主要存在三种关系 它们是 关联 聚合和泛化 1 3 1类的UML图形化表示格式 类的名称 属性属性 数据类型属性 数据类型 初值 操作操作 参数表 结果类型 Customer name Stringaddress Stringphone Long move x String y Stringadd booleanisEmpty booleangrow boolean 1 3 2封装 是将客体的属性和行为聚集在一个逻辑单元内部 形成一个可供访问的基本单元 对外隐藏局部信息 外界只能够通过所提供的特定行为接口 方法 函数 改变或获取其属性状态 属性 行为1 行为2 行为3 行为4 行为5 行为6 行为8 行为7 1 3 3对象 对象是用来描述领域世界中客体的部件 是面向对象软件系统在运行时刻的基本单位 对象都有一个惟一的标识 通过它区分属于同一个类的不同对象 对象应该具有下面5个基本特性 自治性 指对象具有一定的独立操作能力 封闭性 指对象具有信息隐蔽的能力 通信性 指对象具有与其他对象通信的能力 被动性 指对象的状态转换需由外界刺激引发 暂存性 指对象的动态创建与消亡 1 3 5消息 消息是一个对象要求另一个对象实施某项操作的请求 消息包含接收者和要求接收者执行哪项操作的请求 但不指定应该怎样做 具体的操作过程由接收者自行决定 消息传递是对象之间相互联系的惟一途径 发送者发送消息 接收者通过调用相应的方法响应消息 这个过程被不断地重复 使得应用程序在人的有效控制下运转起来 最终得到相应的结果 可以说 面向对象程序是消息驱动而实现运转 消息传递可简单理解为类似C语言的函数调用 对象间消息传递示例 UML时序图 1 3 6继承 是类之间的一种常见关系 提供了一种共享数据和操作的机制 通过继承 一个类的定义可以基于另外一个已经存在的类 继承是面向对象程序设计方法的一个重要标志 利用继承机制可以大大提高程序的可重用性和可扩充性 父类 子类 生物 动物 植物 细菌 类的继承举例及图示 1 3 7多态性 不同的类型的对象对收到的同一种消息可以产生完全不同的响应效果 这种现象叫做多态 利用多态机制 用户可以发送一个通用的消息 而实现的细节由接收对象自行决定 这样 同一个消息可能会导致调用不同的方法 实现不同功能 聚合 一个 较复杂的 对象由其他若干 较简单的 对象作为其构成部分 称作聚合 分为紧密 固定的和松散 灵活的两种方式 聚合刻画了现实事物之间的构成关系 整体 部分结构 由一组具有聚合关系的类所形成的结构称作整体 部分结构 它是一个以类为结点 以聚合关系为边的连通有向图 聚合关系又称整体 部分关系 它是对象实例之间的一种关系 有时说两个类之间存在着整体 部分关系 是指一个类的对象实例以另一个类的对象实例作为组成部分 这种关系的语义是 hasa 或 isapartof 1 3 8UML 关联 对象之间的静态联系 即通过对象属性体现的联系 称作关联 关联的表示符号称作实例连接 UML其它图元素 P18 19 小结 面向对象的4 2个特性 抽象性封装性继承性多态性可组合性关联性 1 4面向对象程序设计语言 1 4 1面向对象程序设计语言OOPL Object OrientedProgrammingLanguage 提供描述面向对象方法所涉及到的类 对象 继承和多态等基本概念的程序设计语言 它应该具有下列特征 识别 标识 性 分类性 继承性和多态性 1 4 2几种有代表性的OOPL Simula67 支持单继承 一定含义上的多态和部分动态联编 Smalltalk 支持单继承 多态和动态联编 Eiffel 支持多继承 多态和动态联编 C 支持多继承 多态和部分动态联编 Java 提供了类机制 以及有效的接口模型 支持单继承 多态和动态联编 C 与Java类似 由MicroSoft公司推出 传统结构化方法 数据结构 算法 程序设计 以对象为中心组织数据与操作 数据 对象的属性 操作 对象的服务 方法 类型与变量 类与对象实例 函数 过程 调用 消息传送 类型与子类型 一般类与特殊类 继承 构造类型 整体 部分结构 聚合 指针 关联 不同点思想观念 从对象出发认识问题域 构造策略 以对象作为构成系统的基本单位 将对象的数据与操作紧密结合 保证机制 由支持封装 继承 多态的机制保证其原则的实现 1 4 3面向对象方法与传统结构化方法的比较 面向对象方法 面向机器面向代数面向过程面向数据面向人面向文件面向信息面向应用面向功能面向数据流 面向对象是软件方法学的返朴归真 软件科学的发展历程中出现过许多 面向 软件开发从过分专业化的方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论