面向对象的程序设计原理与技术

上传人:宝路 文档编号:47700561 上传时间:2018-07-04 格式:PPT 页数:70 大小:1.36MB
返回 下载 相关 举报
面向对象的程序设计原理与技术_第1页
第1页 / 共70页
面向对象的程序设计原理与技术_第2页
第2页 / 共70页
面向对象的程序设计原理与技术_第3页
第3页 / 共70页
面向对象的程序设计原理与技术_第4页
第4页 / 共70页
面向对象的程序设计原理与技术_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《面向对象的程序设计原理与技术》由会员分享,可在线阅读,更多相关《面向对象的程序设计原理与技术(70页珍藏版)》请在金锄头文库上搜索。

1、首都师范大学教育技术系 方海光 2007年9月面向对象的程序设计原理与技术1http:/ 课件存放位置2第一章 面向过程与面向对象的程序设计本章的主要目的是理解面向过程的程序设计 和面向对象的程序设计在本质上有什么不同 。主要从以下几个方面来讲解:计算机的工作过程面向过程的程序设计面向对象的程序设计3计算机的工作过程例:计算圆面积。s=3.14*r*r4输入设备程序 原始数据内 存 储 器原始数据 运算器结果结果 输出设备外存储器控制器计算机的工作过程基本结构图程 序5计算机的工作过程 计算机在程序的控制下解题 程序设计语言的发展经历了五代(前三代 语言编写的程序本质上是相同的,都是按照 机器

2、的工作过程来编写,只不过程序的描述 语句越来越接近人的思维,通用性越来越强 ) 第一代为机器语言 第二代为汇编语言 第三代语言为高级语言 第四代语言为面向对象的计算机 语言 第五代语言是按人工智能原理设 计的语言6面向过程的程序设计 下面用面向过程的语言解题标准C语言源程序#include void main()float r,s;printf(“Input r:“);scanf(“%f“,s=3.14*r*r;printf(“The area is:%fn“,s);7 例11 Page2 例12 Page38面向过程的程序设计 人模拟计算机思维来解题(输入-运算-输出 ) 程序设计工作主要围

3、绕解题过程的设计 程序功能隐含在程序代码中理解困难 维护(修改)困难9面向过程的程序设计 在长期的软件开发实践中,人们总结出了 一些设计原理和系统化的方法,包括: 模块化:如函数 抽象 :忽略事物间的差异,集中和概括 共性的方面,例如复杂问题抽象为用 较自然的语句来表示; 自顶向下的程序设计方法就是一 个从抽象到具体的过程。10面向过程的程序设计信息隐藏:如局部变量 模块独立:高内聚和松耦合内聚:内部元素间结合的紧密 程度;耦合:模块间互相依赖的紧密 程度。 结构程序设计:自顶向下逐步求 精的设计方法、单入口单出口的控制 结构 一句话:功能分解或算法分解11面向对象的程序设计 人类习惯的解决问

4、题的方法:“顾客-服务 员”的工作模式。 例:去理发馆理发 面向对象的方法模拟人类习惯的解题方法, 用对象分解取代功能分解,程序中的所有 对象分工协作,共同完成整个程序的功能 。12面向对象的程序设计 面向对象方法的四个要点:(1)面向对象的软件系统由对象组成;(2)所有的对象划分为对象类,每个类由数据 和方法组成;(3)若干个类按照子类(派生类)与父类(基 类)的关系组成了层次结构;-继承,如汽车 与交通工具;(4)对象之间通过传递消息互相联系。 OO=对象+类+继承+消息 13面向对象的程序设计 面向对象方法的优点(1)与人的思维习惯一致(2)稳定性好(3)可重用性好(4)可维护性好14

5、例13 Page6151 对 象 对象相当于现实世界中的实体 对象=属性 + 方法数据操作 内部操作1内部操作2数据公有 操作1公有 操作216对象的定义对象是一个封装体,封装了数据结构及可以施加在这 些数据结构上的操作。 对象有对象名; 对象中的数据表示对象的状态,一个对象的状态只能 由该对象本身的操作来改变。 对象向外界提供一组服务(即公有的操作),称为与 外界的接口。对 象17对象的特点: 以数据为中心 对象是主动的 实现了数据封装 本质上具有并行性 模块独立性好对 象182 其他面向对象的概念 类(Class)是对具有相同数据属性和相同操作的一个或一组 (集合)相似对象的描述,是一个抽

