UML系统建模与分析ppt
合集下载
课件—UML系统建模与分析设计(8)(1)
2014-12-25
UML系统建模与分析设计
4
8.2.2 结构型设计模式 结构型模式描述类和对象之间通过组织形成新 的结构,以实现新的功能。 结构型的类模式采用继承机制来组合类,如适 配器(Adapter)类模式; 结构型的对象模式则描述了对象的组装方式, 如适配器(Adapter)对象模式、桥接(Bridge) 模式、组合(Composite)模式、装饰(Decorator) 模式、外观(Facade)模式、享元(Flyweight) 模式、代理(Proxy)模式等。
2014-12-25 UML系统建模与分析设计 7
简单工厂模式的优缺点: (1)简单。 (2)增加新的产品时,要修改工厂类,违反了面 向对象设计的基本原则。 (3)工厂类一旦不能正常工作,整个程序都会受 到影响。 (4)静态结构无法形成基于继承的层次结构。
2014-12-25 UML系统建模与分析设计 8
2.工厂方法(Factory Method)模式 又称为多态性工厂模式。
参与的角色有: (1)抽象工厂接口(Creator):创建对象的工 2014-12-25 厂类必须实施这个接口的实现。 9 UML系统建模与分析设计
(2)具体工厂类(Concrete Creator):用于 创建产品实例的那样一些类。 (3)产品(Product):是工厂方法模式所创 建的对象的父类,或它们共同拥有的接口。 (4)具体产品(Concrete Product):是工厂 方法模式所创建的任何对象所属的类。
第八章
本章目的:
设计模式及其应用
了解设计模式的概念 掌握设计模式的三大分类 掌握常用的11种常的设计模式(其中简单
工厂是工厂方法的最初表现形式) 了解各设计模式的优点、不足 掌握设计模式的使用原则及策略
课件—UML系统建模与分析设计(5)
第五章
系统设计与对象动态交互模型
动态模型主要描述系统的动态行为和控制结构。动态行 为包括系统中对象生存期内可能的状态以及事件发生时状态 的转移,对象之间动态合作关系,显示对象之间的交互过程 以及交互顺序,同时描述了为满足用例要求所进行的活动以 及活动间的约束关系。 在动态模型中,对象间的交互是通过对象间消息的传递来 完成的。对象通过相互间的通信(消息传递)进行合作,并在其 生命周期中根据通信的结果不断改变自身的状态。
16
5.2.1 一个简单的顺序图例子
17
顺序图有两个坐标: 垂直坐标--时间(从上到下),水平坐标—对象。
对象
生存线
时间
18
激活期
消息
顺序图和用例图、类图的关系
19
5.2.2顺序图的主要元素:
(1)对象:顺序图中所包含的每个对象用一个 对象框(短式)表示,对象名需带下划线。
对象图
(2)生存线:对象框下画的一条垂直虚线,称 为该对象的生存线,表示对象的生存时间。 (3)激活期:对象生存线上的一个细长方形框, 表示该对象的激活时间段,即活动期间。一 个激活的对象要么正在执行自己的代码,要 么等待另一个对象的返回。 (4)消息:对象之间消息的发送和接收用两个 对象生存线(激活期)之间的消息箭头线。
28
5.3
对象之间的同步与异步操作
1.对象之间的同步操作
同步消息的发送者把进程控制传递给消息 的接收者,然后暂停活动,等待消息的接收者 放弃或返回控制; 同步消息的接收者执行所请求的操作,如 果需要的话,可以把控制传递给另一个对象角 色,请求做某个操作,并且当该操作完成后把 控制返回给原来的同步消息的发送者; 同步消息的接收者也可以直接返回或发送 信息给原来的消息发送者。
系统设计与对象动态交互模型
动态模型主要描述系统的动态行为和控制结构。动态行 为包括系统中对象生存期内可能的状态以及事件发生时状态 的转移,对象之间动态合作关系,显示对象之间的交互过程 以及交互顺序,同时描述了为满足用例要求所进行的活动以 及活动间的约束关系。 在动态模型中,对象间的交互是通过对象间消息的传递来 完成的。对象通过相互间的通信(消息传递)进行合作,并在其 生命周期中根据通信的结果不断改变自身的状态。
16
5.2.1 一个简单的顺序图例子
17
顺序图有两个坐标: 垂直坐标--时间(从上到下),水平坐标—对象。
对象
生存线
时间
18
激活期
消息
顺序图和用例图、类图的关系
19
5.2.2顺序图的主要元素:
(1)对象:顺序图中所包含的每个对象用一个 对象框(短式)表示,对象名需带下划线。
对象图
(2)生存线:对象框下画的一条垂直虚线,称 为该对象的生存线,表示对象的生存时间。 (3)激活期:对象生存线上的一个细长方形框, 表示该对象的激活时间段,即活动期间。一 个激活的对象要么正在执行自己的代码,要 么等待另一个对象的返回。 (4)消息:对象之间消息的发送和接收用两个 对象生存线(激活期)之间的消息箭头线。
28
5.3
对象之间的同步与异步操作
1.对象之间的同步操作
同步消息的发送者把进程控制传递给消息 的接收者,然后暂停活动,等待消息的接收者 放弃或返回控制; 同步消息的接收者执行所请求的操作,如 果需要的话,可以把控制传递给另一个对象角 色,请求做某个操作,并且当该操作完成后把 控制返回给原来的同步消息的发送者; 同步消息的接收者也可以直接返回或发送 信息给原来的消息发送者。
《系统分析及建模》PPT课件
精选课件ppt
13
难题之二
❖ 开发人员与用户之间存在着专业知识的鸿沟。俗话讲,隔行如隔山, 专业知识的壁垒构成了开发人员与用户间的沟通障碍。然而,开发活 动恰恰要求必须由用户来确认系统分析说明的准确性和完整性,必须 确保开发人员完整、准确地理解了用户心目中对新系统的真实要求。 开发人员也必须努力准确理解和表述用户的需求,因此,这个阶段的 活动难度非常大。
与计划
划的制订
含计划) (或签协议、订合同)
精选课件ppt
7
4.2 系统分析的内容与主要活动
活动名称
目标
关键问题
主要成果 (产品)
管理决策
3
现行系统调查
详细调查现行系统 的工作过程,建立 现行系统的逻辑模 型,发现现行系统 存在的主要问题。
现行系统的结构业 务流程和数据的详 细分析,确认存在 的问题(结构化遍 历3W+1H)
精选课件ppt
5
4.2 系统分析的内容与主要活动
系统分析的基本内容: 系统分析阶段需要对管理信息系统的下列问题进行调研和分析:
(1)确定新系统的目标。 (2)系统的总体结构描述。 (3)子系统功能描述: (4)子系统数据分析: (5)数据输入输出描述: (6)确定技术性能指标,包括可靠性、安全保密性、适用性、可维护性和可移
2
本章内容
❖ 4.1系统分析的目标 ❖ 4.2系统分析内容和主要活动 ❖ 4.3需求分析的重要性 ❖ 4.4系统分析面临的主要问题 ❖ 4.5系统分析相关概念 ❖ 4.6建模 ❖ 4.7 需求分析说明书的编写
精选课件ppt
3
4.1 系统分析的目标
❖ 系统分析、系统设计和系统实施构成系统开发周期的三个主要阶段。 系统分析是开发人员和用户共同参与的一项活动。这一阶段的主要任 务是充分挖掘和理解用户对新系统的要求,并将其明确表述成一份书 面资料。这份资料的主要内容就是新系统的逻辑模型,这就是系统分 析说明书,又称用户需求说明书。
uml课件(完整版)
• 依赖
包图
系统的顶层包结构
包图
老师在线答疑系统包结构图
包图
练习 1、C/S架构的应用程序由客户端和商业逻辑端组成, 使用包图画出他们之间的关系 2、B/S架构的应用程序由浏览器和WEB应用服务端 组成,使用包图画出他们之间的关系 3、在一个多层架构的系统中包含了客户端,商业逻 辑端,数据库端, WEB应用服务端以及浏览器组 成,请整理他们之间的关系,并用UML的包图表 达出来
类图
练习
1、使用类图的短式表达方式画出中国公民、身份证、 银行卡的UML图 2、现在有一组几何图形、线、圆、方、椭圆、多边 形。请仔细分析他们之间的关系,并用短式方式 表达出来 3、第2题中的几何图形具有以下方法:画图,移动, 旋转。请标识出多态方法,并说明理由。
包图
包图能将复杂系统拆分成多个简单的系统。 • 包
学生登陆协作图
协作图
练习
1、画出老师登陆系统的协作图
组件图
组件图显示软件组件之间的依赖关系。一般来说, 软件组件就是一个实际文件,可以是源代码文件、 二进制代码文件和可执行文件等。可以用来显示 编译、链接或执行时构件之间的依赖关系 • 组件 • 依赖
组件图
老师在线答疑系统组件图
部署图
配置图显示系统运行时刻的结构,显示系 统不同的组件在何处物理地运行,以及它 们将如何彼此通信
状态图
状态图表示某个类所具有的不同状态和状态 转移时的触发条件。 • 状态 • 转移
状态图
• 老师在线状态图
状态图
练习
1、汽车有向前行驶,向后行驶和停止3种状
态,请使用UML图将3种状态之间的转移关
系表达出来
活动图
活动图用来描述工作的流程,对并行的工 作流程能很好的支持。 • 活动 • 转移 • 同步
第3章 uml系统建模与分析设计-需求分析与用例建模01课件
2019/1/31
软件工程方法
42
目标和步骤的误区
2019/1/31
软件工程方法
43
用例的粒度
ATM取钱的场景中,取钱,读卡,验证账号,打 印回执单等都是可能的用例? 用例粒度的划分最标准的方法应该是:以该用例 是否完成了参与者的某个完整目的为依据的。 同一个需求阶段,用例的粒度应该时同一级别的。 粒度选取的问题本质上还是因为边界认定不同而 产生的。
•给出清晰、一致的关于系统做什么的描述,确定系统的功能要求;
•提供从功能需求到系统分析、设计、实现各阶段的度量标准; •为最终系统测试提供基准,据此验证系统是否达到功能要求; •为项目目标进度管理和风险管理提供依据。
2019/1/31
软件工程方法
7
用例建模的步骤
确定系统的范围和边界; 确定系统的执行者和用例; 对用例进行描述; 定义用例之间的关系; 审核用例模型。
3.2.5.3.描述用例
用例名: 简单名: 路径名:
2019/1/31
软件工程方法
48
用例的文字描述应包括以下内容:
用例的目的(功能); 该用例在什么情况下被哪个执行者启动执行; 用例与执行者之间交互哪些消息来通知对方作
•反映系统动态特性: •综合系统的全部因素: •突出系统的重要因素: •结构简单:
3.1.3 法律可行性分析 3.1.4 开发方案可行性分析研究
1. 提出待选方案 2. 评价待选方案 3. 确定开发方案
2019/1/31 软件工程方法 4
3.1.5
可行性分析报告文档格式
2019/1/31
软件工程方法
错,这是一个过程步骤,不是完整目标 错,这是一个过程步骤,不是完整目标 错,这是一个过程步骤,不是完整目标
课件—UML系统建模与分析设计(2)
分析、抽取
领域问题
提取
概念模型
系统需求
分析、设计
软件建模:modeling 用于表达现实的简化视图,以便于面 向对象软件系统的设计与实现。 出发点: (1)整个系统太复杂,难以一下子抓住,通过模型简洁 的描述系统 (2)交流(项目组成员之间,与客户) (3)系统体系结构归档。
统一建模语言UML 本章目的:
草图与蓝图 蓝图一般是指采用CASE工具绘制的、正式的、规范 的UML模型。草图则通常是指手工绘制的、规范度较低 的在纸张的UML模型。 大胆地绘制草图,尽可能基于草图进行讨论。对于局 部的、重要性不高的、共享范围较小的UML模型,直接 将草图扫描到电脑存档即可; 对于全局的、重要性高的、高度共享的,在草图的基 础上用CASE工具绘制成为正式的蓝图,并将其纳入统一 的模型管理中.
2015/9/12
UML系统建模与分析设计
40
5.配置视图 作用:描述系统的物理设备配臵,如计 算机、硬件设备以及它们相互间的连接 ; 适用对象:开发者、系统集成者和测试 者; 描述使用的图:配臵图 ; 重要性:描述硬件设备的连接和哪个程 序或对象驻留在哪台计算机上执行 。
2015/9/12
独立于过程
可视化
UML通过它的元模型和表示法,把那些通过文字或其 他表达方法很难表达清楚的、隐晦的潜台词用简单直 观的图形表达和暴露出来,准确而直观地描述其复杂 的含义。 例如:造一辆车身是红色金属漆的小轿车,装备四个 普利司通牌子的轮胎,它是一辆四门车,车门是加厚 的,并且前后门玻璃上贴黑色的膜。前后挡风玻璃里 都装有电热丝,后视镜是电动可调的。
对象图
描述一组对象之间的关系,是具有具体属性值和行为的一 个具体事物,其是类图中所建事物实例的静态快照,其与 类图的主要区别是一个是抽象的,而对象图是具体的。
领域问题
提取
概念模型
系统需求
分析、设计
软件建模:modeling 用于表达现实的简化视图,以便于面 向对象软件系统的设计与实现。 出发点: (1)整个系统太复杂,难以一下子抓住,通过模型简洁 的描述系统 (2)交流(项目组成员之间,与客户) (3)系统体系结构归档。
统一建模语言UML 本章目的:
草图与蓝图 蓝图一般是指采用CASE工具绘制的、正式的、规范 的UML模型。草图则通常是指手工绘制的、规范度较低 的在纸张的UML模型。 大胆地绘制草图,尽可能基于草图进行讨论。对于局 部的、重要性不高的、共享范围较小的UML模型,直接 将草图扫描到电脑存档即可; 对于全局的、重要性高的、高度共享的,在草图的基 础上用CASE工具绘制成为正式的蓝图,并将其纳入统一 的模型管理中.
2015/9/12
UML系统建模与分析设计
40
5.配置视图 作用:描述系统的物理设备配臵,如计 算机、硬件设备以及它们相互间的连接 ; 适用对象:开发者、系统集成者和测试 者; 描述使用的图:配臵图 ; 重要性:描述硬件设备的连接和哪个程 序或对象驻留在哪台计算机上执行 。
2015/9/12
独立于过程
可视化
UML通过它的元模型和表示法,把那些通过文字或其 他表达方法很难表达清楚的、隐晦的潜台词用简单直 观的图形表达和暴露出来,准确而直观地描述其复杂 的含义。 例如:造一辆车身是红色金属漆的小轿车,装备四个 普利司通牌子的轮胎,它是一辆四门车,车门是加厚 的,并且前后门玻璃上贴黑色的膜。前后挡风玻璃里 都装有电热丝,后视镜是电动可调的。
对象图
描述一组对象之间的关系,是具有具体属性值和行为的一 个具体事物,其是类图中所建事物实例的静态快照,其与 类图的主要区别是一个是抽象的,而对象图是具体的。
课件—UML系统建模与分析设计(9)汇编
2018/10/29 UML系统建模与设计 9
(3)已有软件系统体系结构复用 特点:支持高、低层次层次复用、体系结构和设 计有简洁、通过接口进行集成。 优点:可以复用规模较大的软件制品、只需要进 行局部修改。 缺点:抽象出简明的描述困难、存放体系结构的 数据库难以管理。 (4)应用程序自动生成器 特点:自动生成可执行系统、可以填充原先没有 的细节、适用成熟的领域。 优点:自动化程度高、可以获得某些特定领域的 标准、用黑盒形式生成程序。 缺点:设计和构造通用的应用程序生成器非常困 2018/10/29 难。 10 UML系统建模与设计
进行复用; 需求模型:需求分析中的对象类模型及规约等分析模 型; 设计模型:系统设计、对象设计及体系结构、数据、接 口等设计;
2018/10/29 UML系统建模与设计 3
设计模式:各种经过验证、已经在使用的设计
模式。 程序代码:经过实际运行检验过的程序代码; 文档资料:用户文档资料和技术文档资料; 用户界面:图形用户界面复用率达60%; 数据构成:数据存储结构、文件、完整的数据 库及内部表等; 测试案例:与被复用的设计和代码相应的测试 案例。
2018/10/29 UML系统建模与设计 13
2018/10/29
UML系统建模与设计
14
2018/10/29
UML系统建模与设计
15
2018/10/29
UML系统建模与设计
16
9.2.5
Hale Waihona Puke 可复用软件的系统化生产与复用
(1)创建过程:标识和提供可复用资产。 (2)支持过程:对可复用资产的获取、管理和维护提供 全面支持。 (3)复用过程:利用可复用资产生产应用软件产品。 (4)管理过程:对系统地软件复用全过程进行统筹、计 划和协调。
(3)已有软件系统体系结构复用 特点:支持高、低层次层次复用、体系结构和设 计有简洁、通过接口进行集成。 优点:可以复用规模较大的软件制品、只需要进 行局部修改。 缺点:抽象出简明的描述困难、存放体系结构的 数据库难以管理。 (4)应用程序自动生成器 特点:自动生成可执行系统、可以填充原先没有 的细节、适用成熟的领域。 优点:自动化程度高、可以获得某些特定领域的 标准、用黑盒形式生成程序。 缺点:设计和构造通用的应用程序生成器非常困 2018/10/29 难。 10 UML系统建模与设计
进行复用; 需求模型:需求分析中的对象类模型及规约等分析模 型; 设计模型:系统设计、对象设计及体系结构、数据、接 口等设计;
2018/10/29 UML系统建模与设计 3
设计模式:各种经过验证、已经在使用的设计
模式。 程序代码:经过实际运行检验过的程序代码; 文档资料:用户文档资料和技术文档资料; 用户界面:图形用户界面复用率达60%; 数据构成:数据存储结构、文件、完整的数据 库及内部表等; 测试案例:与被复用的设计和代码相应的测试 案例。
2018/10/29 UML系统建模与设计 13
2018/10/29
UML系统建模与设计
14
2018/10/29
UML系统建模与设计
15
2018/10/29
UML系统建模与设计
16
9.2.5
Hale Waihona Puke 可复用软件的系统化生产与复用
(1)创建过程:标识和提供可复用资产。 (2)支持过程:对可复用资产的获取、管理和维护提供 全面支持。 (3)复用过程:利用可复用资产生产应用软件产品。 (4)管理过程:对系统地软件复用全过程进行统筹、计 划和协调。
第3章 系统模型与系统分析.ppt
6)关联——表述系统不同变量之间的数量关系。
2020/1/15
6
3.1系统模型概述
(2)特征
系统模型反映着实际系统的主要特征,但它又区别于 实际系统而具有同类问题的共性。一个通用的系统模型应 具有如下的三个特征:
1)是实际系统的合理抽象和有效的模仿; 2)由反映系统本质或特征的主要因素构成; 3)表明了有关因素之间的逻辑关系或定量关系。
同一个系统根据不同的研究目的,可以建立不同的系 统模型。
同一种模型也可以代表多个系统。
2020/1/15
5
3.1系统模型概述
系统模型由以下几部分组成:
1)系统——即模型描述的对象; 2)目标——即系统所要达到的目标; 3)组分——构成系统的各组成部分; 4)约束条件——是指系统所处的客观环境及限制条件; 5)变量——表述系统组分的变量,包括内部变量和外部变量、 状态变量(空间、时间)等
2020/1/15
15
3.1系统模型概述
模型
实物模型
抽象模型
原样模型
相似模型
模拟模型
图式模型
数学模型
实体模拟模型
计算机模拟模型
图 3.1 模型的分类
2020/1/15
16
3.2系统建模方法
3.2.1对系统模型的要求和建模的原则
(1) 对系统模型的要求:现实性、简明性、标准化
1)现实性 —— 即在一定程度上能够较好地反映系统的客观实际,
模型法既避免了实验法的局限性,又避免了抽象法 的过于概念化,所以成为现代工程中一种最常用的研究 方法。
2020/1/15
10
3.1系统模型概述
在系统工程中广泛地使用系统模型还出自于下面的 考虑:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
扬弃,不是否定
订单 PK 订单ID 下单日期 税金 运费 总价 PK 订单项 订单项ID
购买数量 价格 FK1 订单ID
顾客
提款机
顾客
帐号、数额
取款功能
1: 请办理提款(帐号,金额)
-21-
Copyright © thbin@
College of Software, BUAA
面向对象 VS 结构化-2
(程序)实现角度
数据结构+算法=程序设计 以对象为中心组织数据与操作
数据 操作 类型与变量 函数(过程)调用 类型与子类型 构造类型 指针
对象属性 对象的行为 类与对象实例 消息传递 一般类与特殊类,继承 整体-部分结构,聚合 关联
-22-
Copyright © thbin@
正在筛选的数据
-12-
Copyright © thbin@
College of Software, BUAA
这才是对象思维!
抽象基类,为程 序提供多态
-13-
Copyright © thbin@
College of Software, BUAA
面向对象的编程—C++语法
-8-
Copyright © thbin@
College of Software, BUAA
结构化设计
开始 初始化数据,将2-n放 入筛中 将初始过滤器设为第 一个素数2 筛完了吗? 没有 将数组中当前过滤器 的倍数位置设为0 取下一个非零的数作 为下一个过滤器 筛完了 输出所有剩余的非0数 (即素数)
作 对象思维中,数据是活的,“她”知道自 己的信息(属性),并能完成自己的工作 (操作) 结构化思维更像是一个人在解决所有问题 对象思维更像是一个团队的分工协作
-20-
Copyright © thbin@
College of Software, BUAA
面向对象 VS 结构化-1
College of Software, BUAA
Copyright © thbin@
用对象思维解决问题?
筛选法:生成 2< i <n 的整数序列,设n=50
筛掉2的倍数:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
筛掉3的倍数:2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 …
-3-
Copyright © thbin@
College of Software, BUAA
内容安排
第一个案例 课程介绍
对象技术
对象和类
对象技术相关原则
上升到面向对象
-4-
Copyright © thbin@
College of Software, BUAA
-17-
Copyright © thbin@
College of Software, BUAA
对象方法小结
通过UML类图(面向对象建模)可
以更清楚表达设计思想,并为代码实 现提供框架 针对数据的抽象:类
类拥有自己的数据和行为,能够完成自
身的工作职责 过程是类的组成部分,为类提供行为 通过类的对象之间的协作完成系统功能
-10-
Copyright © thbin@
College of Software, BUAA
Java实现-是对象思维吗?
import ng.Math; public class PrimerNumber{ public static void main(String args[]) { int n=50; int sieve[]=new int[n-1]; int iCounter=2, iMax, i; for(i=0;i<n-1;i++) {sieve[i]=i+2;} iMax=(int)Math.sqrt(n); while(iCounter<=iMax){ for (i=2*iCounter-2; i<n-1; i+=iCounter) sieve[i]=0; iCounter++; } for(i=0; i<n-1; i++) if (sieve[i]!=0) System.out.println(sieve[i]); } -11}
筛掉5的倍数:2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 … 筛掉7的倍数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 49
留下素数序列:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
-6-
-15-
Copyright © thbin@
College of Software, BUAA
面向对象的编程-筛子
class Sieve: public Item{ public: int out(){ int n=source->out(); source= new Filter(source, n); return n; } Sieve(Item *src):Item(src){} };
UML2面向对象分析与设计
Object-Oriented Analysis & Design with UML2
洪
蕾
第01章 上升到面向对象
An Approach to the Object Orientation
内容安排
第一个案例 课程介绍
对象技术
对象和类
对象技术相关原则
上升到面向对象
象的设计原则和模式 图形化工具(UML)有助于表达和交流设计 思想,并简化实现的过程
-19-
Copyright © thbin@
College of Software, BUAA
总结:结构化VS面向对象
结构化思维用过程刻画数据间关系 对象思维直接用类表达数据间关系 结构化中,数据是死的,全部依赖算法操
-14-
Copyright © thbin@
College of Software, BUAA
面向对象的编程-过滤器
class Filter:public Item{ int factor; public: int out(){ while(1){ int n=source->out(); if (n%factor) return n; } } Filter(Item *src, int f):Item(src) {factor=f;} };
功能模块(SC图),模块之间的 类和对象实现, 类/对象的关联、聚集、继 连接/调用是模块的附属形式 承等连接、连接规范和约束作为显式定义 构件图,部署图 单元测试采用类图,集成测试用实现图和 交互图,确认测试采用用例图
筛掉5的倍数:2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 …
筛子:存储源数据
筛掉7的倍数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 49
过滤器:表明当前 留下素数序列:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 过滤因子 计数器:记录当前 什么是对象?对象在哪?
-7-
Copyright © thbin@
College of Software, BUAA
结构化实现
//PrimerNumber.c main(){ int *sieve,n; int iCounter=2, iMax, i; printf("Please input max number:"); scanf(“%d", &n); sieve=malloc((n-1)*sizeof(int)); for(i=0;i<n-1;i++) { sieve[i]=i+2; } iMax = sqrt(n); while (iCounter<=iMax) { for (i=2*iCounter-2; i<n-1; i+=iCounter) sieve[i] = 0; iCounter++; } for(i=0; i<n-1; i++) if (sieve[i]!=0) printf("%d ",sieve[i]); }
-5-
Copyright © thbin@bห้องสมุดไป่ตู้
College of Software, BUAA
筛选法求素数序列
筛选法:生成 2< i <n 的素数序列,设n=50
筛掉2的倍数:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
筛掉3的倍数:2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 …
Copyright © thbin@
College of Software, BUAA
思考?
用结构化思维解决上述问题 用对象思维解决上述问题
将解决思路用合适的方式记录下来
思考:
结构化思维与对象化思维有什么本质的不同?
体现了怎样的思维差异?对象思想有何优势? 如何表达设计思想:代码?图形?
素数问题
素数的定义: 除了1与本身之外,不能被其他正整 数整除的数,叫作素数,也叫质数
按照习惯规定,1 不算素数,最小的素数是 2, 其余的是 3、5、7、11、13、17、19……等等 由定义判断素数 对于数 n ,从i=2,3,4,5…到 n-1 判断 n 能否 被 i 整除,如果全部不能整除,则 n 是素数,只要 有一个能除尽,则 n 不是素数,为了压缩循环次数, 可将判断范围从 2 ~ n-1 改为 2 ~ sqrt(n)
订单 PK 订单ID 下单日期 税金 运费 总价 PK 订单项 订单项ID
购买数量 价格 FK1 订单ID
顾客
提款机
顾客
帐号、数额
取款功能
1: 请办理提款(帐号,金额)
-21-
Copyright © thbin@
College of Software, BUAA
面向对象 VS 结构化-2
(程序)实现角度
数据结构+算法=程序设计 以对象为中心组织数据与操作
数据 操作 类型与变量 函数(过程)调用 类型与子类型 构造类型 指针
对象属性 对象的行为 类与对象实例 消息传递 一般类与特殊类,继承 整体-部分结构,聚合 关联
-22-
Copyright © thbin@
正在筛选的数据
-12-
Copyright © thbin@
College of Software, BUAA
这才是对象思维!
抽象基类,为程 序提供多态
-13-
Copyright © thbin@
College of Software, BUAA
面向对象的编程—C++语法
-8-
Copyright © thbin@
College of Software, BUAA
结构化设计
开始 初始化数据,将2-n放 入筛中 将初始过滤器设为第 一个素数2 筛完了吗? 没有 将数组中当前过滤器 的倍数位置设为0 取下一个非零的数作 为下一个过滤器 筛完了 输出所有剩余的非0数 (即素数)
作 对象思维中,数据是活的,“她”知道自 己的信息(属性),并能完成自己的工作 (操作) 结构化思维更像是一个人在解决所有问题 对象思维更像是一个团队的分工协作
-20-
Copyright © thbin@
College of Software, BUAA
面向对象 VS 结构化-1
College of Software, BUAA
Copyright © thbin@
用对象思维解决问题?
筛选法:生成 2< i <n 的整数序列,设n=50
筛掉2的倍数:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
筛掉3的倍数:2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 …
-3-
Copyright © thbin@
College of Software, BUAA
内容安排
第一个案例 课程介绍
对象技术
对象和类
对象技术相关原则
上升到面向对象
-4-
Copyright © thbin@
College of Software, BUAA
-17-
Copyright © thbin@
College of Software, BUAA
对象方法小结
通过UML类图(面向对象建模)可
以更清楚表达设计思想,并为代码实 现提供框架 针对数据的抽象:类
类拥有自己的数据和行为,能够完成自
身的工作职责 过程是类的组成部分,为类提供行为 通过类的对象之间的协作完成系统功能
-10-
Copyright © thbin@
College of Software, BUAA
Java实现-是对象思维吗?
import ng.Math; public class PrimerNumber{ public static void main(String args[]) { int n=50; int sieve[]=new int[n-1]; int iCounter=2, iMax, i; for(i=0;i<n-1;i++) {sieve[i]=i+2;} iMax=(int)Math.sqrt(n); while(iCounter<=iMax){ for (i=2*iCounter-2; i<n-1; i+=iCounter) sieve[i]=0; iCounter++; } for(i=0; i<n-1; i++) if (sieve[i]!=0) System.out.println(sieve[i]); } -11}
筛掉5的倍数:2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 … 筛掉7的倍数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 49
留下素数序列:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
-6-
-15-
Copyright © thbin@
College of Software, BUAA
面向对象的编程-筛子
class Sieve: public Item{ public: int out(){ int n=source->out(); source= new Filter(source, n); return n; } Sieve(Item *src):Item(src){} };
UML2面向对象分析与设计
Object-Oriented Analysis & Design with UML2
洪
蕾
第01章 上升到面向对象
An Approach to the Object Orientation
内容安排
第一个案例 课程介绍
对象技术
对象和类
对象技术相关原则
上升到面向对象
象的设计原则和模式 图形化工具(UML)有助于表达和交流设计 思想,并简化实现的过程
-19-
Copyright © thbin@
College of Software, BUAA
总结:结构化VS面向对象
结构化思维用过程刻画数据间关系 对象思维直接用类表达数据间关系 结构化中,数据是死的,全部依赖算法操
-14-
Copyright © thbin@
College of Software, BUAA
面向对象的编程-过滤器
class Filter:public Item{ int factor; public: int out(){ while(1){ int n=source->out(); if (n%factor) return n; } } Filter(Item *src, int f):Item(src) {factor=f;} };
功能模块(SC图),模块之间的 类和对象实现, 类/对象的关联、聚集、继 连接/调用是模块的附属形式 承等连接、连接规范和约束作为显式定义 构件图,部署图 单元测试采用类图,集成测试用实现图和 交互图,确认测试采用用例图
筛掉5的倍数:2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 …
筛子:存储源数据
筛掉7的倍数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 49
过滤器:表明当前 留下素数序列:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 过滤因子 计数器:记录当前 什么是对象?对象在哪?
-7-
Copyright © thbin@
College of Software, BUAA
结构化实现
//PrimerNumber.c main(){ int *sieve,n; int iCounter=2, iMax, i; printf("Please input max number:"); scanf(“%d", &n); sieve=malloc((n-1)*sizeof(int)); for(i=0;i<n-1;i++) { sieve[i]=i+2; } iMax = sqrt(n); while (iCounter<=iMax) { for (i=2*iCounter-2; i<n-1; i+=iCounter) sieve[i] = 0; iCounter++; } for(i=0; i<n-1; i++) if (sieve[i]!=0) printf("%d ",sieve[i]); }
-5-
Copyright © thbin@bห้องสมุดไป่ตู้
College of Software, BUAA
筛选法求素数序列
筛选法:生成 2< i <n 的素数序列,设n=50
筛掉2的倍数:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
筛掉3的倍数:2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 …
Copyright © thbin@
College of Software, BUAA
思考?
用结构化思维解决上述问题 用对象思维解决上述问题
将解决思路用合适的方式记录下来
思考:
结构化思维与对象化思维有什么本质的不同?
体现了怎样的思维差异?对象思想有何优势? 如何表达设计思想:代码?图形?
素数问题
素数的定义: 除了1与本身之外,不能被其他正整 数整除的数,叫作素数,也叫质数
按照习惯规定,1 不算素数,最小的素数是 2, 其余的是 3、5、7、11、13、17、19……等等 由定义判断素数 对于数 n ,从i=2,3,4,5…到 n-1 判断 n 能否 被 i 整除,如果全部不能整除,则 n 是素数,只要 有一个能除尽,则 n 不是素数,为了压缩循环次数, 可将判断范围从 2 ~ n-1 改为 2 ~ sqrt(n)