北邮面向对象课程7第七章细化迭代1:分析

合集下载

北邮网院面向对象系统分析与设计 阶段作业

北邮网院面向对象系统分析与设计 阶段作业

一、单项选择题(共10道小题,共100.0分)
1. “一个研究生在软件学院做助教(teaching assistant),同时还在校园餐厅打工做收银员(cashier)。

也就是说,这个研究生有3种角色:学生、助教、收银员,但在同一时刻只能有一种角色。

”根据上面的陈述,下面哪个设计是最合理的?
A.
B.
C.
D.
知识点: 阶段作业一
学生答案: [B;]
标准答
案:
B
得分: [10] 试题分
值:
10.0
2. 关于用例与类的对比中()是错误的。

A. 都属于模型结构元素
B. 都存在继承关系
C. 类描述系统的部分静态视图,用例描述系统动态的行为视图
D. 类描述的是系统的内部构成,用例也可以描述系统的内部构成
知识点: 阶段作业一
学生答[C;] 标准答 C。

北邮软件工程课件第7章面向对象分析

北邮软件工程课件第7章面向对象分析

一般说来,确定属性的过程包括分析和选择两个步骤。
7.3.4确定属性
属性的确定既与问题域有关,也和目标系统的任务有关。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。在分析过程中应该首先找出最重要的属性,以后再逐渐把其余属性增添进去。在分析阶段不要考虑那些纯粹用于实现的属性。
通常,在需求陈述中不会一个不漏地写出问题域中所有有关的类—&—对象,因此,分析员应该根据领域知识或常识进一步把隐含的类—&—对象提取出来。例如,在ATM系统的需求陈述中虽然没写“通信链路”和“事务日志”,但是,根据领域知识和常识可以知道,在ATM系统中应该包含这两个实体。
筛选出正确的类—&—对象
显然,仅通过一个简单、机械的过程不可能正确地完成分析工作。非正式分析仅仅帮助我们找到一些候选的类—&—对象,接下来应该严格考察每个候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。
1.分析
2.选择
认真考察经初步分析而确定下来的那些属性,从中删掉不正确的或不必要的属性。通常有以下几种常见情况。 误把对象当作属性 把链属性误作为属性 把限定误当成属性 误把内部状态当成了属性 过于细化 存在不一致的属性
图7.5 ATM对象模型中的属性
7.3.5识别继承关系
01
确定了类中应该定义的属性之后,就可以利用继承机制共享公共性质,并对系统中众多的类加以组织。
ATM打印账单,退出现金兑换卡,请储户拿走它们;储户取走账单和卡
ATM确认取款额在预先规定的限额内,然后要求总行处理这个事务;总行把请求转给分行,该分行成功地处理完这项事务并返回该账户的新余额[ZK)]
ATM问储户是否继续这项事务;储户回答“不”

面向对象分析第六章第七章PPT课件

面向对象分析第六章第七章PPT课件
本章要解决的问题:
▪ 面向对象方法学概述 ▪ 传统方法和面向对象方法有何不同? ▪ 面向对象方法学的主要优点 ▪ 面向对象的概念 ▪ 面向对象建模
2020/8/1
共27页 第3页
面向对象方法概述
什么是开发模式? 什么是面向对象开发模式? 为什么要用面向对象方法?
2020/8/1
共27页 第4页
一、软件开发模式(Paradigm)
共27页 第8页
பைடு நூலகம்
4、混合开发模式
在大型系统的开发中,只用一种开发模 式很难说哪种开发模式对整个问题的解 决最好。
系统开发时,通常把大型问题分解成一 组子问题。对于每个子问题可以采用适 当的软件开发模式。
这种设计需要有某种实现语言或一组协 同语言的支持。许多流行的功能不断增 强的语言可支持不只一种设计开发模式。
2020/8/1
共27页 第17页
对象模型化技术(三视点技术)
(Object Model Tech. OMT)
对象模型化技术用于把分析时收集的 信息构造在三类模型中,即对象模型、 功能模型和动态模型。
这个模型化的过程是一个迭代过程。
2020/8/1
共27页 第18页
分析模型
•对象模型: 描述静态结构, 定义做
1、什么是开发模式 开发模式又称为范型、范例、风范或模式 (Pattern)。开发模式定义了:
– 特定问题和应用的开发过程中将遵循的步骤; – 确定将用于表示问题和解的那些成分的类型; – 利用这些成分表示与问题解决有关的抽象; – 直接得到问题的结构。
2020/8/1
共27页 第5页
2、开发模式的影响
2020/8/1
共27页 第10页
几个常用的术语