6、象的概念。 类与函数的不同:类 封装了函数与数据 是对问题的抽象描述函数 封装了语句与数据 完成特定的功能例:大小不同、位置不一和颜色不同的圆,可以定义为 一个Circle类。例:中国人19 实例(Instance)是由某个特定的类所描述的一个具体的对 象。 “对象”这个术语,既可以指一个具体的对 象,也可以泛指一般的对象,“实例”这个 术语,必然是指一个具体的对象。C+中,要定义一个对象或实例,必须 先建立一个这类对象的类。基本概念20 属性(Attribute)类中所定义的数据,它是对客观世界实体所 具有的性质的抽象。类的每个实例都有自己特 有的属性值。 例:圆类(半径、位置、颜色)在C+

7、 语言中把属性称为数据成员。基本概念21 方法(Method) 对象所能执行的操作,它应用于类或被类中对象使用 。在C+中称为成员函数。通常,一个函数对应一个 操作,实现一个功能。例:圆对象响应显示圆的消息在Circle类中必须定义能够显示这个圆的方法 ,即编写成员函数Show(int color)。基本概念22 消息(Message) 对象之间相互请求相互协作的途径一个消息由下述三部分组成: (1)接收消息的对象; (2)消息选择符(也称为消息名); (3)零个或多个变元。例如 : MyCircle.Show(GREEN) ;其中:MyCircle是接收消息的对象的名字Show是消息选择符(

8、即消息名)GREEN是消息的变元。 基本概念23 封装性(Encapsulation)封装即把数据和实现操作的代码集中起来放 在对象内部,外界通过对象提供的接口来使用 它,不需知道内部数据结构细节和实现操作的 算法 。实现封装的条件 : (1)有一个清楚的边界 (2)有确定的接口(用于接受用户发送的消息 ) (3)受保护的内部实现封装的好处就是实现了信息隐藏,把对象的 实现细节对外界隐藏起来了,提高安全性。 在C+中,通过定义类来实现封装。基本概念24 继承(Inheritance) 指能够直接获得已有的性质和特征,而不必重 复定义它们。是子类自动地共享基类中定义的 数据和方法的机制。例:家族

9、关系继承具有传递性,如果类C继承类B,类B继 承类A,则类C继承类A。一个类除了具有该类所 描述的性质外,还具有该类上层全部基类描述 的一切性质。基本概念25 多态性(Polymorphism ) 在类等级的不同层次中,相同的消息,被 不同类的对象接收,产生了不同的行为。例:“打”好处:增加软件系统的灵活性,减少了信 息冗余,提高了软件的可重用性和可扩充性 。在C+ 语言中,多态性是通过虚函数来实现 的。(动态联编)基本概念26 重载(Overloading)有两种重载:函数重载是指在同一作用域内的若干个参 数特征不同的函数可以使用相同的函数名字; 例:运算符重载是指同一个运算符可以施加于 不

10、同类型的操作数上面。例: cout“2”;表示向屏幕输出字符串2x2;表示将x中的二进制左移2位基本概念27在C+语言中函数重载是通过静态联编实 现的,也就是在编译时根据函数变元的个 数和类型 ,决定到底使用函数的哪个实现 代码;对于重载的运算符,在编译时根据 被操作数的类型,决定使用该算符的哪种 语义。基本概念283 面向对象建模 什么是模型 使用模型的好处 三种模型 模型的表示29面向对象建模 为什么要建模?完全、彻底地理解问题 什么是模型?对事物的一种抽象,由一组图示符号和组 织这些符号的规则组成。目的:理解事物 。 如下图:30面向对象建模31面向对象建模 用面向对象方法开发软件,通常

11、要建立三 种形式的模型:对象模型:描述系统数据结构动态模型:描述系统控制结构功能模型:描述系统功能324 对象模型 对象模型表示系统的静态结构,描述了对 象、对象间的关系。 建立对象模型用到的图形符号:(1)表示类的符号(包括属性和服务)(2)表示类实例的符号(3)表示类间关系的符号334.1 表示类&对象的图形符号(p12) 类&对象:含义是“一个类及属于该类的对 象 ” 34例:计算圆的面积。表示类&对象的图形符号圆圆的半径计算圆面积 显示圆面积圆圆的半径计算圆面积 显示圆面积35 类的命名规则类名应富有描述性、简洁且无二义性,命名时 应该遵守以下几条准则:(1)使用标准术语(2)使用具有

