面向对象分析实例清华大学

合集下载

面向对象分析实例

面向对象分析实例

4
学生ID 自选习题,
5
习题解答 核对答案
练习本类的属性和方法
确定对象类
属性: 方法:
01
习题号 编写习题,
02
题目内容 编写答案,
03
答案 习题入库
04
所属课程
02
筛选对象原则:
发现对象
2
3

从需求中找名词作为侯选对象:
教师,系统,习题,答案,作业,时间,学生,试题,系统管理员,权限,学校,班,学期,课程,习题板,考试板,练习本,习题库.
共18项
具体做法:
发现对象
系统:太大的抽象,不能作为对象.
时间:只有考试板要求,可作为考试板属性处理.
作业:是习题的同义词,可舍弃.
系统需求说明按三方面描述:
01
系统问题域说明:应用系统的业务范围
02
系统边界说明:确定系统与用户之间接口
03
系统功能说明:系统需要实现的责任
04
实例描述:习题管理系统
对象
系统问题域说明:
在一个公共习题库的支持下, 负责各科习题的教师: 可用系统编写习题及答案,并存入习题库; 从习题库中选择一组习题去组成作业,并在要求时间公布习题答案; 从习题库中选择一组习题组成考试题公布; 可以批改学生的作业; 学生答题后收卷,阅卷评分.
用系统完成作业或答题并提交给系统; 可在习题库中选择习题自己练习; 可以在公布答案后核对自己的作业;
每个学生:
负责习题,编班和权限管理和维护习题库.
一名系统管理员:


系统问题域说明:
系统的用户有本校教师,学生,系统管理员.
学校以班组织学生,每班每学期有若干课程.

第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
事件包含一个参数列表(可能为空),用于从事件的产生者向其接 收者传递信息。
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
stm 订单类 Unselected
click(posX, posY) [posX==x and posY==y]
Selected
(a)
SingleSelectionMode shiftKeyUp MultiSelectionMode shiftKeyDown (c)
状态机图
状态机 状态机图
状态机图的基本概念
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的 状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的 状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可 以依附于用例、操作、协作等元素上,描述它们的执行过程。
等待支付
[立即支付] 审核完成
[及时支付]
[超出支付时限]
审核失败
状态机图

清华面向对象程序设计:第09章

清华面向对象程序设计:第09章

bel组件 . 组件 Label被称为标签组件,它是一种用来显示说明 性的静态文本的组件.用户不能直接地编辑它, 但可以在应用程序中,通过调用Label提供的成 员方法更换文本的内容. Label类提供了三种构造方法的格式: Label() Label(String text) Label(String text, int alignment) alignment可以是Label类定义的整型常量,比如: LEFT(居左),CENTER(居中)和RIGHT (居右).
java.awt是java1.1用来建立GUI的图形包, 这 里 的 " awt" 是 抽 象 窗 口 工 具 包 (Abstract Windowing Toolkit)的缩写, 其 中 的 组 件 常 被 称 为 AWT 组 件 . javax.swing是Java2提出的AWT的改进包, 它主要改善了组件的显示外观,增强了 组件的控制能力.

4.Checkbox组件 . 组件 Checkbox被称为复选组件,它是一种图形化的, 可以设置"on"和"off"两种状态的组件.用鼠 标 点 击 一 个 复 选 按 钮 , 可 以 使 其 在 " on" 和 "off"之间进行切换.不仅如此,还可以将几 个复选按钮利用CheckboxGroup组件绑定成一 组,使得每一组复选按钮在每一时刻只有一个 处于"on"状态. 在Checkbox类中,提供了四种构造方法的格式: Checkbox() Checkbox(String label) Checkbox(String label, boolean state) Checkbox(String label, boolean state, CheckboxGroup group)

第十二章 组件图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第十二章 组件图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

Account Account Details
12.2 组件图的组成元素
组件 接口 组件图中的关系
组件的内部结构
组件
组件,是系统设计的一个模块化部分, 它隐藏了内部的实现,对外提供了一组 接口。
组件是一个封装完好的物理实现单元, 它具有自己的身份标示和定义明确的接 口。并且由于它对接口的实现过程与外 部元素独立,所以组件具有可替换性。
组件图在面向对象设计过程中起着非常重要的作用:它明确了系统 设计,降低了沟通成本,而且按照面向对象方法进行设计的系统和子 系统通常保证了低耦合度,提高了可重用性。
组件图的基本概念
cmp 组件图
Item Code
ProductLeabharlann Order Payment
Customer Details
Customer
组件B的支持
实现关系
组件与提供接口之间建立实现关系
组件图的建模技术
对源代码结构建模
识别出感兴趣的源代码文件集合,并建模为组件。 如果系统规模较大,使用包对组件进行分组。 可以使用约束或注解来表示源代码的作者、版本号等信息。 使用接口和依赖关系来表示这些源代码文件之间的关系。 检查组件图的合理性,并识别源代码文件的优先级以便进行开发工作。
接口
对于一个组件而言,它有两类接口,提供接口与需求接口。
提供接口:又被称为导出接口或供给接口,是组件为其他组件提供服务 的操作的集合。
需求接口:又被称为引入接口,是组件向其他组件请求相应服务时要遵
循的接口。
cmp 组件图
cmp 组件图
Drawing
供给接口
需求接口
Shape
Drawing
IShape