北京邮电大学高等数学教学课件-7二阶常系非齐

北京邮电大学高等数学教学课件-7二阶常系非齐
Q(x) (2 p )Q (x )(2pq)Q (x)Pm(x)
(1) 若 不是特征方程的根, 即 2pq0,则取
Q (xe)为x[mQ次(x待) 定(系2 数 多p 项)式Q (Qxm) (x(),2 从而p得到q 特)解Q(x)]
形式e为xPy m*( x)exQ m(x).
Q(x) (2 p )Q (x )(2pq)Q (x)Pm(x)
例. 求y 方 y x 程 c2 o x的s 一个特解 .
解: 0,2, Pl(x)x, P ~n(x)0,
特征方程
r210
i 2i不是特征方程的根, 故设特解为
y * ( a x b ) c 2 x o ( c x s d ) s2 x in
代入方程得
( 3 a x 3 b 4 c ) c 2 x ( 3 o c x 3 d s 4 a ) s 2 x i x c 2 n x
比较系数, 得
2b 30 b03b 311
b0 1,
b1
1 3
于是所求特解为 y*x1. 3
例1 求方 y 3 y程 2 yx2x e 的.通解
解 特征方程 r23r20,
特征根 r11, r22,
对应齐次方程通解 Yc1exc2e2x,
2是单根设 ,y x (A B x ) e 2 x ,
1 a b 0
比较系数得 2ac 1 a b 0
a0 b1 c2
故原方程为 yy2ex
yexxex
对应齐次方程通解: YC1exC2ex
原方程通解为 yC1exC2ex x e x
三、小结
(待定系数法)
(1)f(x)exPm(x),(可以是复数)
yxkexQ m (x);

面向对象的分析与设讲义计课件-基础篇

面向对象的分析与设讲义计课件-基础篇
1111
北京大学信息学院研究生课程 面向对象的分析与设计
封装:把对象的属性和操作结合成一个独立
的系统单位,并尽可能隐蔽对象的内部细节。
由封装机
售报亭
报刊A
属 报刊B
性…
钱箱顾Βιβλιοθήκη 客操 报刊零售 作 款货清点
制保证
封装带来的问题:
封装的重要意义: 使对象能够集中而完整地描述并对应一个 具体的事物。 体现了事物的相对独立性,使对象外部不 能随意存取对象的内部数据,避免了外部 错误对它的“交叉感染”。 对象的内部的修改对外部的影响很小,减
自然语言
面向对象语言 高级语言 汇编语言 机器语言
07.02.2021
客观世界 (问题域)
语言的鸿沟
计算机
北京大学信息学院研究生课程 面向对象的分析与设计
能比较直接地反 映隐客蔽观了世机界器的细本节, 来使面用目有,形并象使意软义的 件命开名发和人表员达能式够,可 运以用以联人易系类理到认解程识的序事符所号描 物述所表的采示具用指体的令事一、物般数。据特 思别维以是方及程结法寄序构来存的化进器指编行、令程地、语数 软言件址更开等据便发物、于。理地体概址现念,客。都观是
面向对象方法是一种运用对象、类、继承、封装 、聚合、关联、消息、多态性等概念来构造系统 的07.02软.202件1 开发方法。
33
面向对象方法的基本思想
北京大学信息学院研究生课程 面向对象的分析与设计
一、从现实世界中客观存在的事物出发来构造系统
强调直接以问题域(现实世界)中的事物为中心 来思考问题、认识问题,并根据这些事物的本质 特征,把它们抽象为系统中的对象,作为系统的 基本构成单位。这可以使系统直接映射问题域, 保持问题域中事物及其相互关系的本来面貌。

面向对象程序设计的分析基本步骤

面向对象程序设计的分析基本步骤

⾯向对象程序设计的分析基本步骤(1)分析项⽬中有哪些类(或对象)参与程序。

分析结果:
*对象选择的标准:
第⼀,这个对象的确能参与程序的运⾏。

第⼆,这个对象有对象的基本特征。

第三,对象必须是项⽬强相关的对象。

初步找到的:试卷、试题、计算机、考⽣、答案、题⼲、选项.…
筛选后:
试卷类:本项⽬中只有⼀张试卷(后续扩展可以做成多套试卷)
试题类:包括题⼲、选项、答案。

(经过分析答案还应该有⼀个独⽴的对象)
答案类:包括正确答案、答案分析、所选答案。