12、确切含义的名词(3)必要时用名词短语作名字:如公司员工表示类&对象的图形符号364.2 表示类间关系的符号 类间、对象间的关系可以概括为泛化关 系、组合关系及关联关系三种关系1. 泛化关系:“是一种”(ISA)“一般特殊”关系,反映了一个类 与若干个互不相容的子类之间的分类关系 。高层类(即基类或超类)说明一般(公 共)的属性,低层类(即派生类或子类) 说明特殊属性。 37半圆形 表明泛 化关系 的方向 :从半 圆弧中 点引出 的直线 指到一 般化的 类。表示归纳关系的图形符号38 例:表示泛化关系的图形符号图形颜色 中心位置 笔粗细 笔类型 移动(move) 选择(select) 旋转(ro

13、tate) 显示(display)0维1维 定位 放大2维 定位 填充类型 放大填充 点显示线 终点 显示弧 半径 开始角 弧角 显示多边形 边数 顶点 显示圆 直径 显示 旋转392.组合关系组合关系就是“整体部分”关系,它 反映了对象之间的构成关系。组合关系也 称为聚集关系。在C+语言中,通常是在一个类中包 含另一个类的对象成员来实现这种关系。类间关系40上部:整体对象 下部:部分对象 标值:该端对象的数量(省略为1)三角形:组合关系的方向(从三角形顶角引出的线指向 整体对象,从三角形底边中点画出的线连到部分对象)表示组合关系的图形符号41 例:表示组合关系的图形符号教材封面前言目录章习题

14、节1,n423.关联关系关联关系反映对象之间相互依赖、相 互作用的关系。通常把两类对象之间的二 元关系再细分为一对一(1:1)、一对多 (1:M)和多对多(M :N)等三种基 本类型 。类间关系43二元关联的5个要素:连线:连线端点所在的位置表明,这是 对象(而不是类)之间的映射关系。 类间关系-关联关系教师书1+44 阶参与关联的对象的个数。阶用标在连 线端点的单个数字或数值区间表示。例如 ,“1+”(一个或多个),“3,5”(3 至5)等 。表示类间关系的图形符号45 链属性链属性就是关联链的性质。例如,计算机中 每个用户对不同文件拥有不同的访问权限,访 问权限就是文件与用户之间的关联链的

15、属性。表示类间关系的图形符号46 限定 一个受限的关联由两个对象及一个限 定词组成。可以把限定词看作是一种特殊 的链属性。表示类间关系的图形符号47 消息连接反映了一个对象对另一个对象的处理 依赖性。表示类间关系的图形符号48例1:一家公司的对象模型。该公司有许多部 门,每个部门由一名经理管理,也有的经理 不管理任何部门,每个部门生产多种产品, 每种产品仅由一个部门生产。公司有许多员 工为之工作,员工分为工人和经理,每名工 人可参加多个项目,每个项目需要多个工人 参与,每位经理可主持多个项目,每个项目 由一位经理主持。4.3 对象模型例子49对象模型例子505 面向对象分析(OOA) 什么是面

16、向对象分析?抽取和整理用户需求并建立问题域精确模 型的过程。 面向对象分析工作大体上按照下列顺序进 行:(1)寻找类&对象(2)识别结构(3)定义属性(4)定义服务 51OOA第一步:确定类&对象1、找出候选的类&对象有两种方法: (1)找出问题域中的五类事物作为候选类&对象 可感知的物理实体,如书、汽车 人或组织的角色,如教师、雇员 应该记忆的事件,如演出、访问 两个或多个对象的相互作用,通常具有交易或接触 的性质,如购买,结婚 需要说明的概念,如政策 (2)将需求分析中的名词或名词短语作为候选者52例1:各剧院的演出售票预订系统 按第一种方法,得到候选的类-&-对象为:剧院、演出、票、预订、系统例2

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

当前位置:首页 > 高等教育 > 大学课件

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