第四章 用例图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第四章 用例图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
定是否要中断基用例的执行从而执行扩展用例中的片段。
依赖关系
特性 作用 执行过程 对基用例的要求
include
extend
增强基用例的行为
增强基用例的行为
包含用例一定会执行
扩展用例可能被执行
在没有包含用例的情况下,在没有扩展用例的情况下, 基用例可以是也可以不是 基用例一定是良构的 良构的
表示法
箭头指向包含用例
是用例的重要服务对象,而次参与者处于一
种协作地位。
系统管理员
用例与参与者
在确定用例时可以通过参与者入手来寻找用例:
参与者的主要任务是什么? 参与者需要系统的什么信息? 参与者可以为系统提供什么信息? 系统需要通知参与者发生的变化和事件吗? 参与者需要通知系统发生的变化和事件吗?
用例的特征
用例的特征保证用例能够正确地捕捉功能性需求,同时也是判断用 例是否准确的依据。
不改变基用例的同时,根据需要自由地向用
例中添加行为。
检查实名信息
依赖关系——扩展
扩展用例的使用包括四个部分:
基用例:需要被扩展的用例,如图5-10中的“注册”用例。 扩展用例:提供所添加的行为序列的用例,如图5-10中的“检查实名信
息”用例。 扩展关系:使用虚线箭头表示,箭头指向基用例。 扩展点:基用例中的一个或多个位置,表示在该位置会根据某条件来决
一个父参与者的直接实例,这就要求属于抽象父
直接客户
电话客户
参与者的外部对象一定能够属于其子参与者之一。
网上客户
用例的概念 用例与参与者 用例的特征 用例的粒度
用例
用例的概念
用例是类元提供的一个内聚的的功能单元,表明系统与 一个或多个参与者之间信息交换的顺序,也表明了系统 执行的动作。

第七章 包图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第七章 包图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
包图
包图的基本概念
包图是用来描述模型中的包和所包含元素的组织方式的图,是维护 和控制系统总体结构的重要内容。包图能够组织许多UML中的元素, 不过其最常用的用途是用来组织用例图和类图。
在UML 1.X规范中,虽然没有明确规定包图属于一种图类型,却可以 使用包及包的关系来表示系统的结构,包图作为实际上存在并经常被 使用的一种图出现在UML中。最新的UML 2规范中已经明确定义了包 图。
元素的分包原则
元素不能“狡兔三窟”:树形结构的一个节点不能同时拥有两个父 节点,一个元素也不允许在两个包中重复出现。
相同包内元素不能重名:包所具有的命名空间的作用要求用一个包 中的同种类元素名称必须是唯一的。
包内元素要紧密联系:分在同一个包中的元素应该具有某些相同的 性质,即包的高内聚性。
包与包尽可能保持独立:包和包之间需要尽可能减少耦合度,要求 包内元素与外部元素有尽可能少的依赖关系。
DataType
+ Intege 元素的分包原则
包的概念
pkg Logical View
包是用于把模型本身组织成层次结构的通用机制, PackageName 它不能执行。
PackageName
+ ContentA + ContentB
包名:与类图相似,包有简单名与路径名两种命 pkg Logical View
PackageB
包的依赖关系
容易出现的问题:循环依赖
pkg Logical View PackageA
循环依赖的出现是令人困惑、也是非常容易
产生错误的。尤其是当依赖关系表示包的引 pkg Logical View PackageA
入时,循环依赖会导致将模型转化成代码后

清华面向对象程序设计第章共71页

清华面向对象程序设计第章共71页