(答案和试题是关联的)
边界类:项⽬主界⾯(负责和⽤户交互,完成对象关联)
(2)分析项⽬中类或对象之间的关系。

分析结果:
试卷->试题:⼀张试卷包含若⼲试题。

⼀对多。

试题在试卷中应该以集合对象形式存在。

试题->答案:⼀道试题有⼀个答案,⼀对⼀。

答案对象应该在试题中以对象属性形式存在。

边界类->试卷:⼀个窗体中有⼀个试卷对象。

⼆、设计类
1.设计答案类。

属性:正确答案、所选答案、答案分析。

2.设计试题类。

属性:试题编号、题⼲、选择A、B、C、D、答案对象(类似数据库外键)
3.设计试卷类。

属性:试题集合List<T>⽅法:(1)抽取试题(2)题⽬选择(3)提交试卷。

4.设计边界类。

属性;试卷对象,试题字号。

事件:(1)抽取试题(2)题⽬选择(3)提交试卷。

北邮面向对象课程0课程介绍ppt课件

北邮面向对象课程0课程介绍ppt课件
灵活性:旧需求的修改
修改数据结构,不改变功能; 修改功能,不改变数据结构; 修改功能,修改数据结构。
结构化方法对扩展性和灵活性的满足能力不足:
功能与数据的分离,使得维护任务分散在不同的模块和数据 结构中,维护管理困难。
维护后的测试工作量加大。
需要将功能和数据结构封装在一起。
6.面向对象技术的主要思想
么结构化方法仍然应是首选的方法学。如果数据结 构复杂且变换并不多,那么以面向对象方法为首选。
7.本课程内容的组织
§1.面向对象的基本概念 §2.系统分析与设计基础 §3.统一建模语言UML介绍 §4.统一过程模型UP介绍 §5.设计模式简介 §6.初始阶段 §7.细化迭代1:分析 §8.细化迭代1:设计 §9.细化迭代2 §10.细化迭代3
个分类演绎过程。与结构化方法相比,面向对象更接 近人们的认识事物和解决问题的过程和思维方法。
6.面向对象技术的主要思想
与面向对象方法与结构化方法的比较:
功能抽象的模块~数据抽象的对象 操作抽象的类型~操作与数据封装的类 过程调用~消息传递 静态绑定~动态绑定
关系:
结构化是基础,面向对象是在其基础上发展起来的。 如果问题世界的功能比数据更复杂或者更重要,那
传递、变换的关系,自顶向下逐层分解,直到找到满足功能 要求的所有可实现的软件为止。 结构化分析方法使用了以下几个工具:
数据流图(Data Flow Diagram) 数据词典(Data Dictionary) 结构化英语 判定表和判定树。
4.结构化分析与设计方法(数据流图)
4.结构化分析与设计方法(数据需求分析)
4.结构化分析与设计方法
Structured Analysis (SA): 面向数据流进行需求分析。

北京邮电大学python选修课第七次课

北京邮电大学python选修课第七次课
08_functionReturnMulValues.py
2.3、列表解析 当我们想要对列表中的每个元素执行一个函数时,常 见的方式是通过循环控制结构,但是,更简单的方法 是列表解析。 语法: list2 = [f(x) for x in list1]
例如:list1 = [“1”,”2”,”3”],实现字符串转换为整数 1ist2 = [int(x) for x in list1]
每一项任务都可以细化为更加具体的子任务。
3.2、结构化编程 如果一个程序满足程序设计的现代标准,则它被称为是结构化 的。
结构化满足:
1、自顶向下设计 2、使用逻辑控制结构实现算法逻辑。 (1)顺序 (2)判断 (3)循环、迭代 结构化编程优势:
(1)易于编写:先注重大结构、然后侧重于细节。并且多个 程序员可以一起在单独的大系统上工作,并且程序可重用。
提示:一个名为getInput的函数应该用于获得h和v的值,然后这个 函数调用名为isValid的函数用于保证输入为正数,每项任务a和b都 需要通过函数完成。
Enter the initial height of the ball:5 Enter the initial velocity of the ball:34 The maximum height is:23.06 feet The ball will hit the ground after approximately 2.27 seconds.
12_lambda.py
2.8、sorted函数 前面提到的sort函数直接实现列表中的元素排序, sorted函数会返回一个新的已排序的列表。 例如: list2 = sorted(list1)
sorted()方法同样可以使用key和reverse参量。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

