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

PPT
  • 阅读 40 次
  • 下载 0 次
  • 页数 70 页
  • 大小 1.362 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
面向对象的程序设计原理与技术课件
可在后台配置第一页与第二页中间广告代码
面向对象的程序设计原理与技术课件
可在后台配置第二页与第三页中间广告代码
面向对象的程序设计原理与技术课件
可在后台配置第三页与第四页中间广告代码
面向对象的程序设计原理与技术课件
面向对象的程序设计原理与技术课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 70
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】面向对象的程序设计原理与技术课件.ppt,共(70)页,1.362 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44870.html

以下为本文档部分文字说明:

1首都师范大学教育技术系方海光2007年9月面向对象的程序设计原理与技术2http://fang.csai.cn课件存放位置3第一章面向过程与面向对象的程序设计本章的主要目的是理解面向过程的程序设计和面向对象的程序设计在本质上有什么不同。主要从以下几个方面

来讲解:•计算机的工作过程•面向过程的程序设计•面向对象的程序设计4计算机的工作过程例:计算圆面积。s=3.14*r*r5输入设备程序原始数据内存储器原始数据运算器结果结果输出设备外存储器控制器计算机的工作过程—基本结构图程序6计算机的工作过程•计算机在程序的控制下解题•程序设

计语言的发展经历了五代(前三代语言编写的程序本质上是相同的,都是按照机器的工作过程来编写,只不过程序的描述语句越来越接近人的思维,通用性越来越强)第一代为机器语言第二代为汇编语言第三代语言为高级语言第四代语言为面向对象的计算机语言第五代语言是按人工智能

原理设计的语言7面向过程的程序设计•下面用面向过程的语言解题标准C语言源程序#include<stdio.h>voidmain(){floatr,s;printf("Inputr:");scanf("%f",&r

);s=3.14*r*r;printf("Theareais:%f\n",s);}8•例1-1Page2•例1-2Page39面向过程的程序设计•人模拟计算机思维来解题(输入-运算-输出)•程序设计工作主要围绕解

题过程的设计•程序功能隐含在程序代码中—理解困难•维护(修改)困难10面向过程的程序设计•在长期的软件开发实践中,人们总结出了一些设计原理和系统化的方法,包括:模块化:如函数抽象:忽略事物间的差异,集中和概括共性的方面,例如复杂问题抽象为用较自然的语句来表示;自顶

向下的程序设计方法就是一个从抽象到具体的过程。11面向过程的程序设计信息隐藏:如局部变量模块独立:高内聚和松耦合内聚:内部元素间结合的紧密程度;耦合:模块间互相依赖的紧密程度。结构程序设计:自顶向下逐步求精的设计方法、单入口单出口的控制结构•一句话:功能分解或算法分解12面向对

象的程序设计•人类习惯的解决问题的方法:“顾客--服务员”的工作模式。例:去理发馆理发•面向对象的方法模拟人类习惯的解题方法,用对象分解取代功能分解,程序中的所有对象分工协作,共同完成整个程序的功能。13

面向对象的程序设计•面向对象方法的四个要点:(1)面向对象的软件系统由对象组成;(2)所有的对象划分为对象类,每个类由数据和方法组成;(3)若干个类按照子类(派生类)与父类(基类)的关系组成了层次结构;--继承,如汽车与交通工具;

(4)对象之间通过传递消息互相联系。OO=对象+类+继承+消息14面向对象的程序设计•面向对象方法的优点(1)与人的思维习惯一致(2)稳定性好(3)可重用性好(4)可维护性好15•例1-3Page6161对象•对象相当于现实世界中的实体•对象=属性+方法数据操作内部操作1内部操作2

数据公有操作1公有操作217对象的定义对象是一个封装体,封装了数据结构及可以施加在这些数据结构上的操作。•对象有对象名;•对象中的数据表示对象的状态,一个对象的状态只能由该对象本身的操作来改变。•对象向外界提供一组服务(即公有的操作),称为与外界的接口。对象18对象的

特点:•以数据为中心•对象是主动的•实现了数据封装•本质上具有并行性•模块独立性好对象192其他面向对象的概念•类(Class)是对具有相同数据属性和相同操作的一个或一组(集合)相似对象的描述,是一个抽象的概念。•类与函数的不同:类封装了函数与数据是对问题的抽象描述

