




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象的程序设计原理与技术1第一页,共七十页,编辑于2023年,星期五
课件存放位置2第二页,共七十页,编辑于2023年,星期五第一章面向过程与面向对象的程序设计本章的主要目的是理解面向过程的程序设计和面向对象的程序设计在本质上有什么不同。主要从以下几个方面来讲解:计算机的工作过程面向过程的程序设计面向对象的程序设计3第三页,共七十页,编辑于2023年,星期五计算机的工作过程例:计算圆面积。
s=3.14*r*r4第四页,共七十页,编辑于2023年,星期五输入设备程序原始数据内存储器原始数据运算器结果结果输出设备外存储器控制器计算机的工作过程—基本结构图程序5第五页,共七十页,编辑于2023年,星期五计算机的工作过程计算机在程序的控制下解题程序设计语言的发展经历了五代(前三代语言编写的程序本质上是相同的,都是按照机器的工作过程来编写,只不过程序的描述语句越来越接近人的思维,通用性越来越强)第一代为机器语言第二代为汇编语言第三代语言为高级语言第四代语言为面向对象的计算机语言第五代语言是按人工智能原理设计的语言6第六页,共七十页,编辑于2023年,星期五面向过程的程序设计下面用面向过程的语言解题标准C语言源程序#include<stdio.h>voidmain(){floatr,s;printf("Inputr:");scanf("%f",&r);s=3.14*r*r;printf("Theareais:%f\n",s);}7第七页,共七十页,编辑于2023年,星期五例1-1Page2例1-2Page38第八页,共七十页,编辑于2023年,星期五面向过程的程序设计人模拟计算机思维来解题(输入-运算-输出)程序设计工作主要围绕解题过程的设计程序功能隐含在程序代码中—理解困难维护(修改)困难9第九页,共七十页,编辑于2023年,星期五面向过程的程序设计在长期的软件开发实践中,人们总结出了一些设计原理和系统化的方法,包括:模块化:如函数抽象:忽略事物间的差异,集中和概括共性的方面,例如复杂问题抽象为用较自然的语句来表示;自顶向下的程序设计方法就是一个从抽象到具体的过程。10第十页,共七十页,编辑于2023年,星期五面向过程的程序设计信息隐藏:如局部变量模块独立:高内聚和松耦合内聚:内部元素间结合的紧密程度;耦合:模块间互相依赖的紧密程度。结构程序设计:自顶向下逐步求精的设计方法、单入口单出口的控制结构一句话:功能分解或算法分解11第十一页,共七十页,编辑于2023年,星期五面向对象的程序设计人类习惯的解决问题的方法:“顾客--服务员”的工作模式。例:去理发馆理发面向对象的方法模拟人类习惯的解题方法,用对象分解取代功能分解,程序中的所有对象分工协作,共同完成整个程序的功能。12第十二页,共七十页,编辑于2023年,星期五面向对象的程序设计面向对象方法的四个要点:(1)面向对象的软件系统由对象组成;(2)所有的对象划分为对象类,每个类由数据和方法组成;(3)若干个类按照子类(派生类)与父类(基类)的关系组成了层次结构;--继承,如汽车与交通工具;(4)对象之间通过传递消息互相联系。OO=对象+类+继承+消息
13第十三页,共七十页,编辑于2023年,星期五面向对象的程序设计面向对象方法的优点(1)与人的思维习惯一致(2)稳定性好(3)可重用性好(4)可维护性好
14第十四页,共七十页,编辑于2023年,星期五例1-3Page6
15第十五页,共七十页,编辑于2023年,星期五1对象对象相当于现实世界中的实体对象=属性+方法数据操作内部操作1内部操作2数据公有操作1公有操作216第十六页,共七十页,编辑于2023年,星期五对象的定义对象是一个封装体,封装了数据结构及可以施加在这些数据结构上的操作。对象有对象名;对象中的数据表示对象的状态,一个对象的状态只能由该对象本身的操作来改变。对象向外界提供一组服务(即公有的操作),称为与外界的接口。对象17第十七页,共七十页,编辑于2023年,星期五对象的特点:以数据为中心对象是主动的实现了数据封装本质上具有并行性模块独立性好对象18第十八页,共七十页,编辑于2023年,星期五2其他面向对象的概念类(Class)是对具有相同数据属性和相同操作的一个或一组(集合)相似对象的描述,是一个抽象的概念。类与函数的不同:
类封装了函数与数据是对问题的抽象描述
函数封装了语句与数据完成特定的功能例:大小不同、位置不一和颜色不同的圆,可以定义为一个Circle类。例:中国人19第十九页,共七十页,编辑于2023年,星期五实例(Instance)是由某个特定的类所描述的一个具体的对象。“对象”这个术语,既可以指一个具体的对象,也可以泛指一般的对象,“实例”这个术语,必然是指一个具体的对象。
C++中,要定义一个对象或实例,必须先建立一个这类对象的类。基本概念20第二十页,共七十页,编辑于2023年,星期五属性(Attribute)类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。例:圆类(半径、位置、颜色)在C++语言中把属性称为数据成员。基本概念21第二十一页,共七十页,编辑于2023年,星期五方法(Method)对象所能执行的操作,它应用于类或被类中对象使用。在C++中称为成员函数。通常,一个函数对应一个操作,实现一个功能。例:圆对象响应显示圆的消息在Circle类中必须定义能够显示这个圆的方法,即编写成员函数Show(intcolor)。基本概念22第二十二页,共七十页,编辑于2023年,星期五消息(Message)对象之间相互请求相互协作的途径一个消息由下述三部分组成:(1)接收消息的对象;(2)消息选择符(也称为消息名);(3)零个或多个变元。例如:MyCircle.Show(GREEN)
;其中:
MyCircle是接收消息的对象的名字
Show是消息选择符(即消息名)
GREEN是消息的变元。基本概念23第二十三页,共七十页,编辑于2023年,星期五封装性(Encapsulation)封装即把数据和实现操作的代码集中起来放在对象内部,外界通过对象提供的接口来使用它,不需知道内部数据结构细节和实现操作的算法。实现封装的条件:(1)有一个清楚的边界(2)有确定的接口(用于接受用户发送的消息)(3)受保护的内部实现封装的好处就是实现了信息隐藏,把对象的实现细节对外界隐藏起来了,提高安全性。在C++中,通过定义类来实现封装。基本概念24第二十四页,共七十页,编辑于2023年,星期五继承(Inheritance)
指能够直接获得已有的性质和特征,而不必重复定义它们。是子类自动地共享基类中定义的数据和方法的机制。例:家族关系继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。一个类除了具有该类所描述的性质外,还具有该类上层全部基类描述的一切性质。基本概念25第二十五页,共七十页,编辑于2023年,星期五多态性(Polymorphism)
在类等级的不同层次中,相同的消息,被不同类的对象接收,产生了不同的行为。例:“打”好处:增加软件系统的灵活性,减少了信息冗余,提高了软件的可重用性和可扩充性。在C++语言中,多态性是通过虚函数来实现的。(动态联编)基本概念26第二十六页,共七十页,编辑于2023年,星期五重载(Overloading)
有两种重载:
函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;例:
运算符重载是指同一个运算符可以施加于不同类型的操作数上面。
例:cout<<“2”;表示向屏幕输出字符串2x<<2;表示将x中的二进制左移2位基本概念27第二十七页,共七十页,编辑于2023年,星期五在C++语言中函数重载是通过静态联编实现的,也就是在编译时根据函数变元的个数和类型,决定到底使用函数的哪个实现代码;对于重载的运算符,在编译时根据被操作数的类型,决定使用该算符的哪种语义。
基本概念28第二十八页,共七十页,编辑于2023年,星期五3面向对象建模什么是模型使用模型的好处三种模型模型的表示29第二十九页,共七十页,编辑于2023年,星期五面向对象建模为什么要建模?完全、彻底地理解问题什么是模型?对事物的一种抽象,由一组图示符号和组织这些符号的规则组成。目的:理解事物。如下图:30第三十页,共七十页,编辑于2023年,星期五面向对象建模31第三十一页,共七十页,编辑于2023年,星期五面向对象建模用面向对象方法开发软件,通常要建立三种形式的模型:
对象模型:描述系统数据结构
动态模型:描述系统控制结构
功能模型:描述系统功能32第三十二页,共七十页,编辑于2023年,星期五4对象模型对象模型表示系统的静态结构,描述了对象、对象间的关系。建立对象模型用到的图形符号:(1)表示类的符号(包括属性和服务)(2)表示类实例的符号(3)表示类间关系的符号33第三十三页,共七十页,编辑于2023年,星期五4.1表示类—&—对象的图形符号(p12)类—&—对象:含义是“一个类及属于该类的对象”
34第三十四页,共七十页,编辑于2023年,星期五例:计算圆的面积。表示类—&—对象的图形符号圆圆的半径计算圆面积显示圆面积圆圆的半径计算圆面积显示圆面积35第三十五页,共七十页,编辑于2023年,星期五类的命名规则类名应富有描述性、简洁且无二义性,命名时应该遵守以下几条准则:
(1)使用标准术语
(2)使用具有确切含义的名词
(3)必要时用名词短语作名字:如公司员工表示类—&—对象的图形符号36第三十六页,共七十页,编辑于2023年,星期五4.2表示类间关系的符号类间、对象间的关系可以概括为泛化关系、组合关系及关联关系三种关系
1.泛化关系:“是一种”(ISA)“一般─特殊”关系,反映了一个类与若干个互不相容的子类之间的分类关系。高层类(即基类或超类)说明一般(公共)的属性,低层类(即派生类或子类)说明特殊属性。37第三十七页,共七十页,编辑于2023年,星期五半圆形表明泛化关系的方向:从半圆弧中点引出的直线指到一般化的类。表示归纳关系的图形符号38第三十八页,共七十页,编辑于2023年,星期五例:表示泛化关系的图形符号图形颜色中心位置笔粗细笔类型移动(move)选择(select)旋转(rotate)显示(display)0维1维定位放大2维定位填充类型放大填充点显示线终点显示弧半径开始角弧角显示多边形边数顶点显示圆直径显示旋转39第三十九页,共七十页,编辑于2023年,星期五2.组合关系组合关系就是“整体─部分”关系,它反映了对象之间的构成关系。组合关系也称为聚集关系。在C++语言中,通常是在一个类中包含另一个类的对象成员来实现这种关系。类间关系40第四十页,共七十页,编辑于2023年,星期五上部:整体对象下部:部分对象标值:该端对象的数量(省略为1)三角形:组合关系的方向(从三角形顶角引出的线指向整体对象,从三角形底边中点画出的线连到部分对象)表示组合关系的图形符号41第四十一页,共七十页,编辑于2023年,星期五例:表示组合关系的图形符号教材封面前言目录章习题节1,n42第四十二页,共七十页,编辑于2023年,星期五3.关联关系
关联关系反映对象之间相互依赖、相互作用的关系。通常把两类对象之间的二元关系再细分为一对一(1:1)、一对多(1:M)和多对多(M:N)等三种基本类型。类间关系43第四十三页,共七十页,编辑于2023年,星期五二元关联的5个要素:连线:连线端点所在的位置表明,这是对象(而不是类)之间的映射关系。类间关系-关联关系教师书1+44第四十四页,共七十页,编辑于2023年,星期五阶参与关联的对象的个数。阶用标在连线端点的单个数字或数值区间表示。例如,“1+”(一个或多个),“3,5”(3至5)等。表示类间关系的图形符号45第四十五页,共七十页,编辑于2023年,星期五链属性
链属性就是关联链的性质。例如,计算机中每个用户对不同文件拥有不同的访问权限,访问权限就是文件与用户之间的关联链的属性。表示类间关系的图形符号46第四十六页,共七十页,编辑于2023年,星期五限定一个受限的关联由两个对象及一个限定词组成。可以把限定词看作是一种特殊的链属性。表示类间关系的图形符号47第四十七页,共七十页,编辑于2023年,星期五消息连接反映了一个对象对另一个对象的处理依赖性。表示类间关系的图形符号48第四十八页,共七十页,编辑于2023年,星期五例1:一家公司的对象模型。该公司有许多部门,每个部门由一名经理管理,也有的经理不管理任何部门,每个部门生产多种产品,每种产品仅由一个部门生产。公司有许多员工为之工作,员工分为工人和经理,每名工人可参加多个项目,每个项目需要多个工人参与,每位经理可主持多个项目,每个项目由一位经理主持。4.3对象模型例子49第四十九页,共七十页,编辑于2023年,星期五对象模型例子50第五十页,共七十页,编辑于2023年,星期五5面向对象分析(OOA)什么是面向对象分析?抽取和整理用户需求并建立问题域精确模型的过程。面向对象分析工作大体上按照下列顺序进行:
(1)寻找类—&—对象
(2)识别结构
(3)定义属性
(4)定义服务51第五十一页,共七十页,编辑于2023年,星期五OOA第一步:确定类—&—对象1、找出候选的类—&—对象有两种方法:(1)找出问题域中的五类事物作为候选类—&—对象可感知的物理实体,如书、汽车人或组织的角色,如教师、雇员应该记忆的事件,如演出、访问两个或多个对象的相互作用,通常具有交易或接触的性质,如购买,结婚需要说明的概念,如政策(2)将需求分析中的名词或名词短语作为候选者52第五十二页,共七十页,编辑于2023年,星期五例1:各剧院的演出售票预订系统按第一种方法,得到候选的类-&-对象为:剧院、演出、票、预订、系统例2:按第二种方法,得到候选的类-&-对象为:公司、部门、经理、产品、员工、工人、项目面向对象分析53第五十三页,共七十页,编辑于2023年,星期五2、筛选出正确的类—&—对象从候选的类—&—对象中去掉不正确或不必要的类—&—对象,主要遵循下列原则:冗余的:两个类名表示了相同的信息无关的:笼统的(模糊的):用精确的代替属性:去掉无关的属性操作:动词定义的操作是否作为类?如拨号实现:分析阶段少或不考虑怎样实现目标系统面向对象分析OOA54第五十四页,共七十页,编辑于2023年,星期五OOA第二步:确定关联两个或多个对象之间的相互依赖、相互作用的关系就是关联。关联关系的确定(1)抽取需求陈述中使用的描述性动词或动词词组(2)找到隐含的关联关系(3)补充一些必要的关联关系(4)去掉不正确或不必要的关联55第五十五页,共七十页,编辑于2023年,星期五例:例2得到类间的关系为:动词相关类关系有公司和部门间组合/受限关联管理部门和经理0/1:1
生产部门和产品1:N
为之工作公司和员工1:N
分为员工和工人ISA(泛化)员工和经理ISA(泛化)参加工人和项目N:N
主持经理和项目1:N面向对象分析OOA56第五十六页,共七十页,编辑于2023年,星期五OOA第三步:确定属性属性是对象的特性属性的确定分析:需求陈述中的名词词组表示属性,形容词作为确定属性的线索,如画一个红色的圆;选择:删去不正确和不必要的属性57第五十七页,共七十页,编辑于2023年,星期五OOA第四步:识别继承关系一般说来,可以使用两种方式建立继承关系:(1)自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。(2)自顶向下:把现有类细化成更具体的子类,这模似了人类的演绎思维过程。如:头与眼、鼻、耳、嘴之间是组合关系人、男人、男孩是继承关系58第五十八页,共七十页,编辑于2023年,星期五OOA第五步:确定操作对象=数据+操作在确定类中应该有的服务时,既要考虑该类实体的常规行为,又要考虑为完成本系统功能所需要提供的操作。59第五十九页,共七十页,编辑于2023年,星期五6面向对象设计(OOD)把分析阶段得到的需求转变成符合成本和质量要求的、抽象的程序实现方案的过程。是一个逐渐扩充模型的过程。在实际的软件开发过程中分析和设计的界限是模糊的,许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。。60第六十页,共七十页,编辑于2023年,星期五面向对象设计(OOD)OOD主要完成下述工作:1.建立类等级面向对象程序的一个突出优点来源于继承性。应该尽量抽取出相似类的公共属性和公共服务,以建立这些相似类的父类,并在类等级的适当层次中正确地定义各个属性和服务。61第六十一页,共七十页,编辑于2023年,星期五面向对象设计(OOD)2.定义属性所谓定义属性就是要确定每个属性的数据类型和数据结构,同时还要确定每个属性的访问权限(通常被定义在保护部分或私有部分)。3.定义操作
62第六十二页,共七十页,编辑于2023年,星期五面向对象的设计原则模块化:对象就是模块。抽象:类是一种抽象数据类型信息隐藏:信息隐藏通过对象的封装性实现弱耦合强内聚可重用63第六十三页,共七十页,编辑于2023年,星期五耦合:一个软件结构内不同模块之间互连的紧密程度。弱耦合是优秀设计的一个重要标准。在面向对象方法中,对象是最基本的模块,因此,耦合主要指不同对象之间相互关联的紧密程度。对象之间的耦
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风险管理与评估试题及答案
- 《世界古代建筑欣赏:大二艺术史教学教案》
- 《太阳系八大行星的特点:四年级地理教学教案》
- 新员工入职流程及操作系统使用指南
- 产品分销与代理业务合作协议内容
- 《走进物理世界:高一物理实验课程教案》
- 乡村旅游农业开发方案
- 年度市场活动策划与执行报告
- 公司采购协议附件书
- 采购居间合同例文
- 2025年三八妇女节校长致辞-以柔韧破万钧以丹心育桃李
- 《骑鹅旅行记》名著阅读读课件
- 2025年浙江省建筑安全员C证考试(专职安全员)题库及答案
- 2025年健身教练合同协议样本
- 2025年湖南商务职业技术学院单招职业技能测试题库必考题
- 中储粮黑龙江分公司招聘考试试卷2023
- 化学实验室安全职责分配
- 9 枫树上的喜鹊 【知识精研】语文二年级下册 统编版
- 2025年哈尔滨铁道职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 旅游景区旅游安全风险评估报告
- YB/T 6328-2024 冶金工业建构筑物安全运维技术规范(正式版)
评论
0/150
提交评论