Box类的定义
public class Box {
int long,width, height; void setLong(int longValue){long=longValue;} void setWidth(int widthValue){width=widthValue;} void setHeight (int heightValue){ height = heightValue;} void setBox(int longValue,int widthValue,int heightValue) {
year=y; month=m; day=d; } int getYear(){return year;} int getMonth(){return month;} int getDay(){return day;} }
Book类定义
class Book //书籍类 {
String name; String author; Date publishDate; float price; …… //其他一些成员变量 …… //成员方法 }
清华面向对象程序设计 第章
聪明出于勤奋,天才在于积累
第3章
抽象与封装
3.1 抽象与封装的实现技术
实现抽象和封装 ——类和对象
一个对象包含了若干个成员变量和成员方法,它是现实世 界中特定实体在程序中的具体体现。其中,成员变量反映 实体的属性状态,成员方法反映实体具有的行为能力,这 些内容的规格描述将由类承担,类是对具有类似特征的对 象的抽象说明,对象是类的实例。
Date是描述日期的类,Book是描述书籍的类。在Book 类
中,设一个表示出版日期的成员变量,它属于Date类。

面向对象的理论与C++实践清华课程设计

面向对象的理论与C++实践清华课程设计

面向对象的理论与C++实践清华课程设计一、课程介绍面向对象的理论与C++实践是清华大学计算机科学与技术系本科生专业选修课程,涵盖面向对象编程理论和C++编程实践两个方面,旨在帮助学生深入理解面向对象思想并用C++语言进行实现。

二、课程内容面向对象编程理论1.面向对象思想概述2.类与对象3.继承、多态与虚函数4.抽象类与纯虚函数5.STL库简介C++编程实践1.C++程序设计基础2.类与对象的实现3.继承、多态与虚函数的实现4.STL库的使用三、课程教材《C++ Primer》(第五版)(中文版),作者:Lippman, Lajoie, Moo,译者:侯捷。

四、课程参考资料1.《Effective C++》(中文版),作者:Scott Meyers,译者:侯杰。

2.《STL源码剖析》(中文版),作者:侯捷。

3.《深入浅出设计模式》(中文版),作者:程杰。

五、课程设计要求1.选题要求:要求选好一个项目,体现应用面向对象编程的思想。

2.设计方案包括:给出所设计类的类体及成员函数原型,试画出相应的类图,写出内部数据结构方案的描述,描述各类或各函数功能作用的注释。

3.程序要求:为了反映面向对象编程语言的特征,要使用C++语言进行编程,采用面向对象思想,必须使用类和对象来体现程序设计思想,要充分利用C++语言的特性和STL库进行程序开发。

六、课程设计流程第一阶段:选题第一次课程上老师将介绍课程设计大概内容,学生需要结合个人实际情况,选定一个初步的设计主题,初步选题可与老师讨论资讯。

相当于开题选题环节。

第二阶段:设计方案在确定题目后,需要自己独立完成课程设计方案。

设计方案要求如上述第五部分所说明。

相当于中期论文。

第三阶段:实现程序在建立好方案后,开始进行程序实现。

实现过程中出现问题,需及时向老师或助教请教解决,最终提交实现代码。

相当于结题报告。