22
领域模型: §7.4 领域模型:添加属性 –在领域模型中不要使用属性来联系概念类
–为数量建模(纯粹的数字没有意义)
23
领域模型: §7.4 领域模型:添加属性
24
用例模型: §7.5 用例模型:用操作契约增加细节
用例模型包含:用例,系统顺序图和操作 契约. 操作契约:
–是为系统操作而定义的; –系统操作是作为黑箱的系统在其公共接口中 提供的,用于处理系统事件. –系统操作可以通过系统事件来识别. –系统的公共接口:贯穿所有用例的全体系统 操作. –定义操作执行的结果(对象状态的改变), 而非过程.
Drawer — Register Wing — Airplane SalesLineItem — Sale FlightLeg—FlightRoute Register — Store, Item — Shelf Passenger — Airplane ItemDescription — Catalog Flight— FlightSchedule ItemDescription — Item FlightDescription — Flight SalesLineItem — Sale Maintenance Job — Maintenance Log Sale — Register Reservation — FlightManifest Cashier — Store Pilot — Airline
27
用例模型: §7.5 用例模型:用操作契约增加细节 后置条件
–描述领域模型中对象状态的变化,包括:
实例的创建和删除; 属性的修改; 关联的形成和断开.
– –后置条件是声明性的,而且是面向状态变化而不是面 向行为的.正是基于此,后置条件能够在不描述系统 操作如何实现的前提下描述系统操作引起系统状态的 变化,给出了分析的细节.因此,分析阶段可以集中 精力于系统发生了什么而非是如何发生的. –在需求工作时,要为系统操作产生一个完整,详细的 后置条件集是不可能甚至是不需要的.(初始契约不 完整).
–2.在领域模型中描述这些概念类.
用问题域中的词汇对概念类进行命名; 将与当前需求无关的概念类排除在外; 不用描述非问题域中的概念.
14
领域模型: §7.2 领域模型:可视化概念
1.如何为非现实世界建模? 非现实世界没有明显的概念类,这个时候必须用抽象概念.如:电信交换机相 关的概念类如下:消息,连接,端口,对话,路由,协议等. 2.概念类的规格说明或者描述的识别 很多情况下,概念类的规格说明或者描述不在用例的详述中,很容易忽视.
分类
A是B的一个组织子 单元 A使用或管理B A与B通信 A与一个交易B有关 A是一个与另一个交 易B有关的事务 A与B相邻 A为B所拥有 A是一个与B有关的 事件
示例
Department — Store Maintenance — Airline Cashier — Register Pilot — Airplane Customer — Cashier Reservation Agent — Passenger Customer — Payment Passenger — Ticket Payment — Sale Reservation — Cancellation SalesLineItem — SalesLineItem City— City Register — Store Plane — Airline Sale — Customer, Sale — Store Departure — Flight
21
领域模型: §7.4 领域模型:添加属性
–属性应该是数据类型,因此,用来标识属性唯一性身 份的值是没有意义的属性. –如果属性的数据类型是有结构的,应该采用非原始数 据类型类.
由可以分开的段组成的数据:电话号码 经常对该数据进行分析和验证:身份证 包含其他属性的数据:促销价格有有效期 带有单位的数量值:money/单位 对带有上述性质的一个或多个类型的抽象:商品条形码.
–概念模型中的属性应当被优先定义为简单属 性或数据类型.
如:boolean,date,number,string,text, time,其他常见的简单数据类型如:address, color,zip等.
–用关联而不是用属性来联系概念类.避免用 属性表达一个复杂的领域概念,用关联.
20
领域模型: §7.4 领域模型:添加属性
12
事物的设计,描 述和规范 位置 交易 交易项目 人的角色 其他事物的容器
容器包含的元素
财务设施及服务 手册,文档,引 用论文,书籍
在该系统之外的 系统领Fra bibliotek模型: §7.2 领域模型:可视化概念
根据名词短语识别找出概念类
– 用例是通过名词短语识别领域概念的丰富源泉,因此, 应该详述用例. – 名词可以是概念类,也可能是概念类的属性.
领域对象或者概念类 概念类之间的关联 概念类的属性
8
领域模型: §7.2 领域模型:可视化概念
9
领域模型: §7.2 领域模型:可视化概念
领域模型不是软件组件模型
10
领域模型: §7.2 领域模型:可视化概念
识别概念类
–指导原则:
只针对当前迭代的用例场景识别概念类,不要牵 涉更多的情况. 部分领域模型 用大量细粒度的概念类充分描述领域模型比粗略 描述要好. 无属性的概念类,或者在问题域中仅担当行为的 角色而非信息的角色的概念类,都可以是有效的 概念类.(比如:销售,支付)
25
用例模型: §7.5 用例模型:用操作契约增加细节
通过系统事件识别系统操作
26
用例模型: §7.5 用例模型:用操作契约增加细节
契约条目的描述
操作: 操作以及参数的名称 交叉引用: (可选择)可能发生此操作的用例 前置条件: 在操作执行前,领域模型中系统或对象状态的值得注意的假设, 他们在次操作的逻辑内不会得到测试,而被假设为真,同时, 他们并非无关紧要而应让读者了解此假设的存在. 后置条件: 操作完成后领域模型中对象的状态. 操作: 交叉引用: 前置条件: 后置条件: enterItem(itemID:ItemID,quantity:integer 用例:Process Sale 有一个Sale正在进行 1.创建一个SalesLineItem实例sli(实例创建) 2.sli和当前的Sale形成关联(关联形成) 3.sli.quantity变成quantity(属性修改) 4.在itemID匹配的基础上,sli和ProductSpecification形成关 联(关联形成)
17
A是B的一个成员
领域模型: §7.3 领域模型:添加关联
关联的指导原则:
–将注意力集中在那些需要将概念之间的关系 信息保持一段时间的关联(需要知道型关 联).只需理解型关联反映了理解概念类所 需的本质信息.
根据"需要知道型"原则获取最小集合的关联, 然后利用"只需理解型"关联增强对领域中关键 概念的理解.
7
领域模型: §7.2 领域模型:可视化概念
用例模型:强调领域的过程视图 领域模型:
–是现实世界(问题域)概念类的一种可视化 表示,它不是软件组件的一种表示,不是描 述软件类的图集,也不是有着职责的软件对 象. –概念类的识别是问题域调研工作的一部分. –别名:概念模型,领域对象模型,分析对象 模型. –可以用不定义操作的一组类图来说明
属性一般是可以赋值的,比如数字或者文本,该名词可 以这样赋值吗? 如果不行的话,那么就有可能是一个概念类. √
√ 如果对一个名词是概念类还是属性举棋不定的时候,最好 将其作为概念类处理.
13
领域模型: §7.2 领域模型:可视化概念
领域模型创建步骤:
–1.用概念类分类列表和名词短语识别方法找 出当前需求中的候选概念类;
–3.在概念类之间添加必要的关联来记录那些 需要保存记忆的关系. –4.添加用来实现需求的必要属性.
15
领域模型: §7.3 领域模型:添加关联
关联通常意味着我们必须知道这个关系的 存在,并且这个关系需要保存一段时间, 时间的长短取决于关联所处的语境. 领域模型中需要考虑下面的关联:
–需要将概念之间的关系信息保持一段时间的 关联-需要知道(need-to-know)型关联
–从通用关联列表中派生出的关联.
16
领域模型: §7.3 领域模型:添加关联
通用关联列表
分类
A在物理上是B的一 部分 A在逻辑上是B的一 部分 A在物理上包含在B 中或者依赖于B A在逻辑上包含在B 中 A是对B的描述 A是交易或者报表B 中的一项
A为B所知/为B所记录/ 录入B中/为B所捕获
示例
–用例 –系统顺序图(描述系统事件) –系统契约(处理系统事件的操作执行规范)
3
用例模型: §7.1 用例模型:绘制系统顺序图
系统顺序图:
–针对特定用例的主要成功场景以及频繁或复 杂的替代场景而设计的; –描述外部角色与系统(作为一个黑箱)之间 交互的事件;
本次迭代主要考虑主要角色产生的事件; 也可以描述次要角色接收系统产生的事件.
–识别概念类比识别关联更重要,因此领域模 型创建过程中应该更加注重概念类的识别. –太多的关联不仅不能有效地表示领域模型, 反而容易使领域模型变得混乱. –避免显示冗余或导出关联.
18
领域模型: §7.3 领域模型:添加关联
√ ?
√ ? ? √ ?
19
领域模型: §7.4 领域模型:添加属性
领域模型中包含的属性:需求(用例)建 议或者暗示我们需要记忆的那些信息. 有效属性类型原则:
北京邮电大学计算机学院通信软件工程中心

第七章 细化迭代1: 细化迭代1 分析
吴建林 jlwu@
提纲
相关文档
最新文档