第10章-面向对象设计PPT课件
软件工程导论第10章面向对象分析
![软件工程导论第10章面向对象分析](https://img.taocdn.com/s3/m/dc81f100c950ad02de80d4d8d15abe23482f033a.png)
易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。
第十章 C++ 基础
![第十章 C++ 基础](https://img.taocdn.com/s3/m/e4a640da195f312b3169a5c2.png)
华厦职业学院
C语言程序设计
其中public是成员的属性说明,表示公有成员, 类的成员还可以声明为private(私有成员)或 protected(保护成员),不同属性的成员在访问时 规则不同。 类定义好之后,可以像结构那样定义变量,方 法是: 类的名称 变量名称;
华厦职业学院
C语言程序设计
在C++中类定义的变量称为对象(object),在定 义对象时,也可以用类名来定义类变量的指针,注 意在使用时类名称之前不写class。例如: time t; // t是类time的一个对象; time *pt; // pt是一个指向类对象的指针
华厦职业学院
C语言程序设计
关于成员函数,有以下规则: (1) 成员函数是类的函数,不能独立执行,必须要 用一个对象或对象指针来调用执行,什么对象调用 成员函数,成员函数就作用于什么对象,既成员函 数的执行结果依赖于具体的对象; (2) 成员函数中可以存取同一个类中的成员变量, 这些成员变量就是相应对象的成员变量;成员函数 也可以调用同一个类中的其它成员函计
10.3
构造函数与析构函数
10.3.1 构造函数 用类来定义对象变量时,往往需要让对象有一个初始值, 完成这种功能的函数就是构造函数。构造函数是与类同名的 函数,但函数没有任何返回类型,也不是void类型,例如: class time { public: int h,m,s; time() { h=0; m=0; s=0; } void set(int th,int tm,int ts) { h=th; m=tm; s=ts; } void show(); };
华厦职业学院
C语言程序设计
10.1 类与对象 10.2 this指针 10.3 构造函数与析构函数 10.4 引用与复制构造函数 10.5 动态内存分配 10.6 类成员的访问规则 10.7 对象的赋值 10.8 运算符重载
计算机科学与技术专业课课件_软件工程SE_Chapter10
![计算机科学与技术专业课课件_软件工程SE_Chapter10](https://img.taocdn.com/s3/m/9367e62add36a32d737581e6.png)
拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过 ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取 款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将 来可能还要求使用ATM办理转账、存款等事务。
2013-8-31
上海大学计算机学院
7
ATM系统的需求陈述
择事务类型(取款、查询等)。当用户选择取款时,ATM请求用户输 入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用 户。
2013-8-31
上海大学计算机学院
8
建立对象模型
◆面向对象分析首要的工作,是建立问题域的对象 模型。 ◆对象模型描述了现实世界中的“类-&-对象”以 及它们之间的关系,表示了目标系统的静态数据 结构。
上海大学计算机学院
12
候选类—&—对象
银行,自动取款机(ATM),系统,中央计算机,分行计算机, 柜员终端,网络,总行,市,街道,分行,营业厅,储蓄所, 软件,成本,柜员,储户,现金,支票, 账户, 事务,现金兑 换卡,余额,磁卡,分行代码,卡号,副本,访问,用户,信息, 密码,类型,取款额,账单。
●找出所有候选的类-&-对象; ●筛选候选的类-&-对象。
2013-8-31
上海大学计算机学院
11
找出候选的类-&-对象
◆ 非正式分析方法
● 以用自然语言书写的需求陈述为依据,把陈述中的
1) 名词作为类-&-对象的候选者, 2) 形容词作为确定属性的线索, 3) 动词作为服务(操作)的候选者。
2013-8-31
去除冗余
银行,ATM,中央计算机,分行计算机,柜员终端,网络,总行, 市,街道,分行,营业厅,储蓄所,软件,成本,柜员,储户,现 金,支票, 账户,事务,现金兑换卡,余额,分行代码,卡号, 访问,信息, 密码,类型,取款额,账单,通信链路,事务 日志。
第10章 C++语言的输入与输出-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社
![第10章 C++语言的输入与输出-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社](https://img.taocdn.com/s3/m/de520fee5a8102d277a22f17.png)
设置状态标志flags 清楚状态标志,并返回前状态标志 测试状态标志 设置标志flags, 并返回前状态标志 返回当前的宽度设置值 设置域宽w,返回以前的设置 设置小数位数p,返回以前的小数位数 返回当前的填充字符 设置填充字符ch,返回当前的填充字符
13
下面分别介绍这些成员函数的使用方法;
(1)设置状态标志:
cout<<”x_width=”<<cout.width( )<<endl; cout<<”x_fill=”<<cout.fill ( )<<endl; cout<<”x_precision=”<<cout.precision( )<<endl; cout<<123<<” ”<<123.45678<<endl; cout<<”______________________________\n”; cout<<”*** x_width=10,x_fill=, x_precision=4 ***\n”; cout.width(10); cout.precision(4); cout<<123<<” ”<<123.45678<<” ”<<234.567<<endl;
1. C++的流概述 ❖ 在C++中,输入输出流被定义为类,称为流类。 ❖ I/O 系 统 仍 然 是 以 字 节 流 的 形 式 实 现 的 , 流
(Stream)实际上就是一个字节序列,流总是 与某一设备相联系的,它既可以从输入设备 (如键盘、磁盘等)流向计算机内存,亦可以 从计算机内存流向输出设备(如显示器、打印 机、磁盘等)。 ❖ 输入输出的字节可以是ASCII字符、内部格式 的原始数据、图形图像、数字音频、视频等。
vfp6.0课件
![vfp6.0课件](https://img.taocdn.com/s3/m/1d264b62366baf1ffc4ffe4733687e21ae45ff14.png)
2) 数组 当前记录
GATHER FROM <数组> [ FIELDS <字段名> ]
演示操作
Visual FoxPro 6.0 第二章
第一节 VFP6.0数据
返回目录
数据类型: 常量: 算术运算符:+, , *, / , %, ^(**) 变量: 字符(日期)运算符: +, 运算符: 函数: 关系运算符:<,<=,>,>=,=,= =,<>,$ 表达式: 逻辑运算符:not(!) and or
第一节 数据库简介
返回目录
信息: 数据: 数据处理: 数据库: 数据库管理系统: 数据库系统:
数据库系统 是对数据
库统一管理的计算机硬件和 软件资源的统称。具体由五 部分组成:数据库(数据)、 数据库管理系统(软件)、数 据库管理员(人员)、硬件平 台和软件平台。
Visual FoxPro 6.0 第一章
第一节 VFP6.0数据
返回目录
数据类型: 常量: 变量: 运算符: 函数: 表达式:
变量 是在命令和程序运行过
程中允许变化的量。变量有内存 变量和字段变量两类。变量要先 定义后才能使用。字段变量和内 存变量可以同名,系统默认的是 字段变量优先,要用内存变量需 在变量名前加M.或M->。
第一节 数据库简介
返回目录
信息: 数据: 数据处理: 数统的特点: 实现数据共享,减少数据冗余 采用特定的数据模型 数据独立性 数据统一管理与控制
Visual FoxPro 6.0 第一章
第二节 关系数据库
返回目录
北航程序设计语言原理教材第10章
![北航程序设计语言原理教材第10章](https://img.taocdn.com/s3/m/967ef1eff8c75fbfc77db261.png)
第10章面向对象程序设计语言当今席卷软件界的面向对象技术,近因是xerox公司1980年推出的Smalltalk-80语言。
当时,美国国防部正在推行投资五亿历时8年的Ada,试图先在军中统一再推广到全行业,使之成为软件开发的主导语言。
Ada是过程语言的新阶段,提供数据封装、数据抽象机制、并发、异常处理; 良好的易读性使Ada源代码能自成文档; 分别编译支持软件叠加和重用; 强类型增加软件的可靠性; Ada率先提出Ada程序设计支持环境APSE,把与机器相关的机制作为预定义环境(包括基本类型和输入/出机制),从而支持可移植性,能较好的满足软件工程可靠、易维护、可移植、可重用的目标。
但是,由于Ada太大(编译及环境当时的微机放不下),统得过死(廉价编译和环境推出太晚,一定要通过ACVC测试才能得到AJPO承认),且其本身反映了70年代末80年代初软件工程思想:严格管理和评审,导致软件开发周期难于缩短,费用依然居高不下。
80年代软件工程推行并不顺畅,一些民间开发小系统的制售商急于寻求新路。
Smaltalk-80带来的面对象思想为软件技术发展带来了生机。
于是,80年代中期出现了一批OO语言,几乎所有老语言都作了面向对象改造。
不仅如此,数据库、分布式协作计算、多媒体技术、软件工程工具的集成,甚至计算机硬件都采用OO技术。
OO软件开发方法学改变了传统软件开发模式。
90年代OO技术为各大公司、各种高技术软件接受,并走向工业化、规范化、主流化的途径,其影响至今尚无消减迹象。
学习面向对象语言和技术,最正宗、最有效当从Smalltalk语言开始。
我们首先接受它原有的新范型,与传统过程—模块式大不相同的软件构建思路,再去观察各种技术如何引入、结合OO技术,就会清晰得多。
本章第一、二节介绍原理和实现技术;第三节总结面向对象的基本特征及对应的代表语言;第四、五节分别介绍两个重要的面向对象语言Ada95和Eiffel.10.1 Smalltalk语言对象的思想最早源于人工智能研究,60年代末描述智能对象的帧(frame)即封装了许多槽(slot),槽既可以是属性(数据)也可以是行为(操作)和约束。
软件工程 第10章 面向对象的方法
![软件工程 第10章 面向对象的方法](https://img.taocdn.com/s3/m/946efe31eefdc8d376ee324a.png)
第10章例题分析与解答作者:不详来源:2006年9月4日发表评论进入社区一、填空题1.面向对象方法认为系统是由应用域的___对象___组成。
2.对象具有状态,描述对象的状态用它的_属性值_____。
3.对象的抽象是_类_____。
4.类之间有两种结构关系,它们是分类关系和__组装____关系。
5.面向对象程序设计语言与其他程序设计语言的最主要差别是它具有_继承性_____。
6.动态模型描述了系统的__动态行为____。
二、选择题1.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( D)关系。
A.组装B.整体成员C.has aD.一般具体2.面向对象分析阶段建立的三个模型中,核心的模型是( C )模型。
A.功能B.动态C.对象D.分析3.对象模型的描述工具是( C)。
A.状态图B.数据流图C.对象图D.结构图4.在有多重继承的类层次结构中,它的类层次结构是(B )层次结构。
A.树型B.网状型C.环型D.星型5.描述类中对象的行为,反映了状态与事件关系的是( B )。
A.对象图B.状态图C.流程图D.结构图6.在确定属性时,所有( C)是候选的属性。
A.动词B.名词C.修饰性名词词组D.词组三、应用题1.建立窗口系统的对象模型。
问题陈述如下:窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项、正文项三种,选择项中有若干对话项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。
2.在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种查询的交互行为。
答案:一、填空题1.对象2.属性值3.类4.组装5.继承性6.动态行为二、选择题1.D2.C3.C4.B5.B6.C三、应用题1.2.第10章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.对象2.类3.属性4.操作5.消息6.消息传递7.方法8.关系9.关联10.一般具体关系 11.整体部分关系12.继承13.单重继承 14.多重继承15.多态性 16.角色17.受限关联 18.封装19.对象模型20.动态模型21.功能模型 22.事件23.状态24.事件追踪25.状态图26.动作27.活动28.处理29.数据流30.动作对象31.数据存储对象 32.重用性二、填空题1.对象具有封装性,实现了__数据与操作____的结合。
张海藩《软件工程导论》(第6版)(课后习题 第10章 面向对象分析)【圣才出品】
![张海藩《软件工程导论》(第6版)(课后习题 第10章 面向对象分析)【圣才出品】](https://img.taocdn.com/s3/m/1edb3086a5e9856a57126080.png)
第10章面向对象分析1.用面向对象方法分析研究本书第2章第2题中描述的储蓄系统,试建立它的对象模型、动态模型和功能模型。
答:(1)对象模型储蓄系统的对象模型,如图10-2所示。
图10-2储蓄系统的对象模型(2)动态模型①编写脚本a.正常情况脚本第一,储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;第二,业务员查收存款,审核存款与存款单存款金额吻合;第三,存款单生效;第四,储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;第五,业务员审核存款,验证储户身份,确定储户存款金额>=取款金额;第六,审核通过,取款单生效;第七,系统打印利息清单,业务员把本金和利息返回储户。
b.异常情况脚本第一,储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;第二,业务员查收存款,审核存款与存款单存款金额不符;第三,存款单作废;第四,储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;第五,业务员审核存款,验证储户身份,发现储户存款金额<=取款金额;第六,取款单作废。
②事件追踪图储蓄系统的事件追踪图,如图10-3所示。
图10-3储蓄系统的事件追踪图(3)功能模型储蓄系统的数据库流图,如图10-4所示。
图10-4储蓄系统的数据库流图2.用面向对象方法分析研究本书习题2第3题中描述的机票预订系统,试建立它的对象模型、动态模型和功能模型。
答:略。
3.用面向对象方法分析研究本书习题2第4题中描述的患者监护系统,试建立它的对象模型、动态模型和功能模型。
答:略。
4.下面是自动售货机系统的需求陈述,试建立它的对象模型、动态模型和功能模型:自动售货机系统是一种无人售货系统。
售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。
有效的硬币是一元币、五角币、一角币、五分币、二分币和一分币。
其他货币都被认为是假币。
机器拒绝接收假币,并将其从退币孔退出。
第10章面向对象数据库-PPT精选文档
![第10章面向对象数据库-PPT精选文档](https://img.taocdn.com/s3/m/f2e4cd5a02768e9950e73817.png)
Ô Ï ¶ ó B
ô Ð Ê Ô 1 ¡ ¡ ô Ð Ê Ô r ½ · · ¨1 ¡ ¡ ½ · · ¨s
14
10.1 对象与类
10.1.3 类
类(Class)是对具有共同属性和方法的对象全体的 概括描述,它相当于关系模型中的关系模式。类给出 了属于其全部对象属性与行为的抽象定义,类中对象 仅是类定义中的一个实体,即对象实例。学生是一个 类,一个具体学生,例如John就是学生类中一个对象 实例。与关系模型需要首先描述关系模式类似,对象 模型也首先需要抽象描述具有共同属性的对象的类, 按照类来定义属性和方法,从而避免对每个对象一一 重复定义。查询操作等方法也定义在类上。
6
10.1 对象与类
10.1.1 对象
对象具有封装性、隐蔽性与稳定性等重要特性。 (1)封装性 封装(encapsulation)是使对象的外 部界面与内部实现之间实行清晰隔离的一种技术,是 OO模型的主要特征之一。封装使得用户只能看到对 象外在的界面信息(正如规格说明等),而看不到对 象内部的信息(如方法实现细节),对象内部信息对 于用户是屏蔽的。封装的意义首先在于安全性保证, 其次在于相关模块的可扩展性。
12
10.1 对象与类
10.1.2 消息
例 设一个对象A要求对象B完成其中的某种操作,则 只需向对象B发送一个消息即可。B接收到这个消息后, 根据消息模式找到与之匹配的方法,执行该方法后将 执行的结果又以消息的形式发送给对象A。
13
10.1 对象与类
10.1.2 消息
Ô Ï ¶ ó A
ô Ð Ê Ô 1 ¡ ¡ ô Ð Ê Ô n ½ · · ¨1 ¡ ¡ ½ · · ¨m á ¹ ½ û Ï û Ï ¢ ÷Ó µ Ã Ï û Ï ¢
第10章 动态网页设计语言PPT课件
![第10章 动态网页设计语言PPT课件](https://img.taocdn.com/s3/m/a58c1e2469eae009581bece1.png)
第10章 动态网页设计语言——C#
动态网页设计教程——美工与技术
1 10.1 C#语言简介 2 10.2 C#数据类型 3 10.3 常量和变量
4 10.4 运算符与表达式 5 10.5 程序流程控制 2 10.6 错误与异常处理
C机om械p工an业y出L版og社o
10.1 C#语言简介
动态网页设计教程——美工与技术
❖ 在Visual Studio 2008中,提供了网站设计 的编程语言C#,C#是.NET框架开发的核心语言,能 将.NET框架的各种优点充分发挥出来。
C机om械p工an业y出L版og社o
10.1.1 语句
动态网页设计教程——美工与技术
❖ 打开Visual Studio 2008,选择菜单“文件|新建|网站”,选择 模板为网站,位置为文件系统,存储位置为D:\myaspnet2,语言为Visual C#,如图所示。单击确定按钮,Visual Studio 2008自动打开Default.aspx文件,界面如图所示。
C机om械p工an业y出L版og社o
using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;
第10章---面向对象分析
![第10章---面向对象分析](https://img.taocdn.com/s3/m/2ba54d7f7fd5360cba1adb16.png)
(2) 与问题无关的或应在实现阶段考虑的关联
• 如: “系统处理并发的访问”
(3) 瞬时事件
• 关联应该描述问题域的静态结构,而不应该是一个瞬时事 件。 • 如: “ATM读现金兑换卡”
确定关联
(4) 三元关联
三个或三个以上对象之间的关联,大多可以 分解为二元关联或用词组描述成限定的关联。
• “柜员输入针对账户的事务”可以分解成“柜员 输入事务”和“事务修改账户”这样两个二元关 联。 • “ATM与中央计算机交换关于事务的信息” , 隐含了“ATM与中央计算机通信”和“在ATM上 输入事务”这两个二元关联。
一个事务包含对账户的若干次更新, 如(取 款、存款或查询)。
3. 把“分行”与“分行计算机”合并 参见图10.6(见书238页)
第十章面向对象分析
10.1 10.2 10.3 10.4 10.5 10.6 面向对象分析的基本过程 需求陈述 建立对象模型 建立动态模型 建立功能模型 定义服务
建立动态模型
确定类与对象
(3) 笼统
如“银行”、“网络”、“系统”、“软件”、 “信息”、“访问”等
(4) 属性
如:“现金”、“支票”、“取款额”、“账单”、 “余额”、“分行代码”、“卡号”、“密码”、 “类型”等
(5) 操作
本身具有属性需独立存在的操作,应该作为类与对 象。
(6) 实现
如:“事务日志”, “通信链路”
确定类与对象
2. 筛选出正确的类与对象
筛选标准
• (1) 冗余-----两个类表达了同样的信息 • (2) 无关--仅需要把与本问题密切相关的类与 对象放进目标系统中。 • (3) 笼统 • (4) 属性--有些名词实际上描述的是其他对象 的属性。 • (5) 操作--有时可能使用一些既可作为名词, 又可作为动词的词 • (6) 实现--不应该过早地考虑怎样实现目标系 统
xcl第10章 面向对象分析
![xcl第10章 面向对象分析](https://img.taocdn.com/s3/m/ceec55303968011ca30091da.png)
解决运算量很大的问题(例如,高级语言编译、 科学与工程计算等),则涉及重要的功能模型; 动态模型和功能模型中都包含了对象模型中的 操作(即服务或方法)。 复杂问题(大型系统)的对象模型由下述五个层 次组成:主题层(也称为范畴层)、类-&-对象层、 结构层、属性层和服务层。 主题是指导读者(包括系统分析员、软件设计 人员、领域专家、管理人员、用户等,总之, “读者” 指所有需要读懂系统模型的人)理解大型、 复杂模型的一种机制。
b. 人或组织的角色,例如,医生、计算机系、 财务处等等。 c. 应该记忆的事件,例如,飞行、演出、访问、 交通事故等等。
17
d. 两个或多个对象的相互作用,通常具有交易或 接触的性质,例如,购买、纳税等等。
e. 需要说明的概念,例如,政策、保险政策、版 权法等等。 非正式分析方法:用自然语言书写的需求陈述 为依据,把陈述中的名词作为类-&-对象的候 选者,用形容词作为确定属性,把动词作为服务 (操作)的候选者。这种方法确定的候选者是非常 不准确的。
第十章 面向对象分析
一、面向对象分析的基本过程 二、需求陈述 三、建立对象模式型 四、建立动态模型 五、建立功能模型 六、定义服务
1
面向对象分析(OOA)的关键,是识别出问题 域内的对象,并分析它们相互间的关系,最终建立 起问题域的简洁、精确、可理解的正确模型。 对象模型是最基本、最重要、最核心的。
一、面向对象分析的基本过程
1、基本过程的概述
面向对象分析,就是抽取和整理用户需求 并建立问题域精确模型的过程。
2
面向对象分析过程: (1) 用户需求陈述。可能由 用户单方面写出需求陈述,也可能由系统分析员配 合用户,共同写出需求陈述。需求陈述通常是不完 整、不准确的,而且往往是非正式的。
精品文档-软件技术基础(鲍有文)-第10章
![精品文档-软件技术基础(鲍有文)-第10章](https://img.taocdn.com/s3/m/2ed0a03e6294dd88d0d26bdd.png)
第10章 面向对象软件工程
2) 建立对象之间的联系 各个对象在系统中并非独立存在,只有定义和描述了对象 类之间的关系,各个对象类才能构成一个完整的系统模型。 对象模型图中,对象及类间的关系主要有4种:一般/特殊 关系、整体/部分关系、实例关联和消息连接。
第10章 面向对象软件工程 (1) 一般/特殊关系。识别类之间的一般/特殊关系要考虑
第10章 面向对象软件工程
把众多的事物归纳并划分为不同的类是人类在认识客观世 界时经常采用的思维方法,分类的原则是抽象,从那些与当前 目标有关的本质特征中找出事物的共性,并将具有共同性质的 事物划分成一类,得出一个抽象的概念。例如,学生、教师、 学校等都是一些抽象的概念。类的概念使我们能对属于该类的 全部个体事物进行统一的描述,“学生具有学号、姓名、性别、 年龄,能够入学注册、选课等”,这个描述适合所有学生,而 不必对每一个具体的学生进行描述。
在一般/特殊关系中,可以将共同的属性放在上层,将特 有的属性放在下层,将共同的方法放在上层,而将特有的方法 放到下层,如图10-4所示。
第10章 面向对象软件工程 图 10-4 一般/特殊关系举例
第10章 面向对象软件工程
第10章 面向对象软件工程 2) 类 类(Class)是具有相同属性和服务的一组对象的集合,它
为属于该类的全部对象提供了统一的抽象描述,其内部包括属 性和服务两个主要部分。类好比是一个对象模板,用它可以产 生多个对象。类所代表的是一个抽象的概念或事物,在客观世 界中实际存在的是类的实例,即对象。例如,在学校教学管理 系统中,“学生”是一个类,其属性具有学号、姓名、 性别 等,可以完成的操作有“入学注册”、“ 选课”等。学生 “王平”是一个具体的对象, 也是“学生”类的一个实例。
程序设计基础教材(PPT 51页)
![程序设计基础教材(PPT 51页)](https://img.taocdn.com/s3/m/b8ead6f902d276a201292e54.png)
21
网页设计语言:
通过网络浏览器浏览的网页可分为 动态网页、 静态 网页两种。
1. 标记语言主要用于设计静态网页,利用标记标注信 息的类型和位置。
问题的具体过程。
13
20世纪50年代后期,出现了许多脱离具体计算机硬件 结构的程序设计语言,人们称之为高级程序设计语 言。例如Basic、FORTRAN、Pascal等 。
例如,计算A=8+7并输出结果的BASIC语言程序段如 下: A=8+7 Print A
14
结构化程序设计语言将注意力从机器转移到问题本身, 它致力于用计算机能理解的逻辑来描述解决问题的 具体方法和步骤。
8
RISC,Reduced Instruction Set Computer,指令系统 具有指令少、功能简单、指令执行时间短等特点, RISC成为计算机设计的主流 。
9
10.1.2 汇编语言
汇编语言:指令由英文单词或缩写构成,用符号和十 进制数代替机器语言中的二进制编码,便于人们记 忆和书写。
10
软件工程学出现的目的是为缓解软件危机。
32
软件工程的诞生背景
程序设计时代:程序设计语言是机器语言 和汇编语言,这个阶段被称为程序设计时代。 软件开发主要是个体手工劳动,完全依赖程序 设计者的个人技能,不重视程序设计方法。
程序系统时代:高级程序设计语言出现后, 提出了结构化程序设计的方法,并成为软件 开发的主要工具,称此阶段为程序系统时代。
最早的面向对象软件是1966年开发的SimulaⅠ它首 次提出模拟人类思维方式,将数据和相关操作集成 在一起。使得数据和处理数据的方法融为一体,更 方便处理现实世界中复杂的事物。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第10章 面向对象设计
3
教学重点
⒈架构设计的概念和原则; ⒉常用的架构摸式; ⒊详细设计原则和设计内容; ⒋设计模式。
教学难点
⒈架构设计的概念; ⒉常用的架构摸式; 3.详细设计原则和设计内容。
目录 首页 上页 下页 末页
第10章 面向对象设计
4
10.1 架构设计
一、软件架构与框架
(1)什么是软件架构 软件架构是一种思想,一个系统蓝图,对软件结构组
目录 首页 上页 下页 末页
第10章 面向对象设计
15
10.1 架构设计
四、常用的架构模式
2.黑板模式
黑板模式的思想是,有一系列独立的模块,或者说是 方案,这些方案能解决部分问题的一部分,这些方案进行 协作,使得问题问题能够最终解决。这就像一群人在一 块 黑板前,共同解决一个问题,根据当前问题解决的程度 和状态,不同的人上前到黑板上解决他所能解决的部分, 这样经过多人的协作,最终能够将问题解决。这就是 黑板 模式这个名字的来历。黑板模式的实现分为三个主要的组 件:黑板(Blackboard),知识源(Knowledge Source)和控制 (Control)。。如图下所示。
目录 首页 上页 下页 末页
第10章 面向对象设计
19
• 这种构架具有以下优点:
• 可以创建具有良好隐蔽性和高内聚、低耦合的构件。
• 设计者可以将整个系统的输入/输出行为看成是多个过 滤器行为的简单合成。
第10章 面向对象设计
1
第10章 面向对象设计
10.1 架构设计 10.2 详细设计 10.3 设计模式
目录 首页 上页 下页 末页
第10章 面向对象设计
2
教学目的与要求
⒈掌握架构设计的概念和原则; ⒉掌握常用的架构摸式; ⒊掌握详细设计原则和设计内容; 4.了解各种设计模式;
目录 首页 上页 下页 末页
目录 首页 上页 下页 末页
第10章 面向对象设计
5
10.1 架构设计
软件框架是软件架构的一种实现,是一个半成品。它通 常针对一个软件架构当中某一个特定的问题提供解决方案 和辅助工具。因此,如果说架构是一个逻辑的构成,而框 架则是一个可用的半成品,是可执行的。
二、软件架构的基本组成
一个软件架构应当包括软件层次、每一层次的职责、 层次之间的接口、传输协议和标准以及每一层次上所采用 的软件框架
1. 自顶向下原则 2. 职能集中原则 3. 互不交叉原则
目录 首页 上页 下页 末页
第10章 面向对象设计
9
自顶向下分包原则
目录 首页 上页 下页 末页
第10章 面向对象设计
10
职能集中原则
目录 首页 上页 下页 末页
第10章 面向对象设计
11
交叉依赖的类单独分包
增加新类并单独分包
目录 首页 上页 下页 末页
成的规划和职责设定。一个软件里有处理计算的、处理界 面的、处理数据的、处理业务规则的、处理安全的等许多 可逻辑划分出来的部分。软件架构的意义就是要将这些可 逻辑划分的部分独立出来,用约定的接口和协议将他们有 机的结合在一起,形成职责清晰、结构清楚的软件结构。
软件架构是一个逻辑性的框架描述,它可能并无真正 的可执行部分。大部分的软件架构都是由一个设计思想, 加上若干设计模式,在规定一系列的接口规范、传输协议、 实现标准等文档构成的。
第10章 面向对象设计
12
10.1 架构设计
四、常用的架构模式
1. 分层架构模式
分层(Layer)模式是最常见的一种架构模式。甚至 说分层模式是很多架构模式的基础。分层描述的是这样一 种架构设计过程:从最低级别的抽象开始,称为第1层。 这是系统的基础。通过将第J层放置在第J-1层的上面逐步 向上完成抽象阶梯,直到到达功能的最高级别,称为第N 层。如图下所示。
目录 首页 上页 下页 末页
第10章 面向对象设计
16
黑板模式
目录 首页 上页 下页 末页
第10章 面向对象设计
17
10.1 架构设计
四/过滤器模式构架中的每个构件都有一组输入和输 出,构件读入数据流,经过处理产生输出数据。这个过程 通过对输入流的变换及增量计算来完成,因此在输入流被 完全使用掉之前,变产生了输出,这样的构件就是过滤器, 而构件间的连接件就像是数据流传输的管道,它将数据从 一个过滤器传到另一个过滤器。其中,过滤器必须是独立 的实体,它不能与其他的过滤器共享数据。多个过滤器相 连,可以形成过滤器链。而每个过滤器功能单一,可以单 独修改,链中过滤器的排列顺序可以根据需求进行配置。
目录 首页 上页 下页 末页
第10章 面向对象设计
18
特征: 每个过滤器构件是一个独立的部件,除了输入流和输 出流外,过滤器之间互不影响,因此,过滤器之间不共 享任何状态信息。 每个过滤器对其上游或下游连接的过滤器是透明的, 它的实现和使用不对链中的任何过滤器加以限制。如下 图所示。
管道/过滤器模式
目录 首页 上页 下页 末页
第10章 面向对象设计
6
软件架构的内容
目录 首页 上页 下页 末页
第10章 面向对象设计
7
在Rose中,我们可以用包图来描述软件架构。如下图所示,描述了一个由五个层次构成的 软件架构。
目录 首页 上页 下页 末页
第10章 面向对象设计
8
10.1 架构设计
三、架构设计原则
改变最多影响相邻的两层。 • 可替换性。独立的层次设计容易被功能相似的模块替换。 • 分层构架也有一些缺点,主要表现在: • 效率低。分层结构通常要比单层结构效率低,原因是有时高层过分依赖
底层的服务,必须经过许多中间层进行数据传递。 • 增加了一些不必要的工作。 • 改变行为的连锁反应。 • 设计者要建立不同合适粒度的抽象层次有一定困难。 • 常见的分层架构模式有: • 客户端-服务器模型(Client-Server,C/S)。 • 三层模型:用户表示层、业务逻辑层、数据层。
目录 首页 上页 下页 末页
第10章 面向对象设计
13
分层架构模式
目录 首页 上页 下页 末页
第10章 面向对象设计
14
分层构架具有以下优点: • 层次的复用性。为每个层次建立好抽象接口,可以使其在其他环境复用。 • 支持基于抽象程度递增的系统设计,使设计者可以对复杂系统进行分解,
从而使系统更容易模块化。 • 支持功能增强。因为每一层至多和相邻的上下层进行交互,因此功能的