函数封装了语句与数据完成特定的功能例:大小不同、位置不一和颜色不同的圆,可以定义为一个Circle类。例:中国人20•实例(Instance)是由某个特定的类所描述的一个具体的对象。“对象”这个术语,既可以指一个

具体的对象,也可以泛指一般的对象,“实例”这个术语,必然是指一个具体的对象。C++中,要定义一个对象或实例,必须先建立一个这类对象的类。基本概念21•属性(Attribute)类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。例:圆类(半

径、位置、颜色)在C++语言中把属性称为数据成员。基本概念22•方法(Method)对象所能执行的操作,它应用于类或被类中对象使用。在C++中称为成员函数。通常,一个函数对应一个操作,实现一个功能。例:圆对象响应显示圆的消息在Circle类中必须定义能够显示这个圆的方法,即编写成员函数Sho

w(intcolor)。基本概念23•消息(Message)对象之间相互请求相互协作的途径一个消息由下述三部分组成:(1)接收消息的对象;(2)消息选择符(也称为消息名);(3)零个或多个变元。例如:MyCircle.Show(GREEN)

;其中:MyCircle是接收消息的对象的名字Show是消息选择符(即消息名)GREEN是消息的变元。基本概念24•封装性(Encapsulation)封装即把数据和实现操作的代码集中起来放在对象内部,外界通过对象提供的接口来使用它,不需知道内部数据结构细节和实

现操作的算法。实现封装的条件:(1)有一个清楚的边界(2)有确定的接口(用于接受用户发送的消息)(3)受保护的内部实现封装的好处就是实现了信息隐藏,把对象的实现细节对外界隐藏起来了,提高安全性。在C++中,通过定义类来实现封装。基本概

念25•继承(Inheritance)指能够直接获得已有的性质和特征,而不必重复定义它们。是子类自动地共享基类中定义的数据和方法的机制。例:家族关系继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A

。一个类除了具有该类所描述的性质外,还具有该类上层全部基类描述的一切性质。基本概念26•多态性(Polymorphism)在类等级的不同层次中,相同的消息,被不同类的对象接收,产生了不同的行为。例:“打”好处:增加软件系统的灵活性,减少了信息

冗余,提高了软件的可重用性和可扩充性。在C++语言中,多态性是通过虚函数来实现的。(动态联编)基本概念27•重载(Overloading)有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用

相同的函数名字;例:运算符重载是指同一个运算符可以施加于不同类型的操作数上面。例:cout<<“2”;表示向屏幕输出字符串2x<<2;表示将x中的二进制左移2位基本概念28在C++语言中函数重载是通过静态联编实现的,也就是在编译时根据函数变

元的个数和类型,决定到底使用函数的哪个实现代码;对于重载的运算符,在编译时根据被操作数的类型,决定使用该算符的哪种语义。基本概念293面向对象建模•什么是模型•使用模型的好处•三种模型•模型的表示30

面向对象建模•为什么要建模?完全、彻底地理解问题•什么是模型?对事物的一种抽象,由一组图示符号和组织这些符号的规则组成。目的:理解事物。如下图:31面向对象建模部门工人经理项目项目名预算优先级产品产品名成本重量员工姓名地址身份证号码工资公司名字电话号码主要产品地址雇用解雇部门名职务参加

1+主持管理0,1生产为之工作1+1+1+1+一家公司的对象模型32面向对象建模•用面向对象方法开发软件,通常要建立三种形式的模型:对象模型:描述系统数据结构动态模型:描述系统控制结构功能模型:描述系统功能33

4对象模型•对象模型表示系统的静态结构,描述了对象、对象间的关系。•建立对象模型用到的图形符号:(1)表示类的符号(包括属性和服务)(2)表示类实例的符号(3)表示类间关系的符号344.1表示类—&—对象的图形符号(p12)•类—&—对象:含义是“一个类及属于该类

的对象”类名服务属性类名服务属性(a)(b)图对象模型中的图形符号(a)类-&-对象(b)类的符号35例:计算圆的面积。表示类—&—对象的图形符号圆圆的半径计算圆面积显示圆面积圆圆的半径计算圆面积显示圆面积36•类的命名规则类名应富有描述性、简洁且无二义性,命

名时应该遵守以下几条准则:(1)使用标准术语(2)使用具有确切含义的名词(3)必要时用名词短语作名字:如公司员工表示类—&—对象的图形符号374.2表示类间关系的符号•类间、对象间的关系可以概括为泛化关系、组合关系及关联关系