七、课程评分标准1.选题:选题是否合理,是否具有一定难度性;2.设计方案:方案是否完善,方案中的类设计是否具有标准性;3.程序代码:代码是否规范,是否达到良好的代码质量,代码是否具有可扩充性、可移植性等软件工程方面的优良特征;4.报告:书面报告是否符合规范,语言表达、图表使用是否得当;5.程序演示:演示时是否条理清晰,是否表现出更高的带了解问题以及解决问题的能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用Rose创建用例模型
1. 在Rose中创建参与者(actors)
使用Rose创建用例模型
2. 给参与者添加文档 • 在Rose中我们对模型元素都可以(在多数情况下
是必须的)添加文档以描述更多的信息。 • 应该给模型中的每个actor添加摘要描述,摘要描
述表示actor和系统交互的规则。 • 课程注册系统中actor的摘要描述如下:
• 当系统比较庞大和复杂时,要搞清楚系统的需求 往往比较困难,通过明确参与者,可以针对参与 者确定系统需求,有助于保证系统需求的完整性。
1. 确定业务参与者
• 可通过以下资料来确定系统的参与者:
➢ 标识系统范围和边界的环境图; ➢ 现有系统(如果有的话)的文档和用户手册; ➢ 项目会议和研讨会的记录; ➢ 现有的需求文档、工作手册等。
• 每个系统通常都有一个总体视图(Global View of Actors and Use Cases),如果总体视图过 于复杂,则可以创建多个用例图,每个用例图关 注系统的某一方面。
• 通常是围绕参与者创建用例图。
使用Rose创建用例模型
1. 在Rose中创建参与者(actors) 创建的角色应放在Use-Case Model包中的Actors 包中比较好,如果模型结构中没有这样的包,可以 先创建Actors包,之后按下面的步骤创建角色: (1) 在浏览器窗口中的Actors包上单击鼠标右键, 显示弹出菜单; (2) 选择New:Actor菜单选项,系统创建名为New Class的参与者; (3) 选中新创建的参与者,更名为设计的名字。
(2) 确定业务需求用例──参与者需要系统提供的完 整功能。
(3) 创建用例图──标识参与者与用例之间、用例与 用例之间的关系。
例:选课系统。给教师分配课程和学生注册课程。
在每个学期选课开始之前,系统管理员需要对系统中的教 师信息、课程信息和学生信息进行维护。学期结束后,将本 学期成绩归档到学籍档案系统。 学生登录系统后会得到一份本学期将要开设的课程目录。 每门课程包含的信息有开课系别、教师、上课时间、教室、 容纳的学生数量和学生选择课程的先决条件。 当学生选择了一门课程后,系统需访问学籍档案系统,查询 是否符合选课的先决条件 。如果不符合,系统给出提示信息。 每个学期有一段时间让学生可以改变计划,学生可以在这段 时间内访问联机系统以增选课程或退选课程。
•ቤተ መጻሕፍቲ ባይዱ主事件流表示正常情况下执行者与系统之间的信 息交互及动作序列,备选事件流则表示特殊情况 或异常情况下的信息交互及动作序列。
• 应给出每个用例的规格说明。
用例“选择课程”的规格说明
• 用例“选择课程”的规格说明
3. 创建用例图
• 用例图是若干个参与者和用例,以及它们间的关 系构成的图形表示。
• 对象模型的5个层次
➢ Coad & Yourdon提出,复杂问题(大型系统)的对象模型 应该由下述5个层次组成:主题层(也称为范畴层)、类-对 象层、结构层、属性层和服务层,如图所示。
8.2 建立用例模型
• 建立用例模型的过程
(1) 确定业务参与者──标识目标系统将支持的不同 类型的用户,可以是人、事件或其他系统。
Student——在学校注册上课的人; Teacher——学校授权上课的人; Administrator——系统认同的维护人员; Archive System——管理学生学籍档案的外部系统。
使用Rose创建用例模型
3. 在Rose中创建用例(Use Case) • 应该将用例放在Use cases包中,如果您的模型
例:选课系统。给教师分配课程和学生注册课程。
教师可以访问在线系统,查看将要教授哪些课程和每门课程 有哪些学生报名,课程考试结束后可以提交成绩,系统可以 生成带有成绩分布统计结果的成绩单。
1. 确定业务参与者
• 通过关注系统的业务参与者,我们可以将重点放 在如何使用系统,而不是如何构造系统上,并且 有助于进一步明确系统的范围和边界。
• 环境图是分析参与者和发现潜在用例的极好来源, 它不仅可以用在结构化分析方法中,也可以用于 面向对象的分析方法中。
• 通过环境图,可以确定系统的主要输入输出,通 过提交和接收输入输出的各方确定潜在的用例。
• 选课系统的环境图
• 选课系统的业务列表
• 用例的规格说明
• 对用例的完整描述包括用例名称、执行者、前置 条件、后置条件、一个主事件流、零到多个备选 事件流。
第8章 面向对象分析
• 面向对象分析概述 • 建立用例模型 • 建立对象模型 • 建立动态模型 • 建立数据模型
8.1 面向对象分析概述
• 面向对象分析的3个模型
➢ 用例模型:用例和场景表示的功能模型; ➢ 对象模型:用类和对象表示的静态模型; ➢ 交互模型:由状态图和顺序图表示的动态模型。
8.1 面向对象分析概述
2. 确定业务需求用例
• 以下问题可以帮助我们更好地标识系统的 用例:
➢ 每个参与者的特定任务是什么? ➢ 是否每个参与者都要从系统中创建、存储、改变、
移动或读取信息? ➢ 是否任何参与者需要通知系统有关突发性的、外
部的改变? ➢ 哪些用例支持或维护系统? ➢ 目前的用例是否覆盖了所有功能需求?
2. 确定业务需求用例
1. 确定业务参与者
• 还可以通过提出以下问题,明确系统的参 与者:
➢ 谁或者什么为系统提供输入? ➢ 谁或者什么接收系统的输出? ➢ 需要与其他系统连接的接口吗? ➢ 是否存在在预定的时间自动触发的事件? ➢ 谁将维护系统中的信息?
1. 确定业务参与者
• 从选课系统的需求描述中,可以确定4类参与者: ➢ 学生(Student) ➢ 教师(Teacher) ➢ 系统管理员(Administrator) ➢ 学籍档案系统(Archive System)
结构中没有这样的包,则应该先创建包。 • 也可以将每个用例放在单独的包中,因此可以先
创建相应的包,再创建用例。 • 另外,在多个用例中使用的公共用例,如验证用
户(Validate User),可以放在一个单独的包 中,如可以在Use cases包中创建Included Use Cases包来存放公共用例。
相关文档
最新文档