三种关系1.泛化关系:“是一种”(ISA)“一般─特殊”关系,反映了一个类与若干个互不相容的子类之间的分类关系。高层类(即基类或超类)说明一般(公共)的属性,低层类(即派生类或子类)说明特殊属性。38一般

化类具体类1具体类2表示归纳关系的图形符号半圆形表明泛化关系的方向:从半圆弧中点引出的直线指到一般化的类。表示归纳关系的图形符号39•例:表示泛化关系的图形符号图形颜色中心位置笔粗细笔类型移动(move)选择(select)旋转(rotate)显示(display)0维1维定位放大2

维定位填充类型放大填充点显示线终点显示弧半径开始角弧角显示多边形边数顶点显示圆直径显示旋转402.组合关系组合关系就是“整体─部分”关系,它反映了对象之间的构成关系。组合关系也称为聚集关系。在C++语

言中,通常是在一个类中包含另一个类的对象成员来实现这种关系。类间关系41整体部分1部分21,m0,n上部:整体对象下部:部分对象标值:该端对象的数量(省略为1)三角形:组合关系的方向(从三角形顶角引出的线指向整体对象,从三角形底

边中点画出的线连到部分对象)表示组合关系的图形符号42•例:表示组合关系的图形符号教材封面前言目录章习题节1,n433.关联关系关联关系反映对象之间相互依赖、相互作用的关系。通常把两类对象之间的二元关系再

细分为一对一(1:1)、一对多(1:M)和多对多(M:N)等三种基本类型。类间关系44二元关联的5个要素:•连线:连线端点所在的位置表明,这是对象(而不是类)之间的映射关系。类间关系-关联关系教师书1+45•阶参与关联的对象

的个数。阶用标在连线端点的单个数字或数值区间表示。例如,“1+”(一个或多个),“3,5”(3至5)等。表示类间关系的图形符号46•链属性链属性就是关联链的性质。例如,计算机中每个用户对不同文件拥有不同的访问权限,访问权限就是文

件与用户之间的关联链的属性。文件用户链属性之例访问权限1+1+表示类间关系的图形符号47•限定一个受限的关联由两个对象及一个限定词组成。可以把限定词看作是一种特殊的链属性。目录文件文件名受限关联表示类间关系的图形符号48•消息连接反映了一个对象对另一个对象的处理依

赖性。发送者接收者表示消息连接的图形符号表示类间关系的图形符号49例1:一家公司的对象模型。该公司有许多部门,每个部门由一名经理管理,也有的经理不管理任何部门,每个部门生产多种产品,每种产品仅由一个部门生产

。公司有许多员工为之工作,员工分为工人和经理,每名工人可参加多个项目,每个项目需要多个工人参与,每位经理可主持多个项目,每个项目由一位经理主持。4.3对象模型例子50部门工人经理项目项目名预算优先级产品产品名成本重量员工姓名地址身份证号码工资公司名

字电话号码主要产品地址雇用解雇部门名职务参加1+主持管理0,1生产为之工作1+1+1+1+一家公司的对象模型对象模型例子515面向对象分析(OOA)•什么是面向对象分析?抽取和整理用户需求并建立问题域精确模型的过程。•面向对象分

析工作大体上按照下列顺序进行:(1)寻找类—&—对象(2)识别结构(3)定义属性(4)定义服务52OOA第一步:确定类—&—对象1、找出候选的类—&—对象有两种方法:(1)找出问题域中的五类事物作为候

选类—&—对象•可感知的物理实体,如书、汽车•人或组织的角色,如教师、雇员•应该记忆的事件,如演出、访问•两个或多个对象的相互作用,通常具有交易或接触的性质,如购买,结婚•需要说明的概念,如政策(2)将需求分析中的名词或名词短语作为候选者53

例1:各剧院的演出售票预订系统按第一种方法,得到候选的类-&-对象为:剧院、演出、票、预订、系统例2:按第二种方法,得到候选的类-&-对象为:公司、部门、经理、产品、员工、工人、项目面向对象分析542、筛选出正确的类—&—对象从候选的类—&—对象中去掉不正确或不必要的类—&—对象,主要遵

循下列原则:•冗余的:两个类名表示了相同的信息•无关的:•笼统的(模糊的):用精确的代替•属性:去掉无关的属性•操作:动词定义的操作是否作为类?如拨号•实现:分析阶段少或不考虑怎样实现目标系统面向对象分析OOA55OOA第二步:确定关联•两个或多个对象

之间的相互依赖、相互作用的关系就是关联。•关联关系的确定(1)抽取需求陈述中使用的描述性动词或动词词组(2)找到隐含的关联关系(3)补充一些必要的关联关系(4)去掉不正确或不必要的关联56例:例2得到类间的关系为:动词相关类关系有公司和部门间组合/

受限关联管理部门和经理0/1:1生产部门和产品1:N为之工作公司和员工1:N分为员工和工人ISA(泛化)员工和经理ISA(泛化)参加工人和项目N:N主持经理和项目1:N面向对象分析OOA57OOA第三步:确定属性•属性是对象的特性•属性的确定分析:需求陈述中的名词词组表示属

性,形容词作为确定属性的线索,如画一个红色的圆;选择:删去不正确和不必要的属性58OOA第四步:识别继承关系一般说来,可以使用两种方式建立继承关系:(1)自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思

维过程。(2)自顶向下:把现有类细化成更具体的子类,这模似了人类的演绎思维过程。如:头与眼、鼻、耳、嘴之间是组合关系人、男人、男孩是继承关系59OOA第五步:确定操作对象=数据+操作在确定类中应该有的服务时,既要考虑该类实体的常规行为,又要考虑为完成本系统功能所需要提供的操作

。606面向对象设计(OOD)•把分析阶段得到的需求转变成符合成本和质量要求的、抽象的程序实现方案的过程。•是一个逐渐扩充模型的过程。•在实际的软件开发过程中分析和设计的界限是模糊的,许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统

需求的理解,从而进一步完善分析结果。。61面向对象设计(OOD)OOD主要完成下述工作:1.建立类等级面向对象程序的一个突出优点来源于继承性。应该尽量抽取出相似类的公共属性和公共服务,以建立这些相似类的父类,并在类等级的适当层次中

正确地定义各个属性和服务。62面向对象设计(OOD)2.定义属性所谓定义属性就是要确定每个属性的数据类型和数据结构,同时还要确定每个属性的访问权限(通常被定义在保护部分或私有部分)。3.定义操作63面向对象的设计原则•模块化:对象就是模块。•抽象:类是一种抽象数据类型•信

息隐藏:信息隐藏通过对象的封装性实现•弱耦合•强内聚•可重用64•耦合:一个软件结构内不同模块之间互连的紧密程度。•弱耦合是优秀设计的一个重要标准。•在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密

程度。•对象之间的耦合可分为两大类:交互耦合、继承耦合。面向对象的设计原则--弱耦合65•交互耦合即对象之间的耦合通过消息连接来实现,交互耦合应尽量松散。遵循的原则:(1)尽量降低消息连接的复杂程度(参数个数和参数的复

杂度)(2)减少对象发送或接收的消息数•继承耦合是一般化类与特殊类之间耦合的一种形式。越紧密越好。面向对象的设计原则--弱耦合66面向对象的设计原则--强内聚•内聚衡量一个模块内各个元素彼此结合的紧密程度。•在设计时应该力求做到高内聚。•在面向对象设计中存在下述3种内聚:(1)服务内聚(2)类

内聚(3)一般—特殊内聚67面向对象的设计原则--可重用•软件重用是提高软件开发生产率和目标系统质量的重要途径。•重用有两方面的含义:(1)一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类)(2)二是如

果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。687面向对象实现•面向对象实现主要包括下述两项工作:1.把面向对象设计的结果翻译成用某种面向对象程序语言书写的面向对象程序。2.测试和调试编写出的面向对象

程序。•面向对象的语言:C++、Java等注:程序的质量主要由设计的质量决定,但是所选用的程序语言的特点对程序质量也有重要影响。(应该将大量的时间花在系统分析与设计上)69本章小结本章分析了面向过程的程序设计和面向对象的程序设计的不同,强调了面向对象程序

设计的特点和优点,面向对象的一些基本概念和简单的分析和设计。70思考思考题:•试比较面向过程的程序设计方法和面向对象程序设计方法的不同。•为什么说面向对象方法更接近人类习惯的思维方法?•类与函数的不同点?封装和继承的含义。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?